插值法与最小二乘法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
插值法与最小二乘法 实 验 报 告 实验名称 (教师填写) 插值法与最小二乘法 实验目的 (教师填写) 掌握插值法与最小二乘法。 实验题目 (教师填写) 完成以下两题: 试利用在100,121,144处的函数值求的近似值并估计误差. 给定数据点如下: -2 -1 0 1 2 3 1 2 2 3 3 5 分别以一次、二次、三次多项式曲线拟合以上数据. 实验报告要求 (教师填写) 完成编程与计算后写出实验报告,主要内容包括:所用算法语言,算法步骤描述,重要变量说明,程序清单,输出计算结果,结果分析。 实验内容与步骤 (学生填写) 所用算法语言:Visual C++ 算法步骤描述:求得的二次Lagrange插值多项式 Step1:Step2:解出Lagrange插值多项式; Step3:输出结果。 重要变量说明:数组x[3]为函数自变量x;y[3]为函数值;l[3]为Lagrange插值多项式的基函数组;Sum为最终由Lagrange插值法求得的近似值;R为近似误差;i、j为控制变量。 程序清单:#includestdio.h void main() { double x[3]={100,121,144}; double y[3]={10,11,12}; double l[3]={1,1,1}; double Sum=0; double R; int i,j; double X=115; for(i=0;i3;i++) { for(j=0;j3;j++) if(i!=j) { l[i]*=(X-x[j])/(x[i]-x[j]); continue; } } for(i=0;i3;i++) Sum+=y[i]*l[i]; printf(Sum=%lf\n,Sum); R=1; for(i=0;i3;i++) R*=X-x[i]; R*=1e-5/16; printf(R=%le\n,R); } 实验内容与步骤 (学生填写) 算法步骤描述: Step1:将所给数据进行预处理,分别列出列出可获得最小二乘解的正则方程组: Step2:用Gauss消去法分别解三个方程,得出相应参数; Step3:输出结果。 重要变量说明:数组x[6]、y[6]即题目所给的原始数据;a[2][3]、b[3][4]、c[4][5]分别为一次、二次、三次多项式的x矩阵,用来求解参数;m[6]中存放的为x的i次方和;n[4]中存放的是y与x的i次方乘积和;a1[2]、a2[3]、a3[4]分别为一次、二次、三次多项式的系数;i、j为控制变量;k为数据的个数6。 程序清单:#includestdio.h #includemath.h void main() { double x[6]={-2,-1,0,1,2,3}; double y[6]={1,2,2,3,3,5}; double a[2][3],b[3][4],c[4][5]; double m[6]={0},n[4]={0}; double a1[2],a2[3],a3[4]; int i,j,k=6; for(j=0;j6;j++) for(i=0;i6;i++) m[j]+=pow(x[i],(j+1)); for(j=0;j4;j++) for(i=0;i6;i++) n[j]+=y[i]*pow(x[i],j); a[0][0]=k; a[0][1]=a[1][0]=m[0]; a[1][1]=m[1]; a[0][2]=n[0]; a[1][2]=n[1]; for(i=0;i3;i++) a[1][i]+=-a[0][i]/k*m[0]; a1[1]=a[1][2]/a[1][1]; a1[0]=(a[0][2]-a1[1]*a[0][1])/a[0][0]; printf(The first order:\n); printf(%f\t%f\n,a1[0],a1[1]); 实验内容与步骤 (学生填写) b[0][0]=k; b[0][1]=b[1][0]=m[0]; b[0][2]=b[1][1]=b[2][0]=m[1]; b[1][2]=b[2][1]=m[2]; b[2][2]=m[3]; b[0][3]=n[0]; b[1][3]=n[1]; b[2][3]=n[2]; for(i=0;i4;i++) { b[1][i]+=-b[0][i]/k*m[0]; b[2][i]+=-b[0][i]/k*m[1]

文档评论(0)

wuyuetian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档