我正在编写一个计算任何函数的泰勒级数的函数。
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