网站大量收购独家精品文档,联系QQ:2885784924

计算机数值方法.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机数值方法

计算机数值方法实验报告 电子工程与光电技术学院 姓名 雷叶子 学号 0804210107 2009年6月 曲线拟合问题的数值试验报告 问题描述 对实验数据 (xi , yi)i=1,2,…,N 利用最小二乘法原理,编制确定拟合多项式 Pn(x)=a0+a1x+a2x2 +…+anxn nN 的数值软件,要求当0≤p≤n时,软件能对拟合多项式中任意项数ap=0,能自动调整相应的正规方程组。 已知试验数据 x y x y 5 1.0029 30 0.9979 10 1.0023 35 0.9978 15 1.0000 40 0.9981 20 0.9990 45 0.9987 25 0.9983 50 0.9996 拟合多项式 Pn(x)=a0+a1x+a2x2 +…+anxn 分别对n=2,3,4,5,6进行数值计算,且根据各自的偏差平方和分析拟合效果。 原理 对于给定的数据,设Pn(x)=a0+a1x+…+anxn=kxk, Pn(x)称为拟合多项式。作函数 Φ(a0,a1,…,an)=i(f(xi)-kxik)2 式中i0(i=1,2…,N)称为权函数,它的大小反映了该点数据的重要程度,通常可取i恒等于1。显然,要使Pn(x)能很好地密合实验数据,则应使每一点xi处的偏差的平方和尽可能小,即有 minak∈RΦ(a0,a1,…,an)= minak∈Rf(xi)-kxik)2 称多元极值问题为最小二乘问题,而满足上式解的多项式为最小二乘拟合多项式。 运行过程 输入:所拟合多项式的阶数n、数据组数m及数据。 构造正规方程组。 用列主消元法解正规方程组。 输出结果。 数据流向图。 源程序 #includeiostream #includemath.h using namespace std; int nCases,Coe; //全局变量数据组数及多项式阶数 double Matrix[100][100]; void Normal_Equ(double *Temp1,double *Back,double *X,double *X1,double *Y) //Temp1中存放正规方程组中a[i]前面的系数,Back中存放正规方程组中等式右边的数据 { int i,j; Temp1[0]=nCases; Back[0]=0.0; for(j=0;jnCases;j++) { Back[0]=Back[0]+Y[j]; X1[j]=1.0; } for(i=1;i=Coe;i++) { Back[i]=0.0; Temp1[2*i-1]=0.0; Temp1[2*i]=0.0; for(j=0;jnCases;j++) { X1[j]=X1[j]*X[j]; Back[i]=Back[i]+X1[j]*Y[j]; Temp1[2*i-1]=Temp1[2*i-1]+X1[j]*X1[j]/X[j]; Temp1[2*i]=Temp1[2*i]+X1[j]*X1[j]; } } for(i=0;i=Coe;i++) for(j=0;j=Coe;j++) Matrix[i][j]=Temp1[i+j]; } void Eliminate_Column(double *Temp1,double *Back)//消去列主元素过程 { int i,j,p; for(p=0;pCoe+1;p++) { double max=fabs(Matrix[p][p]); int l=p; for(i=p+1;iCoe+1;i++) if(fabs(Matrix[i][p])max) { max=fabs(Matrix[i][p]); l=i; } if(lp) { for(j=p;jCoe+1;j++) { max=Matrix[p][j]; Matrix[p][j]=Matrix[l][j]; Matrix[l][j]=max; } max=Back[p]; Back[p]=Back[l]; Back[l]=max; } for(i=p+1;iCoe+1;i++) { max=Matrix[i][p]/Matrix[p][p]; for(j=p+1;jCoe+1;j++) Matrix[i][j]=Matrix[i][j]-max*Matrix[p][j]; Back[i]=Back[i]-max*Ba

文档评论(0)

kaiss + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档