Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Matlab中用泰勒级数图cos(2x)代替cos(x)的代码_Matlab_Math_Numerical Methods_Numerical Analysis_Taylor Series - Fatal编程技术网

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

在Matlab中用泰勒级数图cos(2x)代替cos(x)的代码,matlab,math,numerical-methods,numerical-analysis,taylor-series,Matlab,Math,Numerical Methods,Numerical Analysis,Taylor 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; re

我在写一个函数,它可以计算任何函数的泰勒级数

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-a
围绕点
x
构建泰勒多项式,也就是说,您正在计算

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

我把代码改成这样:
y=log(x);y0=0;a=0;对于i=0:30diff(y,i)y0=y0+diff(y,i)*((x-a)^i)/阶乘(i);end'
它适用于三角函数,但其他一切都是相反的。E.x log(x)给出了一个接近负无穷大的图,当x增加时,正如我在回答中所说的,你需要在展开点计算导数。如果不这样做,则会得到错误的结果。不能使用
a=0
作为对数的展开点,因为它有一个奇点如果你增加一个多项式的自变量,它总是无穷大的。如果最高阶系数为负,则为负无穷大。