我的泰勒级数图的代码cos(2x)代替了Matlab中的cos(x)

问题描述 投票:1回答:1

我正在编写一个计算任何函数的泰勒级数的函数。

syms  x
y=cos(x);
y0=0;
a=0;
for i=0:25
      diff(y,i);                                %%Gives the derivative formula
      y0=y0+diff(y,i)*((x-a)^i)/factorial(i);   %%sums every new element of the series
end

x=0:0.1:2*pi;
res = subs(y0,x);
plot(x,res,x,cos(x))

这是Matlab代码。

[我的问题是,它绘制了cos(2x)而不是cos(x),类似地它绘制了ln(2x)而不是ln(x),依此类推。

我已经检查了阶乘,它们似乎是正确的。可能是什么问题,我弄乱了系列还是犯了Matlab错误?

matlab math numerical-methods numerical-analysis taylor-series
1个回答
2
投票

您正在以增量x围绕点x-a构造泰勒多项式,也就是说,您正在计算的近似值

f(x+(x-a))=f(2*x-a)

现在为a=0,这意味着从观察到的结果是f(2*x)

您需要评估a处的导数以获得正确的系数。

y0=y0+subs(diff(y,i),a)*((x-a)^i)/factorial(i);   %%sums every new element of the series
© www.soinside.com 2019 - 2024. All rights reserved.