Как превратить Rational в Real в Mathematica - PullRequest
2 голосов
/ 09 апреля 2011

У меня есть проблема, которую я не знаю, как решить ее хорошим способом. Например, я хочу использовать BaseForm[1/3, 3]. Тем не менее, это не делает то, что я хотел, если я не введу BaseForm[1/3.,3]. Учитывая данные в рациональной форме, как превратить их в реальный? Я пробовал с Apply, это не работает. (Достаточно странно, а? Для меня Apply всегда можно использовать для изменения заголовка.)

Для этой конкретной проблемы я мог бы сделать что-то вроде BaseForm[1/3*1.,3], но это действительно не очень приятно.

Спасибо за вашу помощь.

Ответы [ 2 ]

3 голосов
/ 09 апреля 2011

BaseForm переводит рациональное основание 10 в рациональное основание, которое вы когда-либо хотели ... так что оно делает то, что вы ожидаете.

In[1]:= BaseForm[1/3,3]
Out[1]//BaseForm= Subscript[1, 3]/Subscript[10, 3]

И, как вы указали, дает ему реальноечисло можно сделать так:

In[2]:= BaseForm[1/3.,3]
Out[2]//BaseForm= Subscript[0.1, 3]

Самый безопасный способ изменить вещи - это определить свой собственный baseForm, который совпадает с BaseForm, за исключением случаев, когда ему даны рациональные числа:

baseForm[r_Rational,b_]:=BaseForm[N[r],b]

Тогда

In[3]:= baseForm[1/3,3]
Out[3]//BaseForm= Subscript[0.1, 3]

Менее безопасный способ (потому что вы не знаете, что еще это может сломать) - переопределить BaseForm

Unprotect[BaseForm];
BaseForm[r_Rational, b_] := BaseForm[N[r], b]
Protect[BaseForm];

а затем использовать как обычно.

2 голосов
/ 09 апреля 2011

Возможно, мне не хватает тонкости вашего запроса, но если вы всегда хотите вывод действительного числа, почему бы просто не использовать N?

BaseForm[N[1/3], 3]
(*  Out=  0.1<sub>3</sub>  *)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...