泰勒展开"/>
MATLAB与高等数学--泰勒展开
函数的泰勒展开
基本知识
假如我们要得到sin(x)
的泰勒展开式,输入以下命令:
>> syms x;
>> s = taylor(sin(x))
结果:
s =x^5/120 - x^3/6 + x
虽然看似MATLAB
只返回了3项,但实则返回了5项,因为MATLAB
只返回非零项。
现在我们绘制图像:
展开阶数
要让我们展开多项式的图像更加接近sin(x)
,我们必须要让MATLAB
返回更多项,假设我们要得到m
项展开式,使用order
命令,后面跟上想要展开的阶数:
s = taylor(sin(x),'order',m);
我们试一下前20项:
syms x;
s = taylor(sin(x),'order',10)
s =- x^19/121645100408832000 + x^17/355687428096000 - x^15/1307674368000 + x^13/6227020800 - x^11/39916800 + x^9/362880 - x^7/5040 + x^5/120 - x^3/6 + x
图像:
这次的图像比上次光滑。
还有一个问题是我们的展开式的阶数是从高到低,这不是我们想要的,我们要让它从低到高,可以使用sympref
命令:
sympref('PolynomialDisplayStyle','ascend');
s =x - x^3/6 + x^5/120 - x^7/5040 + x^9/362880 - x^11/39916800 + x^13/6227020800 - x^15/1307674368000 + x^17/355687428096000 - x^19/121645100408832000
在何处展开
如我们所愿,阶数从低到高了。
我们知道,泰勒公式可以在任意一点展开,在零点处展开我们称为麦克劳林公式。
所以,我们还可以使用命令'ExpansionPoint'
在指定点展开
s = taylor(sin(x),'order',20,'ExpansionPoint',1)
s =
sin(1) - (sin(1)*(- 1 + x)^2)/2 + (sin(1)*(- 1 + x)^4)/24 - (sin(1)*(- 1 + x)^6)/720 + (sin(1)*(- 1 + x)^8)/40320 - (sin(1)*(- 1 + x)^10)/3628800 + (sin(1)*(- 1 + x)^12)/479001600 - (sin(1)*(- 1 + x)^14)/87178291200 + (sin(1)*(- 1 + x)^16)/20922789888000 - (sin(1)*(- 1 + x)^18)/6402373705728000 + cos(1)*(- 1 + x) - (cos(1)*(- 1 + x)^3)/6 + (cos(1)*(- 1 + x)^5)/120 - (cos(1)*(- 1 + x)^7)/5040 + (cos(1)*(- 1 + x)^9)/362880 - (cos(1)*(- 1 + x)^11)/39916800 + (cos(1)*(- 1 + x)^13)/6227020800 - (cos(1)*(- 1 + x)^15)/1307674368000 + (cos(1)*(- 1 + x)^17)/355687428096000 - (cos(1)*(- 1 + x)^19)/121645100408832000
更多推荐
MATLAB与高等数学--泰勒展开
发布评论