Matlab在高等数学中的应用4、 编写演示任意函数展开为各阶泰勒级数的程序,并显示其误差曲线.(建议采用泰勒级数展开表达式编程计算,然后用符号函数taylor验证)
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/16 10:34:50
Matlab在高等数学中的应用4、 编写演示任意函数展开为各阶泰勒级数的程序,并显示其误差曲线.(建议采用泰勒级数展开表达式编程计算,然后用符号函数taylor验证)
Matlab在高等数学中的应用
4、 编写演示任意函数展开为各阶泰勒级数的程序,并显示其误差曲线.(建议采用泰勒级数展开表达式编程计算,然后用符号函数taylor验证)
Matlab在高等数学中的应用4、 编写演示任意函数展开为各阶泰勒级数的程序,并显示其误差曲线.(建议采用泰勒级数展开表达式编程计算,然后用符号函数taylor验证)
对于任意函数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(又变为误差曲线).读者可以改变其坐标系范围以仔细观测最关心的部分,也可输入其他函数做验算,注意输入函数应符合元素群运算规则.