Почему Matlab округляется до 4 знаков после запятой?

У меня есть следующий код, который печатает / выводит на график результат приближения ряда Тейлора.

close all;
clear;
clc;

fprintf('#\tf(pi/3)\t\t\t\tfn(pi/3)\t\t\tEt\n');

% actual function
syms x;
f(x)=exp(-x)*cos(x);
h = ezplot(f);
grid on;
hold on;
set(h,'Color','b', 'LineWidth', 3);

% presets for Taylor.
a=1;
maxorder=10;

% Taylor Series
y(x)=f(a);
for n=1:maxorder
    d(x) = diff(f(x),x,n);
    y(x) = y(x) + d(a)*((x-a)^n)/factorial(n);
    error=double(f(pi/3))-double(y(pi/3));
    fprintf('%.0f\t%.14f\t%.14f\t%.14f\n',n,double(f(pi/3)),double(y(pi/3)),error); 
end
h = ezplot(y);
axis([0, 4.5,-1, 1]);
set(h,'Color','r', 'LineWidth', 3);
set(gca,'FontSize', 15');
title('Taylor Series of e^{-x}cos(x)');

Однако распечатанная таблица по какой-то причине усекается на 4 знака после десятичной точки. Typing:

get(0,'format')

в терминал Matlab говорит мне, что форматирование установлено на долго. Я понятия не имею, почему это может происходить.

Вот как выглядит таблица:

#   f(pi/3)             fn(pi/3)            Et
1   0.17550000000000    0.17480000000000    0.00070000000000
2   0.17550000000000    0.17550000000000    0.00000000000000
3   0.17550000000000    0.17550000000000    0.00000000000000
4   0.17550000000000    0.17550000000000    0.00000000000000
5   0.17550000000000    0.17550000000000    0.00000000000000
6   0.17550000000000    0.17550000000000    0.00000000000000
7   0.17550000000000    0.17550000000000    0.00000000000000
8   0.17550000000000    0.17550000000000    0.00000000000000
9   0.17550000000000    0.17550000000000    0.00000000000000
10  0.17550000000000    0.17550000000000    0.00000000000000

Это округление, кажется, происходит только с символическими функциями. Это случается, когда они не используются. Есть идеи, почему и как я могу это исправить?

1 ответ

Решение

Я могу воспроизвести ваши настройки вывода digits(4), Установите его обратно на 32, и все должно быть в порядке.

digits Функция позволяет установить точность арифметики переменной точности mupad. Точность была уменьшена до 4 цифр по некоторым причинам.

Другие вопросы по тегам