【问题标题】:incorrect taylor series error graph matlab不正确的泰勒级数错误图matlab
【发布时间】:2017-01-07 08:37:02
【问题描述】:

我必须编写一个函数来获取 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

图是这个:

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

【问题讨论】:

  • 你知道sum是一个标量吗?
  • 如果我理解正确, sum 不是标量。这里我把 x=1:3。对于每个 x (1,2,3),我得到另一个总和值。我是把它写成一个 sacalar(也许那是我的错误……)?
  • 啊,我错了,我看错了你的代码。
  • 您使用的是弧度还是度数?
  • 但是假设你的代码是正确的,这个图表不是你所期望的吗?当您远离 x=0 时,泰勒近似的误差会增加。

标签: matlab


【解决方案1】:

我相信您希望看到误差随着参数 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-12-02
    • 2015-04-30
    • 2013-01-21
    • 2014-04-03
    • 2021-02-19
    • 1970-01-01
    • 2015-11-23
    • 2014-02-23
    • 1970-01-01
    相关资源
    最近更新 更多