绘制正弦函数的泰勒多项式

Posted

技术标签:

【中文标题】绘制正弦函数的泰勒多项式【英文标题】:Plotting the Taylor polynomial of the sine function 【发布时间】:2014-02-17 04:44:30 【问题描述】:

我正在尝试在 Matlab 中为一个函数编写泰勒求和代码,我实际上评估了 McLaurin 制作 x=0,在此符号之后的代码中命名为 a:

这是我目前尝试过的代码:

>> a = -100;
b = 100;
n = 20;
vectorx = linspace(a,b,50);
vectory = [];
sumterms = [];
syms x y a;
y = sin(a);
for i = 1:n
t = (diff(y,i-1) / factorial(i-1)) * (x-0)^(i-1);
sumterms = [sumterms;t];
end;
sumterms
for j = 1:length(vectorx)
x_i = vectorx(j);
aux = 0;
for k = 1:length(sumterms)
sumterm = sumterms(k);
aux = aux + subs(sumterm, [a,x], [0,x_i]);
end
vectory = [vectory;aux];
end
length(vectory)
length(vectorx)
plot (vectorx, vectory)

但我没有得到正确的结果 我已经遍历了每个句子,我真的看不出它有什么问题。

这是我对 sin(x) 的绘图结果:

这是指数(x)的图

每个总和结果出现在图像捕获中,它们似乎没问题,但我认为错误是在评估中。

【问题讨论】:

你为什么一开始就尝试取 500 次泰勒多项式?尝试这样做会遇到各种精度问题。 【参考方案1】:

您的代码可以正常工作并绘制正确的泰勒多项式。您的错误是您期望 20 次泰勒多项式在区间 [-100,100] 上逼近正弦函数。这太乐观了。它在 [-5,5] 上给出了一个不错的近似值,仅此而已。这是 a=-9, b=9 的代码输出,其中问题已经出现:

确实,x^n/n!大约是 (e*x/n)^n,使用 Stirling's formula 的粗略版本。所以你需要 |x|

【讨论】:

以上是关于绘制正弦函数的泰勒多项式的主要内容,如果未能解决你的问题,请参考以下文章

浅谈泰勒展开

泰勒展开式

泰勒公式

泰勒展式的简单理解

在啥情况下需要多项式的泰勒级数?

泰勒公式中,一阶导数怎么求?