1、拉格朗日插值实验报告实验名称: 实验一拉格朗H插值1引言我们在生产生活中常常会遇到这样的问题:某个实际问题中,函数f(x)在区间 a,b上存在且连续,但却很难找到其表达式,只能通过实验和观测得到有限点上的 函数表。显然,根据这些点的函数值来求其它点的函数值是非常困难的。有些情况虽 然可以写出表达式,但结构复杂,使用不方便。所以我们总是希望根据已有的数据点 (或函数表)来构造某个简单函数Hx)作为f(x)的近似值。插值法是解决此类问题 的一种比较古老的、但却很常用的方法。它不仅直接广泛地应用于生产实际和科学研 究中,而且也是进一步学习数值计算方法的基础。2实验目的和要求运用Matlab编写三个.
2、m文件,定义三种插值函数,要求一次性输入整张函数表, 并利用计算机选择在插值计算中所需的节点。分别通过分段线性插值、分段二次插值 和全区间上拉格朗日插值计算f, 于的近似值。己知函数表如下:Xf(x)3算法原理与流程图(1)原理设函数y二在插值区间a, b上连续,且在n+1个不同的插值节点aWxo, x“,x.Wb 上分别取值,九,。目的是要在一个性质优良、便于计算的插值函数类中, 求一简单函数尸(x),满足插值条件P(Xi)=yi(i=O,l,-,n),而在其他点xHxi上,作 为巩Q近似值。求插值函数尸(x)的方法称为插值法。在本实验中,采用拉格朗日插 值法。分段低次插值当给定了 n+个点
3、xoxi* yn后,若要计算xHx处函数 值f(x)的近似值,可先选取两个节点Xt与X使xXiXi,然后在小区间Xi-x, Xi上作线性插值,即得fW - (A )=畑上工 + Z- Vi这种分段低次插值叫分段线性插值,乂称折线插值。类似地,我们可以选取距离X最近的三个节点E, X与畑,然后进行二次插值, 即得f(x)P2(x) =(+1E& 一:X-Xj/+1 (儿口jwk这种分段低次插值叫分段二次插值,乂称分段抛物线插值。全区间上拉格朗插值对节点Xi(i=O, 1, n)中任一点Xk(OWkWn),作一 n次多项式lk(x),使它在该 点上的取值为1,在其余点x,(i=O,l,k-l,k+
4、l,n)上取值为零。对应于每一节点 禺(k二0,1,n),都能写出一个满足此条件的多项式,这样写出了 n+1个多项式 lo(x), 11(X), , ln(x),其中(x) = &(x _ X。)(JT 一 耳)(X - Xk_1)(X -耳+1)(X _ 心); 由条件厶(孔)=1可得(卩-)(卩-心(玉-艰)(丑-X)于是我们可以得出如下的拉格朗日n次插值多项式(对于全区间上的插值,n取 函数表的长度)乙3 =儿厶()+ yjQ) +y丄3)(2)流程图分段线性插值分段二次插值p-p*(x-Xo(i)y(Xn(k-Wi)S=S+y(k全区间拉格朗口插值4程序代码及注释1、分段线性插值%分段
5、线性插值function y=piece_linear(xO,yO,x)% xO, yO为已知点,x为待求点n二length(xO);p=length(yO);m=length(x);% n, p, m分别为xO, yO, x长度if n、二pfprintf( Error! Please input again!n );% xO和yO长度不等时,报错elsefor 1=1:mz=x(i);sum 二;1=0;%给1赋初值,根据X的值确定1if zx0(n)fprintf ( Error! x (%d) is out of range ! n,, i); break;end%当插值点超出范围时,
6、报错for j二2:nif zx0(j)1=J;end辻广二0break;endend%旦1有非零值,则终止循环,选出合适的1for k=l-l:la二;for s二1-1:1辻ska二a*(z-xO(s)/(xO(k)-xO (s);endsum二sum+yO(k)*a;endy (i)二 sum;fprintf C y(%d) =%fnxl=%. 3f yl=%. 5f, x2=%. 3f y2=%. 5fnn,, i, y (i), xO(11), yO(11), xO(1), yO(1);%输出插值结果和所需节点endendend2、分段二次插值%分段二次插值function y二pi
7、ece_square(xO, yO,x)% xO, yO为已知点,x为待求点n=length(xO);p=length(yO);m=length(x);% n, p, m分别为xO, yO, x长度if n、二pfprintf( Error! Please input again!n );% xO和yO长度不等时,报错elsefor i二l:mz=x(i);sum 二;1=0;%给1赋初值,根据X的值确定1if zx0(n)fprintf C Error!x(%d) is out of range!Xn , i); break;end%当插值点超出范围时,报错for j二l:n-2p=* (x
8、0(j)+x0(j+l);if zp1=J;end辻广二0break;end%旦1有非零值,则终止循环,选出合适的1endif 1=0l=n-l;end%输入正确时,若1还等于零,1二n-lfor k=l-l:l+la二;for s二IT : 1+1辻 s=ka二a*(z-xO (s)/(xO (k) x0(s);endendsum二sum+yO(k)*a;endy (i)二 sum;fprintf (? y(%d)=%fnxl=%. 3f yl=%. 5fnx2=%. 3f y2=%. 5fnx3=%. 3f y3=%. 5fnn,, i, y (i), xO(11), yO(11), xO
9、(1), yO(1), xO(1+1), yO(1+1); %输出插值结果与所需节点 end end end3、拉格朗ri全区间插值%拉格朗ri全区间插值function y=lagrange (xO,yO,x)% xO, yO为已知点,x为待求点n=length(xO):p=length(yO);m=length(x);%n, p, m分别为xO, yO, x长度if n、二pfprintf( Error! Please input again!n );%x0和yO长度不等时,报错elsefor i二l:mz=x(i);S二;if zxO(n)fprintf ( Error!x(%d) is
10、 out of range!n , i); break;end%当插值点超出范围时,报错for k=l:nP二;for j=l:np二p*(z-xO(j)/(xO(k)-xO (j);ifends二p*yO(k)+s;endy(i)=s;fprintf ( y (%d) =%. 5fn,i, y (i);%输出插值结果endendend5算例分析1、测试示例 x=l 2 3 4; y二2 3 4; y2z:lagrange (x, y, xO)Error! Please input again! x=l 2 3 4; y=2 3 4 5; x0=; y2=lagrange (x,y,xO)Er
11、ror!x(l) is out of range! X 二1 2 3 4; y二2 3 4 5; xO=; y2z:lagrange (x, y, xO)y(l) =Error!x(2) is out of range!y2 二2、首先输入函数变及待求点x= ;y= ;x0=;注:保证在matlab工作目录中有三个.m文件3、分段线性插值yO二piece_linear (x,y,xO) y(l) =xl二 yl二,x2二 y2二y(2) =xl二 yl二,x2二 y2二y(3) =xl二 yl二,x2二y2=yO 二4、分段二次插值 yl=piece_square(x, y, xO) y(l)
12、 =xl二 yl二x2= y2=x3二 y3二y(2) =xl二 yl二x2= y2=x3二 y3二y(3) =xl二 yl二x2= y2=x3二 y3二yl 二5、全区间拉格朗口插值 y2=lagrange (x,y,xO) y(l) =y(2) =y(3) =y2 =6讨论与结论1、使用tic, toe函数计算下列四种方法计算上述问题所运行的时间Functionlagrange(xO, yO,X)piece_linear (x0, yO, x)piece_square(x0, yO, x)运行时间(s)从三次实验结果可知,三个程序的运行时间都很短。2、程序优化由分段线性插值和分段二次插值的
13、原理,x取值在函数表范围内时,插值结果有 意义,而当x取值在函数表范围以外,利用分段线性插值公式仍可以进行运算并得到 一个值,但其结果不准确;分段二次插值则无法找到三个合适的点以求插值,不予以 输出结果;若输入的函数表x与y的长度不相等,则无法插值。所以加入以下判断以提 高插值的准确性nlength(xO);p=length(yO);m二length(x);if n二pfprintf ( Error! Please input again!n ):if zxO(n)fprintf ( Error!x(%d) is out of range!n , i);break;end3、作图比较上图为三种方法的插值曲线,其中X取0到,步长为,由图可得,三种曲线非常接近, 这说明我们用拉格朗日插值计算所给点函数值的近似值时,引起的误差还是比较小 的。参考文献1易大义,沈云宝,李有法.计算方法(第2版),浙江大学出版社.2张琨高思超毕靖编着MATLAB2010从入门到精通电子工业出版社
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1