Matlab在高等数学中的应用

4、编写演示任意函数展开为各阶泰勒级数的程序,并显示其误差曲线。(建议采用泰勒级数展开表达式编程计算,然后用符号函数taylor验证)... 4、 编写演示任意函数展开为各阶泰勒级数的程序,并显示其误差曲线。(建议采用泰勒级数展开表达式编程计算,然后用符号函数taylor验证) 展开
 我来答
星夜骑士b201
2010-07-14 · TA获得超过3740个赞
知道小有建树答主
回答量:1115
采纳率:100%
帮助的人:341万
展开全部
对于任意函数y=f(x),其泰勒展开式为

其中 为余项,也就是泰勒展开式的误差.MATLAB语句为

>>fxs=input('输入y=f(x)的表达式','s'); %输入原始条件,fxs是字符串

>>K=input('输入泰勒级数展开式的阶K');

>>a=input('展开的位置a=');

>>b=input('展开的区间半宽度b=');

>>x=linspace(a-b,a+b); %构成自变量数组,确定其长度和步长

>>lx=length(x); dx=2*b/(lx-1);

>>y=eval(fxs); %求出y的准确值

>>subplot(1,2,1), plot(x,y,'.'), hold on %y的准确值用点线绘出

%求出a点的一阶导数,注意求导后数组长度减少1

>>Dy=diff(y)/dx; Dya(1)=Dy(round(lx-1)/2);

>>yt(1,:)=y(round(lx/2))+Dya(1)*(x-a); %求y的一阶泰勒展开,绘图

>>plot(x,yt(1,:))

>>for k=2:K

>>Dy=diff(y,k)/(dx^k); Dya(k)=Dy(round(lx-k)/2); %求a点k阶导数

>>yt(k,:)=yt(k-1,:)+Dya(k)/prod(1:k)*(x-a).^k; %求y的k阶导数

>>plot(x,yt(k,:)); %绘图

>>e(k,:)=y-yt(k,:); %求出yt的误差

>>end

>>title([fxs,'的各阶泰勒级数曲线']), %注意如何组成标注的字符串

>>grid, hold off, subplot(1,2,2)

>>for k=1:K plot(x,e(k,:)), hold on, end %绘制误差曲线

>>title([fxs,'的各阶泰勒级数误差曲线']),grid,hold off

执行此程序,输入fxs=cos(x),K=5,a=0.5,b=2,所得曲线见图3.2(又变为误差曲线).读者可以改变其坐标系范围以仔细观测最关心的部分,也可输入其他函数做验算,注意输入函数应符合元素群运算规则.

参考资料: http://jpkc.yrcti.edu.cn/2006/gdsx/link/jxff/sxsy7.htm

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式