矩阵理论作业6:两种算法求三次最佳平方逼近多项式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

两种算法求()f x 的三次最佳平方逼近多项式

摘 要

对于一个较复杂的函数,往往需要求一个简单多项式来逼近。本文选取两种基函数,用两种算法计算一个函数()=exp()sin()f x x x ⋅在[0,]2x π∈上的三次最佳平方逼近多项式及其逼近误差,然后应

用matlab 进行计算作图并对比两种方法的逼近结果。

关键字:三次 最佳平方 逼近 两种算法

引言

多项式的一个重要应用就是可以用来逼近一个区间上的连续函数,往往许多复杂的函数需要用各种方法来进行多项式逼近。本文参考矩阵理论讲义

[1]

对函数()=e x p

()s i n (f x x x ⋅在[0,]2

x π

∈上进行三次最佳平方逼近,求其逼近

误差,并在matlab 中编程计算和绘图以验证和比较逼近结果的准确性。

求最佳平方逼近的多项式

()=exp()sin()f x x x ⋅,[0,]2

x π

∈求三次的

最佳平方逼近多项式(内积中的权函数()=1x ρ)。

用两种算法实现,一是设{}

23

=1,,,span x x x Φ,

二是设为{}0123=(),(),(),()L x L x L x L x Φ,其中

(),0,1,2,3i L x i =是勒让德多项式。

第一种算法:

{}23=1,,,span x x x Φ,由矩阵形式

(1)

根据[,]C a b 上内积定义

((),())()()()b

a

f x

g x x f x g x dx

ρ=⎰

(2)

其中权函数

()=1x ρ,在[0,]2

x π

∈上计算得

23402345

1345624567

3 2.9052/2/8/24/6

4 3.2781/8/24/64/160 4.0294/24/64/160/384 5.2035/64/160/384/896a a a a ππππππππππππππππ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦

⎣⎦⎣⎦(3)解得待定系数00.0201a =,10.7658a =,

2 1.5765a =,20.0708a =-。即

23()0.02010.7658 1.57650.0708x x x x ϕ=++- (4)

误差2()0.0100x δ (5)

第二种算法:

{}0123=(),(),(),()L x L x L x L x Φ,其中

(),0,1,i L x i

=是勒让德多项式,其表达式为:

21()[(1)],0,1,2,,2!i

i i i i

d L x x i n i dx

=-= (6) 勒让德正交多项式有如下递推关系

0()1L x =,1()L x x =,

()

1121()()(),1,,,111

72i i i i i

L x xL x L x i n i i +-+=-=-++ 可得2231()22L x x =

-,3353

()22

L x x x =- 求得结果,误差为0.3020。

算例分析

在matlab 中编程计算(程序见附录),第一种方法的结果为 >>f=@(x)exp(x).*sin(x); >> [P,error]=polyappro(f,0,pi/2) 得到结果: P =

-0.0708 1.5765 0.7658 0.0201 error = 0.0100

可以看到 A =

[ pi^7/896, pi^6/384, pi^5/160, pi^4/64]

[ pi^6/384, pi^5/160, pi^4/64, pi^3/24] [ pi^5/160, pi^4/64, pi^3/24, pi^2/8 ] [ pi^4/64, pi^3/24, pi^2/8, pi/2 ] B'=

(exp(pi/2)*(pi^3 - 12*pi + 24))/16 (exp(pi/2)*(pi/2 - 1)*(pi/2 + 1))/2 + 1/2 (pi*exp(pi/2))/4 - 1/2

exp(pi/2)/2 + 1/2 第二种方法,勒让德多项式逼近 >> f=inline('exp(x).*sin(x)');

>> [Y,error]=LegendreApproximation(f,4) 得到结果: error = 0.3020

结论

两种方法逼近的效果比较,第一种基函数逼

近的整体效果好,误差小,但是从图上可以看出局部细节不是很准确;而第二种勒让德多项式逼近的结果在前半部分非常好,但后边误差较大,总体误差大。

参考文献

[1]矩阵理论讲义(矩阵论第二章),19-20.

附录

方法一:求内积

>> f=inline('sin(x).*exp(x)','x'); >> fy0=quad(f,0,pi/2) fy0 = 2.9052

>> f=inline('sin(x).*exp(x).*x','x'); >> fy1=quad(f,0,pi/2) fy1 =

3.2781

>> f=inline('x.^2.*sin(x).*exp(x)','x'); >> fy2=quad(f,0,pi/2) fy2 =

4.0294

>> f=inline('x.^3.*sin(x).*exp(x)','x'); >> fy3=quad(f,0,pi/2) fy3 =

5.2035 最佳平方逼近函数:

function [poly,error]=polyappro(f,a,b) syms x

P=[1,x,x.^2,x.^3];

%P=[1,x,1.5*x.^2-0.5,2.5*x.^3-1.5]; m=length(P); for i=1:m

for j=1:m

A(i,j)=int(P(m-i+1).*P(m-j+1),a,b); end

B(i)=int(f*P(m-i+1),a,b); end

poly=A\B';

poly=sym2poly(poly'); xx=a:0.01:b; yy=feval(f,xx);

ypoly=polyval(poly,xx); polysym=poly2sym(poly); delta=f-polysym;

error=sqrt(int(delta.*delta,a,b)); error=sym2poly(error); plot(xx,yy,xx,ypoly,'r-') end

方法二:勒让德多项式 Function

[Y,error]=LegendreApproximation(f,n) xx=0:0.01:0.5*pi;

fval=feval(f,xx); for i=1:n+1

w(i)=(2*(i-1)+1)/2*quad(@(x)f(x).*

mfun('p',i-1,x),-1,1);

YY(i,:)=w(i).*mfun('p',i-1,xx); Y=sum(YY);

error=norm(fval-Y,'inf'); plot(xx,fval,xx,Y,'r'); end end

相关文档
最新文档