我的泰勒级数代码 cos(2x) 而不是 Matlab 中的 cos(x)

My code for Taylor series graphs cos(2x) instead of cos(x) in Matlab

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

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 错误?

您正在围绕点 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