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