帕德逼近算法.docxVIP

  • 28
  • 0
  • 约4.92千字
  • 约 9页
  • 2024-01-27 发布于江苏
  • 举报

实用文档

《MATLAB程序设计实践》课程作业

一、用MATLAB编程实现“帕德逼近”的科学计算算法,及举例应用。

1)帕德逼近算法说明如下:

帕德逼近是一种有理分式逼近,逼近公式如下:

大量实验表明,当L+M为常数时,取L=M,帕德逼近精确度最好,而且速度最快。此时,分子与分母中的系数可通过以下方式求解。

首先,求解线形方程Aq=b,得到(…)的值,其中

,,

然后,通过下式求出的值。

注意,函数的帕德逼近不一定存在。

在MATLAB中编程实现的帕德逼近法函数为:Pade。

功能:用帕德形式的有理分式逼近已知函数。

调用格式:f=Pade(y,n)或f=Pade(y,n,x0)。

其中,y为已知函数;

n为帕德有理分式的分母多项式的最高次数;

x0为逼近点的x坐标;

f为求得的帕德有理分式或在x0处的逼近值。

2)程序源代码如下:

①在m文件中编写实现函数的Pade逼近的代码如下:

functionf=Pade(y,n,x0)

%用帕德形式的有理分式逼近已知函数

%已知函数:y

%帕德有理分式的分母多项式的最高次数:n

%逼近点的坐标:x0

%求得的帕德有理分式或在x0处的逼近值:f

symst;

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)算法实现流程图如下:

开始

开始

定义变量,输入:symst;

定义变量,输入:symst;

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

赋初始值,输入

yy=0;a(1:2*n)=0.0

No开始循环判断i≤2n

No

开始循环判断

i≤2n

Yes

Yes

yy=diff(sym(y),findsym(sym(y)),n);a(i)=subs(sym(yy),findsym(sym(yy)),0.0)/factorial(i);

yy=diff(sym(y),findsym(sym(y)),n);

a(i)=subs(sym(yy),findsym(sym(yy)),0.0)/factorial(i);

开始循环判断i≤n

开始循环判断

i≤n

No

No

Yes

Yes

No开始循环判断j≤n

No

开始循环判断

j≤n

q=A\b;p(1)=subs(sym(y),findsym(sym(y)),0.0);

q=A\b;

p(1)=subs(sym(y),findsym(sym(y)),0.0);

b(i,1)=-a(n+i)Yes

b(i,1)=-a(n+i)

Yes

A(i,j)=a(i+j-1)

A(i,j)=a(i+j-1)

No开始循环判断j≤n

No

开始循环判断

j≤n

Yes

Yes

p(i+1)=a(n)+q(i)*subs(sym(y),findsym(sym(y)),0.0)

p(i+1)=a(n)+q(i)*subs(sym(y),findsym(sym(y)),0.0)

f_1=0;f_2=1;

f_1=0;

f_2=1;

No开始循环判断2≤j≤i-1

No

开始循环判断

2≤j≤i-1

Yes

Yes

p(i+1)=p(i+1)+q(j

文档评论(0)

1亿VIP精品文档

相关文档