我是靠谱客的博主 勤劳大叔,最近开发中收集的这篇文章主要介绍帕德逼近matlab算法,帕德逼近算法.doc,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

《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逼近的代码如下:

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=Ab;

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

开始

开始

定义变量,输入:

定义变量,输入: 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

No开始循环判断

No

开始循环判断

i≤2n

Yes

Yes

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

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

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

开始循环判断

开始循环判断

i≤n

No

No

Yes

Yes

No开始循环判断

No

开始循环判断

j≤n

q=Ab;

q=Ab;

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开始循环判断

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_1=0;

f_2=1;

No开始循环判断

No

开始循环判断

2≤j≤i-1

Yes

Yes

p(i+1)=p(i+1)+q(j)*a(i-j)

p(i+1)=p(i+1)+q(j)*a(i-j)

开始循环判断

开始循环判断

1≤j≤n+1

No

No

Yes

Yes

f_1=f_1+p(i)*(t^(i-1))

f_1=f_1+p(i)*(t^(i-1))

开始循环判断1

开始循环判断

1≤i≤n

No

No

Ye

最后

以上就是勤劳大叔为你收集整理的帕德逼近matlab算法,帕德逼近算法.doc的全部内容,希望文章能够帮你解决帕德逼近matlab算法,帕德逼近算法.doc所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部