По умолчанию 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
Примечание
Если требуется повысить производительность за счет уменьшения точности, см. раздел Увеличение скорости за счет уменьшения точности.