插值法的程序实现_第1页
插值法的程序实现_第2页
插值法的程序实现_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、插值法的程序实现一实验目的1. 熟悉Mat lab编程;2. 学习插值方法及程序设计算法二实验题目分别用拉格朗日插值、牛顿插值、口然样条函数对1910、1965、2002的人口进行估算。三实验原理与理论基础1拉格朗日插值算法设计利用己知条件得到 xi, yi, i二0, 1, 2,-由 Lk(x) = (x-x0)*-*(x-x (k-1)* (x-x (k+1)(x-xn)/ (xk-xO)*(xkx (kl) * (xkx (k+1) (xkxn)得出 Li(x);由Y=yl* LI (x)+“+yn*Ln(x)得出Y关J: x的表达式。带值计算即可。2.牛顿插值算法设计利用己知条件得到x

2、i, yi, i二0, 1, 2,利用差商公式fxO, -xk = (fxO, ,x(k-2),xk-fx0,x(kT)/(xk-x(kT)各阶差商。 利用牛顿插值公式f (x)=f (xO)-f xO, xl*(x-xO)+-f ZxO, xl, xn*(x-x0)*- (xx(nl). 带值计算即可。3.自然样条函数算法设计利用己知条件得到xi, yi, i二0, 1, 2,-利用公式求出h(i) u(i)k(i);di;利用 h(i) u(i) k(i);di 解出向量 H; 将相关变量带入自然样条表达式中即可。带值计算即可。四实验内容(一)问题重述:下面给出美国从1920年到1970年

3、的人口表:1920 1930 1940 1950 19601970 年份 105711 123203 131669 150697 179323 203212 人口(千人)1 用表中数据 构造一个5次拉格朗日插值多项式,并用此估计1910, 1965和2002年的人口。在1910 年的实际人口约为91772000,请判断插值计算得到的1965年和2002年的人口数据准确性是多少?2用牛顿插值估计:(1) 1965年的人口数:(2) 2002年的人口数。3用自然样条函数估计在1910, 1965和2002年的人口数。请比较以上三种方法所 求值的效果。那一种方法最优?(二)实验代码:1.用mat l

4、ab编写的拉格朗日插值M文件如下:function Im, y=cz5(x)yl=1057U;y2=123203;y3=131669;y4=150697;y5=179323;y6二203212; xl二1920; x2=1930; x3=1940; x4=1950; x5=1960; x6二1970;al=(x_x2)*(x-x3)*(x-x4)*(xx5)*(xx6)/(xlx2)*(xl-x3)*(xlx4)*(xl- x5)*(xl-x6);a2=(x-xl)*(x-x3)*(x-x4)*(x-x5)*(xx6)/(x2-xl)* (x2-x3)* (x2-x4)* (x2- x5)*(

5、x2-x6);a3=(x-xl)*(x-x2)*(x-x4)*(x-x5)* (x-x6)/(x3-xl)*(x3-x2)*(x3-x4)*(x3- x5)*(x3-x6);a4=(x-xl)*(x-x2)*(x-x3)*(xx5)*(xx6)/(x4-xl)*(x4-x2)*(x4-x3)* (x4- x5)*(x4-x6);a5=(x-x2)*(x-x3)*(x-x4)*(x-xl)* (x-x6)/(x5-xl)*(x5-x3)*(x5-x2)*(x5- x4)*(x5-x6);a6=(x-x2)*(x-x3)*(xx4)*(xx5)* (x-xl)/(x6-xl)*(x6-x2)*(x

6、6x3)* (x6- x4) * (x6x5);'实际值大约为:y=yl*al+y2*a2+y3*a3+y4*a4+y5*a5+y6*a6; if x=1910m二91772;估计值大约为:elsem= (91772-31872) /31872*y+y:'估计值大约为:' End用 c+编写程序如下:#include include include include double H(double x, double a, double pJ /求得插值基函数if(fabs(a*pil)<0. 000001)continue;h*=(x-pi);利用累乘求得插值基函

7、数的分子部分f*=(a-讥i);利用累乘求得插值基函数的分母部分return h/f; double L(double x, double pl6, double q6)/求得拉格朗日插值多项式代入x取 值时的函数值double L二0;for(int i=0;i<6;i+)if(fabs(xpi)<0. 000001)return pi;L+二qi*H(x, pi, p) ;/利用累加实现 L=L (yi*FI (xxj)/(xixj)return L; void N(double q6, double f6115) double Lagrange(double x, doubl

8、e pL6,double q6) void mainO int i;double x6, y6, 1=1. 0, h=l. 0; double f65;cout<for( i=l;i<6;i+) for(int j=l;j<6;j+)for(int k=O;k<=j;k+) ; fi0二qi;for(i=0;i<6;i+)cin»xi;cout< cin»yil;cout<cout<cout<i)yl=105711 123203 131669 150697 179323 2032121940 1950 1960 1970

9、;for i=2:6fxO二19201930y2(i) = (yl (1)-yl (i)/ (xO(1) -xO (i):endfor i=3:6y3(i) = (y2 (2)-y2(i)/ (xO(2)-xO (i);endfor i=4:6y4 (i) = (y3 (3)-y3(i)/ (xO(3)-xO (i);endfor i=5:6y5(i) = (y4(4)-y4(i)/(xO(4)-xO(i);end2.用mat lab编写的牛顿插值M文件如下:function y=niuden5 (x)y6 (6) = (y5 (5) -y5 (6) / (xO (5) -xO (6);y=y

10、l (1) +y2 (2) * (x-xO (1) +y3 (3) * (x-xO (1) * (x-xO (2) +y4 (4) * (x-xO (1) * (x- xO(2) *(x-xO(3)+y5(5)*(x-xO(1)*(x-xO(2)*(x-xO(3)*(x-xO (4)+y6 (6)* (x- xO(l)*(x-xO(2)*(x-xO(3)*(x-xO(4)* (x-xO (5);3. 用matlab编写的口然样条函数M文件如下: function =yangtiaochazhi (x)yl=105711 123203 131669 150697 179323 203212;xO

11、二1920 1930 1940 19501960 1970; for i=l:5h(i)=xO(i+l)-xO(i); endu(i)=h(i)/(h(i)+h(i+l) ; end u(5)=0; k二0; for i=2:5k(i)=h(i)/(h(i-l)+h(i) ; endd(l)=0;d(6)=0; for i=2:3y21(i) = (yl(1)-y1 (i)/(xO(1)-xO (i); end for i=3:4y22(i)u(yl (2) y 1 (i)、(xo(2) 1X0(i):end for i4 5y23(iu(yl(3)lyl(i)、(xo(3)lxo(i): e

12、nd for iH5oy24 (i) H (yl (4) y 1 (i)、(xo (4) 1X0 (i) : endd(lNpd(6npd (2) H (y21 (2) y21 (3)、(xo (2) Jo (3) : d (3) H (y22 (3) y22 (4) _ 00 (3) xo (4)- d(4)H(y23(4) y23(5)一(xo(4) Jo(5): d(5)H(y24(5) y24(6)一(xo(5) xo(6)-ah2 k(l) 0 0 0 02(1) 2 k(2) 0 0 00u(2) 2 k(3) 0 000 u(3) 2 k(4) 00 0 0 u(4)2 k(5)

13、o0 0 0 u(5) 2= BHd(l:d(2)K(3)K(4);d(5?rd(6)T s.AllAxxm echo if xH1930yuM (1*( (xo (2) IX) * (xo (2) IX) * (xo (2) X)、(6*h (1) +M (2)*( (xxo (1) )*x xO(1)*(xxo(1)一(6*h(1) + (yl (1)i(M(1)*h(1)*h(1)、6)*(xo(2)IX) /h(1) + (yl (2) 1 <M(2)*h(l*h(l)、6*(xlxo(l)、h(l)elseif x 介 1940y=M (2) *( (xo (3) X) *(xo (3)IX)沃(xo (3) X) 一 (6*h (2) +M (3) *( (xxo (2) * (X xo (2)*xxo (2) )、(6*h (2) + (y 1 (2) (M (2)兴 h (2)幕 h (2)、6) * (xo (3) X)、h (2) + (yl (3) I CM (3) *h (2rh (2) )、6*(xlxo (2) )、h (2)elseif x 介 19

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论