版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告曲线拟合——最小二乘法一、目的和要求1)了解最小二乘法的基本原理,熟悉最小二乘算法;2)掌握最小二乘进行曲线拟合的编程,通过程序解决实际问题。二、实习内容1)最小二乘进行多项式拟合的编程实现。2)用完成的程序解决实际问题。三、算法1)输入数据节点数n,拟合的多项式次数m,循环输入各节点的数据xj,yj(j=0,1,…,n-1)2)由xj求S;由xj,yj求T:Sk=(k=0,1,2,…2*m)Tk=(k=0,1,2,…m)3)由S形成系数矩阵数组ci,j:c[i][j]=S[i+j](i=0,1,2,…m,j=0,1,2,…,m);由T形成系数矩阵增广部分ci,m+1:c[i][m+1]=T[i](i=0,1,2,…m)4)对线性方程组CA=T[或],用列主元高斯消去法求解系数矩阵A=(a0,a1,…,am)TAX=BAX=B或[]四、实验步骤1)完成最小二乘法进行曲线拟合的程序设计及录入、编辑;2)完成程序的编译和链接,并进行修改;3)用书上P105例2的例子对程序进行验证,并进行修改;4)用完成的程序求解下面的实际问题。5)完成实验报告。五、实验结果1.经编译、链接及例子验证结果正确的源程序#include<stdio.h>#include<math.h>#defineN100#definedelta1e-6voidmain(){ inti,j,n,m,p,k,e,u,q=0; floata[N],b[N],s[N],t[N],c[N][N+1],sum,z[N],L,r,max,o,h,g; printf("输入n:"); scanf("%d",&n); printf("输入拟合次数m:"); scanf("%d",&m); printf("输入a:"); for(i=0;i<n;i++) { scanf("%f",&a[i]); } printf("输入b:"); for(i=0;i<n;i++) { scanf("%f",&b[i]); } for(j=0;j<=2*m;j++) { s[j]=0; for(i=0;i<n;i++) s[j]=s[j]+pow(a[i],j); } for(j=0;j<=m;j++) { t[j]=0; for(i=0;i<n;i++) t[j]=t[j]+b[i]*pow(a[i],j); } for(j=0;j<=2*m;j++) { printf("%f\t",s[j]); } for(j=0;j<=m;j++) { printf("%f\t",t[j]); } printf("\n"); for(i=0;i<=m;i++) { for(j=0;j<=m+1;j++) if(j!=m+1) c[i][j]=s[i+j]; else c[i][j]=t[i]; } e=m+1; for(i=0;i<e;i++) { for(j=0;j<e+1;j++) { printf("%15f",c[i][j]); q++; if(q%(e+1)==0) printf("\n");} } for(j=0;j<e-1;j++) { { max=fabs(c[j][j]); p=j; } for(i=j+1;i<e;i++) if(fabs(c[i][j])>max) { max=c[i][j]; p=i; } if(fabs(c[i][j])<delta) printf("奇异矩阵"); for(k=j;k<e+1;k++) { r=c[j][k],c[j][k]=c[p][k],c[p][k]=r; } for(i=j+1;i<e;i++) { L=c[i][j]/c[j][j]; for(k=j;k<e+1;k++) c[i][k]=c[i][k]-L*c[j][k]; } } printf("输出原方程的解为:\n"); z[e-1]=c[e-1][e]/c[e-1][e-1]; for(i=e-2;i>=0;i--) { sum=c[i][e]; for(j=i+1;j<e;j++) sum=sum-c[i][j]*z[j]; z[i]=sum/c[i][i]; } for(u=0;u<e;u++) for(j=0;j<e+1;j++) { printf("%15f",c[u][j]); q++; if(q%(e+1)==0) printf("\n"); } for(i=0;i<e;i++){ printf("z(%d)=%f\n",i+1,z[i]); if(i==e-1) printf("\n"); } o=0; for(i=0;i<2;i++) { g=z[0]; for(j=1;j<=m;j++) { h=1; for(k=0;k<j;k++) h=h*a[i]; g+=h*z[j]; } o+=(g-b[i])*(g-b[i]); } printf("\nTheerroris%f.\n",o);}2.实例验证结果:注,实在没找的P105有啥例2.1)输入初始参数:n=9,m=2X:1345678910Y:10542112342)结果输出:方程为13.459685-3.605318*x+0.267571*x*x=y实际应用问题:作物体运动的观测实验,得出以下实验测量数据,用最小二乘拟合求物体的运动方程。时间t(秒)00.91.93.03.95.0距离s(cm)010305080110解题步骤:1)画草图2)确定拟合方程次数为1:用完成的程序输入数据,求取拟合方程中的未知数,得出方程:如果是以1次拟合之后方程为-7.855057+22.253763*X=Y计算误差:误差为66.4252853)确定拟合方程次数为2:用完成的程序输入数据,求取拟合方程中的未知数,得出方程:得出的方程为-0.583367+11.081389*X+2.248811*X*X=Y计算误差:误差为1.807856六、分析和讨论结合实际问题,进行拟合次数的分析和讨论:拟合次数多多少关系着
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025维保合同约克
- 2025年老年人保健品项目提案报告模范
- 2025年铝制日用品项目提案报告模范
- 建筑工程的工程施工监理
- 2025年碱性纤维素酶项目申请报告模式
- 2025合同模板翻译公司翻译合同范本
- 2025年果蔬罐头加工项目规划申请报告模式
- 2025货物运输合同补充协议
- 昆虫记读书心得(15篇)
- 播音主持面试自我介绍范文(9篇)
- 小学高年级数学阅读能力的培养与
- 包装品质彩盒外箱知识课件
- 神经外科课件:神经外科急重症
- 颈复康腰痛宁产品知识课件
- 2024年低压电工证理论考试题库及答案
- 微电网市场调查研究报告
- 《民航服务沟通技巧》教案第14课民航服务人员上行沟通的技巧
- MT/T 538-1996煤钻杆
- 小学六年级语文阅读理解100篇(及答案)
- CB/T 467-1995法兰青铜闸阀
- 气功修炼十奥妙
评论
0/150
提交评论