exponenta event banner

Повышение точности числовых вычислений

По умолчанию MATLAB ® использует 16 цифр точности. Для более высокой точности используйте vpa функция в символьной математической Toolbox™. vpa обеспечивает переменную точность, которая может быть увеличена без ограничений.

При выборе арифметики с переменной точностью по умолчанию vpa использует 32 значащие десятичные цифры точности. Дополнительные сведения см. в разделе Выбор числовой или символьной арифметики. Можно задать более высокую точность с помощью digits функция.

Аппроксимация суммы с точностью по умолчанию, равной 32 цифрам. Если хотя бы один вход обернут vpaвсе остальные входные данные автоматически преобразуются в переменную точность.

vpa(1/3) + 1/2
ans =
0.83333333333333333333333333333333

Необходимо обернуть все внутренние входные данные vpa, такие как exp(vpa(200)). В противном случае входы автоматически преобразуются в двойные с помощью команды MATLAB.

Увеличить точность до 50 цифры с помощью digits и сохранить старое значение digits в digitsOld. Повторите сумму.

digitsOld = digits(50);
sum50 = vpa(1/3) + 1/2
sum50 =
0.83333333333333333333333333333333333333333333333333

Восстановите старое значение цифр для дальнейших вычислений.

digits(digitsOld)

Примечание

vpa вывод символичен. Чтобы использовать символьный вывод с функцией MATLAB, которая не принимает символьные значения, преобразуйте символьные значения в двойную точность с помощью double.

Проверка текущего digits установка путем вызова digits.

digits
Digits = 32

Изменение точности для одного vpa вызов путем указания точности в качестве второго ввода в vpa. Этот вызов не влияет на digits. Например, приблизительный pi с 100 цифры.

vpa(pi,100)
ans =
3.14159265358979323846264338327950288419716939937510582097494
4592307816406286208998628034825342117068
digits	% digits remains 32
Digits = 32

Переменная точность может быть увеличена произвольно. Найти pi кому 500 цифры.

digitsOld = digits(500);
vpa(pi)
digits(digitsOld)
ans =
3.1415926535897932384626433832795028841971693993751058209749
445923078164062862089986280348253421170679821480865132823066
470938446095505822317253594081284811174502841027019385211055
596446229489549303819644288109756659334461284756482337867831
652712019091456485669234603486104543266482133936072602491412
737245870066063155881748815209209628292540917153643678925903
600113305305488204665213841469519415116094330572703657595919
530921861173819326117931051185480744623799627495673518857527
248912279381830119491

digits и vpa управляет количеством значащих десятичных цифр. Например, аппроксимация 1/111 с точностью до четырех цифр возвращает шесть цифр после десятичной запятой, поскольку первые две цифры равны нулю.

vpa(1/111,4)
ans =
0.009009

Примечание

Если требуется повысить производительность за счет уменьшения точности, см. раздел Увеличение скорости за счет уменьшения точности.