资源描述:
《matlab最佳平方逼近.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数值分析第一次试验最佳平方逼近试验任兵(5)一、问题叙述求函数f(x)=exp(x)在[-1,1]上的二、三次最佳平方逼近多项式。二、问题分析由教材定义6.5有:对于给定的函数,如果存在使得则称S*(x)是f(x)在集合中的最佳平方逼近函数。显然,求最佳平方逼近函数的问题可归结为求它的系数,使多元函数取得极小值,也即点()是I(a0,…,an)的极点。由于I(a0,a1,…,an)是关于a0,a1,…,an的二次函数,利用多元函数取得极值的必要条件,(k=0,1,2,…,n)即得方程组如采用函数内积记号那么,方程组可以简写为…
2、…………...(1)这是一个包含n+1个未知元a0,a1,…,an的n+1阶线性代数方程组,写成矩阵形式为…………(2)此方程组叫做求aj(j=0,1,2,…,n)的法方程组。显然,其系数行列式就是克莱姆行列式Gn=Gn(j0,j1,…,jn)。由于j0,j1,…,jn线性无关,故Gn¹0,于是上述方程组存在唯一解。从而肯定了函数f(x)在中如果存在最佳平方逼近函数,则必是……………………………...(3)三、实验程序1、最佳平方逼近算法(1)输入被逼近函数f(x)和对应的逼近区间[a,b]并选择逼近函数系{∮(x)}和权函数
3、;(2)解方程组(1)或(2),其中方程组的系数矩阵和右端的项由式(3)得到;(3)由式(3)得到函数的最佳平方逼近。2、将上述算法编写成MATLAB程序共需三个程序:(1)第一个程序(函数名:squar_approx.m)计算最佳逼近函数的系数,源代码如下:functionS=squar_approx(a,b,n)%定义逼近函数globali;globalj;%全局变量ifnargin<3n=1;end%判断Phi2=zeros(n+1);%生成一个n+1*n+1大小的全0矩阵数组fori=0:nforj=0:n;Phi2(
4、i+1,j+1)=quad(@rho_phi,a,b);%求rho_phi积分endendPhiF=zeros(n+1,1);%生成一个n+1*n大小的全0矩阵数组fori=0:nPhiF(i+1)=quad(@fun_phi,a,b);%求fun_phi积分ends=Phi2PhiF;(2)第二个程序(函数名:rho_phi.m)代码如下:functiony=rho_phi(x)globali;globalj;y=(rho(x).*phi_k(x,i)).*phi_k(x,j);(3)第三个程序(函数名:fun_phi.m
5、)functiony=fun_phi(x)globali;y=(rho(x).*phi-k(x,i)).*obj(x);四、试验结果f(x)=exp(x)在[-1,1]上的二、三次最佳平方逼近多项式。(1)编写下面三个函数:外部函数;多项式函数;被逼近函数;functiony=rho(x)%外部函数y=1;functiony=phi_k(x,k)%多项式函数ifk==0y=ones(size(x));elsey=x.^k;endfunctiony=obj(x)%被逼近函数y=exp(x)(2)当求的是二次逼近时得到如下结果>>
6、clear>>S=squar_approx(-1,1,2)S=0.99631.10360.5367绘制两者的图形:>>fun='exp(x)';>>fplot(fun,[-1,1])>>holdon>>xi=-1:0.1:1;>>yi=polyval(S,xi);>>plot(xi,yi,'r:')得到如下结果:(3)当求的是三次逼近时得到如下结果>>S=squar_approx(-1,1,3)S=0.99630.99800.53670.1761绘制图形如下:>>fun='exp(x)';>>fplot(fun,[-1,1])
7、>>holdon>>xi=-1:0.1:1;>>yi=polyval(S,xi);>>plot(xi,yi,'r:')得到如下所得图形:五.试验结论在该次实验中较顺利的达到了预期的结果。从试验结果看出三次逼近没有二次逼近效果理想,验证了最佳平方逼近理论。