В этом примере показано, как использовать арифметику переменной точности для получения высокоточных вычислений с помощью символьных математических Toolbox™.
Поиск формул, представляющих почти целые числа. Классический пример: вычислить ) до 30 цифр. Результатом является целое число, отображаемое с ошибкой округления .
digits(30); f = exp(sqrt(sym(163))*sym(pi)); vpa(f)
ans =
Вычислите одно и то же значение до 40 цифр. Оказывается, это не целое число.
digits(40); vpa(f)
ans =
Исследуйте это явление дальше. Ниже появляются числа до exp (1000), и исследование нуждается в некоторых правильных цифрах после десятичной точки. Вычислите требуемую рабочую точность:
d = log10(exp(vpa(1000)))
d =
Установите требуемую точность перед первым вызовом функции, которая от нее зависит. Среди прочего, round, vpa, и double являются такими функциями.
digits(ceil(d) + 50);
Ищите подобные примеры формы ). Конечно, можно получить больше таких чисел n умножением 163 на квадрат. Но кроме того, гораздо больше чисел этой формы близки к какому-то целому. Это можно увидеть на графике гистограммы их дробных частей:
A = exp(pi*sqrt(vpa(1:1000))); B = A-round(A); histogram(double(B), 50)

Вычислите, есть ли почти целые числа вида ).
A = exp(vpa(1:1000)); B = A-round(A); find(abs(B) < 1/1000)
ans = 1x0 empty double row vector
Оказывается, на этот раз дробные части элементов A довольно равномерно распределены.
histogram(double(B), 50)
