0

我必须编写一个获取 x(向量)和数字(N)的函数,并将绘制 cos(x) 的误差减去它的泰勒级数,直到 N(例如 N=3,所以函数是 abs(cos(x)-( 1-x^2/2+x^4/4))。代码如下:

function question2 (x,N)
sum=0;
s=1;
for i=0:2:N;
 sum=sum+((s*(x).^(i))/factorial(i));
 s=s*(-1);
end
y=abs(cos(x)-sum);
plot(x,y)
end

图是这个:不正确的图表

但这应该是相反的!它必须是单调递减的,最终几乎是线性的。谢谢

4

1 回答 1

0

我相信您希望看到误差随着参数 N 的值增加而减少。但是,正如许多人所指出的,您的代码将误差绘制为 x 的函数。随着您远离泰勒级数展开点(在本例中为 0),该误差预计会增加。

回到第一点,并显示误差如何随 N 变化,以下脚本针对不同的 N 值调用您的函数。结果如下所示,确认随着 N 的增加,近似误差会下降。

x = linspace(0, pi, 10); % x grid
% plot
figure;
question2(x, 0);  % 1 term (just the constant)
hold on;
question2(x, 2);  % 2 terms 
question2(x, 4);  % 3 terms
question2(x, 6);  % 4 terms
xlabel('x');
ylabel('Approximation error');
legend({'1 term', '2 terms', '3 terms', '4 terms'}, 'Location', 'Best');

在此处输入图像描述

于 2017-01-07T00:28:26.780 回答