
数值分析实验(235章).doc
12页试验2.1多项式插值的振荡现象实验目的:观察多项式插值的振荡现象,了解多项式的次数与逼近效果的关系实验内容:问题提出:考虑在一个固定的区间上用插值逼近一个函数显然Lagrange插 值中使用的节点越多,插值多项式的次数就越高我们自然关心插值多项式的次数增加时,Ln(x)是否也更加靠近被逼近的函数Runge给出的一个例子是极著 名并富有启发性的设区间卜1,1]上的函数/(x) = ,1 + 25x2考虑区间卜1, 1]上的一个等距划分,分点为,2iXj = 一1 , i=0, 1, 2,…,nn则拉格朗口插值多项式为:Ln(x) = i=0l + 25x:h(x),其中的lj(x) , i=0, 1, 2,…,n是n次拉格朗日插值基函数实验要求:1、选择不断增大的分点数目*2, 3, ,画出原函数.f(x)及插值多项式函 数Ln(x)在卜1, 1]上的图像,比较并分析试验结果2、选择其他的函数,例如定义在区间卜5, 5]上的函数/?(x) = 一, g(x) = arctan x, 1 + x重复上述的实验看其结果如何实验步骤及结果分析:1、选择不断增大的分点数目n=2, 3, 4, 5, 6, 7, 8, 9, 10做/(x)的拉格朗日插值多项式Ln(x),并与原函数值做比较,如下图所示。
观察图像可知:n=2, 3时插值函数和原函数差别很大,门二4, 5, 6吋插值函数与原函数的逼近程 度相对较好,继续增加插值次数n,插值函数在插值区域的中间部分收敛,而在这区间外是发散的,此外,门二7,9时在插值中间区域逼近效果不好因此,适当提高插值多项式次数,可以提高逼近的精度,但是次数太高反而产生 相反的效果2、选择其他的函数进行插值原函数/?(兀)=宀,区间卜5, 5],插值结果如下图:1+Xo o o o-0-0-0-0;(x)u-=x pue O(X)J=A观察图像可知:低次插值时,插值效果不好n=7,&9,10时,在区间[-2, 2],插值函数与原函数逼近程度好,但在区间外插值函数发散其中,n=8,10插值效果比"7,9好Ax)u-=x pue o(m)jlX;(x)ulrx pue 0(x)1观察图像可知:n=5,6,7,&9,10时,在区间[-3, 3],插值函数与原函数逼近程度好,但在区间外 插值函数发散其中,n=7,9在插值区间两端发散的更剧烈分析在插值区间两端发散的原因:次数越高,计算量就越大,积累误差也大,在整个区间上做高次多项式,当局部 插值节点处的值有微小偏差时,可能引起整个区间上函数值的很大变化,使计算 不稳定。
Matlab程序如下:function t_charpt2%数值实验二%输入:实验选择,函数式选择,插值节点数%输出:拟合函数及原函数的图形result=inputdlg({,iW选择实验,若选 2.1,请输入 1,否则输入 2:,}/charpt_2\l,{,l,});Nb=str2num(char(result));if(Nb〜=1)&(Nb~=2) errordlg(实验选择错误!); return;endpromps={*请选择实验函数,若选f(x),请输入f,若选h(x),请输入h,若选g(x),请输Ag:*};result=inputdlg(promps/charpt 2; 1 ,{f});Nb_f=char( result);if(Nb_f〜二 f &N b_f 〜-h&N b_f〜-gj errordlg(f实验选择错误!’); return;endresult二inputdig(「请输入插值点数 N:,},,charpt_2,l,{,10,});Nd=str2num(char( result));if(Nd 实验内容及要求:编制以函数为基的多项式最小二乘拟合程序,并用于对表中的数据作3次多项式最小拟合I.0-.050.00.51.01.52.0-4.447-0.4520.5510.048-0.4470.5494.552取权数叱•三1,求拟合曲线0 =工论 中的参数{ak}.平方误差尸,并作离散R=0数据{”)讣的拟合函数y =(p\x)的图形实验步骤及结果分析:拟合函数矿6)的图形:■mod pue * on拟合曲线0 = m 中的平方误差尸为2.17619.005; 参数血}%alph中的四个数值,按降幕排列I.999H, -2.99767, -3.96825e-005,0.549119o观察图像可知:表中数据均在拟合曲线上,拟合结果很好,平方误差为10・5数量级Matlab程序如下:function charpt3%数值实验三:含“实验3.1 ”禾口 "实验3.2”%子函数调用:dlsa%输入:实验选择%输出:原函数及求得的相应插值多项式的函数的图像以及参数alph和误差rresult=inputdlg({*iW选择实验,若选 3.1,请输入 1,否则输入 2: },charpt_3丄{T}); Nb=str2num(char(result));if((Nb~= 1)&(Nb~=2)) errordlgC实验选择错误! ); return; endx0=-l:0.5:2;y0=[-4.447 -0.452 0.551 0.048 -0.447 0.549 4.552];n=3;%n为拟合阶次ifNb==lalph=polyfit(xO,yO,n);y=polyval(alph,xO);r=(yO-y) * (yO-y)1;%平方误差x=-1:0.01:2;y=polyval(alph,x);plot(x,y,k」);xlabel(x); ylabel(y0 * and polyfit.y—);hold onplotfxO^O;*1);(illX离散数据的多项式拟合J;grid on;elseresult=inputdlg({请输入权向量 w:,),,charpt_3\l,{,[l 11111 I]1}); w=str2num(char(result));[a,b,c,alph,r]=dlsa(x0,y0,w,n);enddisp(「平方误差:,sprintf(%g;r)]);disp([參数 alph: ; sprintfC%g\t\alph)])function [a,b,c,alph,r]=dlsa(x,y,w,n)%功能:用正交化方法对离散数据作多项式最小二乘拟合。 输入:m+1个离散点(x,y,w), x, y, w分别用行向量给出 拟合多项式的次数n, 0












