Matlab_Есть ли ошибка в представлении числа e? - PullRequest
1 голос
/ 13 ноября 2010

Я думаю, что в Matlab что-то не так относительно количества десятичных знаков, используемых для отображения числа e.Если поставить

>> sprintf('%.30f',exp(1))

ans =

2.718281828459045500000000000000

enter code here

Я думаю, что это неправильно, потому что Число и содержит бесконечное количество десятичных знаков вместо только 16, которые Matlab показывают в этом примереКто-нибудь знает, как я могу получить лучшую точность, используя Matlab?Спасибо.

Ответы [ 3 ]

10 голосов
/ 13 ноября 2010

Нет, ошибки нет.

По умолчанию числа в Matlab представлены с плавающей запятой двойной точности . У них есть 52 бита мантиссы, что примерно эквивалентно 16 значащим цифрам. Просьба к Matlab распечатать больше десятичных разрядов волшебным образом не создаст большую точность.

Маловероятно, что вам понадобится больше точности, чем эта.

4 голосов
/ 13 ноября 2010

Matlab использует двойную точность IEEE, так что это так же хорошо, как вы получите за ванильный Matlab.

http://www.mathworks.com/support/solutions/en/data/1-1AGHW/?solution=1-1AGHW предлагает получить набор инструментов Symbolic Math, который поддерживает арифметику переменной точности. Или используйте другой инструмент, например Maple.

3 голосов
/ 16 ноября 2010

Некоторая дополнительная информация о двойной точности и MATLAB .

В полной системе IEEE этот интервал составляет 2- 52. MATLAB называет эту величину eps, что сокращенноЭпсилон машины.

eps = 2 ^ (- 52)

До стандарта IEEE разные машины имели разные значения eps.Приблизительное десятичное значение eps составляет 2,2204 • 10-16.Любой eps / 2 или eps можно назвать уровнем округления.Максимальная относительная ошибка, возникающая при округлении результата одной арифметической операции до ближайшего числа с плавающей запятой, равна eps / 2. Максимальный относительный интервал между числами равен eps.В любом случае вы можете сказать, что уровень округления составляет около 16 десятичных цифр.

...