MATLAB обычно ведет вычисления с числами, представленными в формате плавающей точки с двойной точностью. Это довольно высокая точность, обеспечивающая потребности практических вычислений в прикладных задачах. Однако ряд задач теории чисел, численного кодирования и некоторых других требует выполнения вычислений вообще без какой - либо погрешности или со сколь угодно малой погрешностью. Такие вычисления не очень удачно называют арифметикой произвольной точности: правильнее говорить о точной арифметике.
Для проведения вычислений в арифметике произвольной точности служит команда vpa:
R=vpa(S) – возвращает результат вычислений символьного выражения S, используя арифметику произвольной точности с текущим числом цифр D, установленным функцией digits. Результат R имеет тип sym;
R=vpa(S,D) – возвращает результат вычислений выражения S с текущим числом цифр D.
Переменная S может быть символьным массивом.
Примеры:
>>vpa(exp(1),50)
ans =
2.7182818284590455348848081484902650117874145507813
>>vpa([2*pi,exp(1),log(2)],10)
ans =
[ 6.283185308, 2.718281828, .6931471806]
Команда digits служит для установки числа цифр в числах арифметики произвольной точности. Она используется в одном из следующих вариантов:
digits – возвращает число значащих цифр в числах арифметики произвольной точности (по умолчанию 32);
digits(D) – устанавливает заданное число цифр D для арифметики произвольной точности.
Примеры вычисления числа π с 32 и 6 значащими цифрами:
>>digits
Digits = 32
>>vpa pi
ans =
3.1415926535897932384626433832795
>> digits 6
>> vpa pi
ans =
3.14159