《MATLAB程序设计实践》课程作业 一、用MATLAB编程实现“帕德逼近”的科学计算算法,及举例应用。 1) 帕 德 逼 近 算 法 说 明 如 下 : 帕德逼近是一种有理分式逼近,逼近公式如下: MkkkLkkkxqxpxf101)( 大量实验表明,当L+M为常数时,取L=M,帕德逼近精确度最好,而且速度最快。此时,分子与分母中的系数可通过以下方式求解。 首先,求解线形方程Aq=b,得到(321,,qqq…nq )的值,其中 12113221nnnnnaaaaaaaaaA,11qqqqnn ,1221nnnaaab nnndxfdnafa)0(!1),0(0 然后,通过下式求出 npppp210,,的值。 niininaqpqap0000,1, 注意,函数的帕德逼近不一定存在。 在MATLAB 中编程实现的帕德逼近法函数为: Pade。 功能:用帕德形式的有理分式逼近已知函数。 调用格式: f=Pade(y,n) 或f=Pade(y,n,x0) 。 其中,y为已知函数; n 为帕德有理分式的分母多项式的最高次数; x0为逼近点的x坐标; f为求得的帕德有理分式或在x0处的逼近值。 2) 程 序 源 代 码 如 下 : ①在m文件中编写实现函数的Pade逼近的代码如下: function f=Pade(y,n,x0) %用帕德形式的有理分式逼近已知函数 %已知函数:y %帕德有理分式的分母多项式的最高次数:n %逼近点的坐标:x0 %求得的帕德有理分式或在x0处的逼近值:f syms t; A=zeros(n,n); q=zeros(n,1); p=zeros(n+1,1); b=zeros(n,1); yy=0; a(1:2*n)=0.0; for(i=1:2*n) yy=diff(sym(y),findsym(sym(y)),n); a(i)=subs(sym(yy),findsym(sym(yy)),0.0)/factorial(i); end; for(i=1:n) for(j=1:n) A(i,j)=a(i+j-1); end; b(i,1)=-a(n+i); end; q=A\b; p(1)=subs(sym(y),findsym(sym(y)),0.0); for(i=1:n) p(i+1)=a(n)+q(i)*subs(sym(y),findsym(sym(y)),0.0); for(j=2:i-1) p(i+1)=p(i+1)+q(j)*a(i-j); end end f_1=0; f_2=1; for(i=1:n+1) f_1=f_1+p(i)*(t^(i-1)); end for(i=1:n) f_2=f_2+q(i)*(t^i); end if(nargin==3) f=f_1/f_2; f=subs(f,'t',x0); else f=f_1/f_2; f=vpa(f,6); end 3) 算 法 实 现 流 程 图 如 下 : 开始 开始循环判断 i≤2n Yes No yy=diff(sym(y),findsym(sym(y)),n); a(i)=subs(sym(yy),findsym(sym(yy)),0.0)/f...