数值计算-插值-单项式基底-牛顿基底-拉格朗日基底算法实例

上传人:汽*** 文档编号:562318207 上传时间:2023-05-09 格式:DOCX 页数:8 大小:32.84KB
返回 下载 相关 举报
数值计算-插值-单项式基底-牛顿基底-拉格朗日基底算法实例_第1页
第1页 / 共8页
数值计算-插值-单项式基底-牛顿基底-拉格朗日基底算法实例_第2页
第2页 / 共8页
数值计算-插值-单项式基底-牛顿基底-拉格朗日基底算法实例_第3页
第3页 / 共8页
数值计算-插值-单项式基底-牛顿基底-拉格朗日基底算法实例_第4页
第4页 / 共8页
数值计算-插值-单项式基底-牛顿基底-拉格朗日基底算法实例_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《数值计算-插值-单项式基底-牛顿基底-拉格朗日基底算法实例》由会员分享,可在线阅读,更多相关《数值计算-插值-单项式基底-牛顿基底-拉格朗日基底算法实例(8页珍藏版)》请在金锄头文库上搜索。

1、数值计算实验报告t1234y112965125实验题(1)用单项式基函数对上述数据进行插值目(2)对上述数据进行Lagrange插值(3)对上述数据进行New ton插值并画出对应的插值曲线。实验目 的多项式插值编程环 境采用C+或JAVA实现实验内 容(算 法、程 序、步骤 和方法)#include stdafx.h#include iostream#include iomanipusing namespace std;class Matrixpublic:Matr ix();Matrix(int m, int n);Matr ix(Ma trix &anot her);void displ

2、ay();void clear();int lu();double *mat;int row;int col;Matr ix:Ma tr ix()row=0;col=0;Matrix:Matrix(int m, int n)row=m;col=n;mat=new double*row;for (int i=0;irow;i+)mati=new doublerow;for (int j=0;jcol;j+) matij=0;void Matr ix:display()for(int i=0;irow;i+)for (int j=0;jcol;j+)coutsetprecision(17)mati

3、j;coutendl;void Matr ix:clear()for(int i=0;irow;i+)for (int j=0;jcol;j+) matij=0;int Matr ix:lu()double b4 = 11,29,65,125;int col=0,row=0,p4;/p为a排?列如阵压 1 缩?形?式? double x4 = ,u44 = ,l44 = , temp,y4 = ;for (int i=0;i4;i+)lii=1;pi=i;for(int j=0;j4;j+) uij=t his-ma tij;/初?始?化i三y角?阵for(col=0;col4;col+)pc

4、ol=col;for (row=col+1;row4;row+) if (fabs(urowcol)fabs(u(pcol)col) pcol=row;if (pcol!=col)for (int k=0;k4;k+)te mp=ucolk; ucolk=upcolk; upcolk =te mp;/选?主iA元a if(ucolcol=0) break;for (row=col+1;row4;row+) lrowcol=urowcol/ucolcol;/某3。?列切每?一。?行D的I?乘?数yfor (int j=col;j4;j+)for (int i=col+1;i4;i+) uij=u

5、ij-lico l*u colj;/ufor (int k=1;k4;k+)for(col=0;colk;col+)te mp=lpkcol; lpkcol=lkcol; lkcol =te mp;/Lfor (int i=0;i4;i+)te mp=bi;bi=bpi;bpi =t emp;/Pbfor(col=0;col4;col+)if (lcolcol=0) break;ycol=bcol/lcolcol;for (row=col+1;row=0;col一)if (ucolcol=0) break;xcol=bcol/ucolcol;for (row=0;rowcol;row+) br

6、ow=brow-urowco l*( xcol);/Ux=y;cout多O项?式?插?值;I:;couty=x0;for (int i=1;i4;i+)cout+xixi;coutendl;return 0;int _t main(in t argc, _TCHAR * argv)double y4 = 11,29,65,125;int i=O,j=O,k=O;Matrix a(4,4);for (i=0;i4;i+) for(j=0;j4;j+)a.ma ti j=pow(double)(i+1),j); a.lu();/多 O项?式?插?值double di4;/各iA 式?底 IjA 数

7、0y for (i=1;i=4;i+)dii-1=1;for (k=1;k=4;k+)if (k!=i) dii T*= i-k;cout拉O-格?朗O 日?插?值! I: eoy=; for (i=0;i4;i+)if(i!=0)if (dii0) cout,_; else cout+;elseif (dii0) cout,_; coutyi;for (k=0;k4;k+)if (i!=k)cout(t_(k+1);cou t/fabs(dii);/拉o-格?朗O日?插?值 coutendl;a.clear();for (i=0;i4;i+)a.ma ti0=1;for(j=1;j=i;j+

8、)a.ma tij=a.ma tijT *(i+1j); double x4 = ;for(j=0;j4;j+)if (a.ma tjj =0) break;xj=yj/a.ma tjj;for (i=j+1;i4;i+)yi=yi-a.ma tij* xj;cout牛je顿插?值! I: eoy=;for (i=0;i4;i+)if (i=0)co utxi;else cout+xi;for(j=O;ji;j+)cout(t-j+1);/牛匚顿插?值“ coutendl;system(pause);return 0;150100500.51.522.533.544.56%260200多项式插

9、值:y=5+2xl+3x2+lx3tl)( t2)( t3)/6牛顿插值:y=ll+18(tT)+9(tT)(t-2)+l(tT)(t-2)(t-3)请按任意键继续.计算结 果(数字 或图形)拉格朗日插值:y=_11( t2)( t-3)( t-4)/6+29( t-1)( t-3)( t- 4)/2-65( t1)( t-2)( t- 4)/2+125(分析与 结论一种方法表达式不冋,但由插值多项式唯 性可知化简后相冋。给 出的函数图象也相同。单项式插值中单项式基底得到的是一个n*n的范德蒙矩阵,它的列 是某些独立变量的依次乘幂,我们需要用选主元的高斯消去法求解, 方程确定系数的工作量为O (n3),但计算p (t)和求导工作量较 小;而拉格朗日插值得到的线性方程组的系数矩阵式单位阵I,所以 无需求解方程组,确定系数只需要O (n),但计算p (t)和求导工 作量大;牛顿插值的基底矩阵是下三角,我们可以直接利用前代法 求解方程,其各项性能指标在两者之间。指导老 师评 议成绩评定:指导教师签名:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号