Как сделать высокоточную арифметику с плавающей точкой в ​​математике - PullRequest
2 голосов
/ 20 января 2011

В ММА, например, я хочу вычислить

1.0492843824838929890231*0.2323432432432432^3

Но это не показывает полную точность. Я пробовал N или другие функции, но ни одна из них не работала. Как этого добиться? Большое спасибо.

Ответы [ 3 ]

3 голосов
/ 20 января 2011

Когда вы задаете числа, используя десятичную точку, они должны иметь MachinePrecision, примерно 16 цифр, следовательно, результаты обычно имеют менее 16 значащих цифр.Вы можете сделать бесконечную точность, используя рациональные / алгебраические числа.Если вы хотите, чтобы конечная точность была лучше, чем по умолчанию, укажите ваши числа следующим образом:

123.23`100

Это заставит Mathematica интерпретировать число как имеющее точность в 100 цифр.Таким образом, вы можете сделать

ans=1.0492843824838929890231`100*0.2323432432432432`100^3

Проверить точность окончательного ответа, используя Precision

Precision[ans]

Проверьте tutorial/ArbitraryPrecisionNumbers для получения более подробной информации

1 голос
/ 20 января 2011

Вы можете сделать:

r[x_]:=Rationalize[x,0];

n = r@1.0492843824838929890231 (r@0.2323432432432432)^3  

Из:

228598965838025665886943284771018147212124/17369643723462006556253010609136949809542531

А теперь, например

N[n,100]  

0.01316083216659453615093767083090600540780118249299143245357391544869\
  928014026433963352910151464006549
0 голосов
/ 19 февраля 2011

Иногда вы просто хотите увидеть больше результатов точности станка.Это несколько методов.

(1) Поместите курсор в конец строки вывода и нажмите Enter (не на цифровой клавиатуре), чтобы скопировать вывод в новую строку ввода, показывая все цифры.

(2) Используйте InputForm как в InputForm[1.0/7]

(3) Измените настройку PrintPrecision с помощью инспектора параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...