ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:140.22KB ,
资源ID:4895950      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4895950.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数值分析实验报告.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数值分析实验报告.docx

1、数值分析实验报告数值分析实验报告 课题名称:曲线拟合的最小二乘法 姓 名:马 成 章 专 业:材料表针与分析 学 号:2014230074 2014年12月17日一 问题提出从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量y与时间t的拟合曲线。051015202530354045505501.272.162.863.443.874.154.374.514.584.024.64二 要求1、用最小二乘法进行曲线拟合; 2、近似解析表达式为;f(t)=a1t+a2t2+

2、a3t3 3、打印出拟合函数f(t),并打印出f(tj)与y(tj)的误差,j=1,2,.,12 4、另外选取一个近似表达式,尝试拟合效果的比较; 5、绘制出曲线拟合图。三 意义和目的1、掌握曲线拟合的最小二乘法; 2、最小二乘法亦可用于解超定线代数方程组; 3、探索拟合函数的选择与拟合精度间的关系。四 计算方法 本题要求我们用对曲线进行拟合,这里故, , , ,由于, 可以利用此式算出拟合曲线的,即所以求得,误差为,而均方误差为五 程序具体实现 private void ResultReport_Load(object sender, System.EventArgs e) this.Ini

3、tialDeal(); this.Deal();/初始化各个变量。private void InitialDeal() int i = 0; while(tString.Length 0) ti+ = Convert.ToDouble(tString.Substring(0,tString.IndexOf(,) * tUnit; tString = tString.Remove(0,tString.IndexOf(,) + 1); num = i; i = 0; while(yString.Length 0) yi+ = Convert.ToDouble(yString.Substring(0

4、,yString.IndexOf(,) * yUnit; yString = yString.Remove(0,yString.IndexOf(,) + 1); i = 0; while(i num) a11 += yi*yi; i+; this.labelA11.Text = a11.ToString(#.00E0;(#.00E0);0.00); i = 0; while(i num) a12 += yi*yi*yi; i+; a21 = a12; this.labelA12.Text = a12.ToString(#.00E0;(#.00E0);0.00); this.labelA21.T

5、ext = a21.ToString(#.00E0;(#.00E0);0.00); i = 0; while(i num) a13 += yi*yi*yi*yi; i+; a31 = a13; a22 = a13; this.labelA31.Text = a31.ToString(#.00E0;(#.00E0);0.00); this.labelA13.Text = a13.ToString(#.00E0;(#.00E0);0.00); this.labelA22.Text = a22.ToString(#.00E0;(#.00E0);0.00); i = 0; while(i num) a

6、23 += yi*yi*yi*yi*yi; i+; a32 = a23; this.labelA23.Text = a23.ToString(#.00E0;(#.00E0);0.00); this.labelA32.Text = a32.ToString(#.00E0;(#.00E0);0.00); i = 0; while(i num) a33 += yi*yi*yi*yi*yi*yi; i+; this.labelA33.Text = a33.ToString(#.00E0;(#.00E0);0.00); i = 0; while(i num) b1 += yi*ti; i+; this.

7、labelB1.Text = b1.ToString(#.00E0;(#.00E0);0.00); i = 0; while(i num) b2 += yi*yi*ti; i+; this.labelB2.Text = b2.ToString(#.00E0;(#.00E0);0.00); i = 0; while(i num) b3 += yi*yi*yi*ti; i+; this.labelB3.Text = b3.ToString(#.00E0;(#.00E0);0.00);/进行最小二乘法处理。private void Deal() double ab11,ab12,ab13,ab21,

8、ab22,ab23,ab31,ab32,ab33 = 0; double aDiterminal = 0; aDiterminal = a11*a22*a33 + a12*a23*a31 + a13*a21*a32 - a13*a22*a31 - a23*a32*a11 - a12*a21*a33; ab11 = (a22*a33 - a32*a23)/aDiterminal; ab12 = (a13*a32 - a12*a33)/aDiterminal; ab13 = (a12*a23 - a13*a22)/aDiterminal; ab21 = (a23*a31 - a21*a33)/aD

9、iterminal; ab22 = (a11*a33 - a13*a31)/aDiterminal; ab23 = (a13*a21 - a11*a23)/aDiterminal; ab31 = (a21*a32 - a31*a22)/aDiterminal; ab32 = (a12*a31 - a11*a32)/aDiterminal; ab33 = (a11*a22 - a12*a21)/aDiterminal; / 声明一个3行3列的两维数组,用于存放矩阵A / 初始化矩阵A double, matrixA = new double3,3 ab11,ab12,ab13, ab21,ab2

10、2,ab23, ab31,ab32,ab33 ; / 声明一个3行1列的两维数组,用于存放矩阵B / 初始化矩阵B double, matrixB = new double3,1b1,b2,b3; / 声明一个3行1列的两维数组,用于存放矩阵A和矩阵B的乘积 double, matrixC = new double3,1; / 计算矩阵A的逆转 / 计算矩阵A和矩阵B的乘积 for(int i = 0; i 3; i+) for(int j = 0; j 1; j+) / 初始化矩阵C matrixCi,j = 0; / 计算矩阵A和矩阵B的乘积,并把值存放在矩阵C中 for(int k =

11、0; k 3; k+) matrixCi,j += matrixAi,k * matrixBk,j; this.labela1Result.Text = matrixC0,0.ToString(#.00E+0;#.00E-0;0.00); this.labela2Result.Text = matrixC1,0.ToString(#.00E+0;#.00E-0;0.00); this.labela3Result.Text = matrixC2,0.ToString(#.00E+0;#.00E-0;0.00);实验结果对一次拟合做matlab检验,结果如下: 可从图像得一次拟合是错误的,于是进行

12、三次拟合,结果如下: 因此,得出上述数据应进行三次最小二乘法拟合才能得到比较精确的解六 结果讨论与分析 最小二乘法如果想将曲线拟合的比较完美,必须应用适当的模拟曲线,如果模拟曲线选择不够适当,那么用最小二乘法计算完后,会发现拟合曲线误差比较大,均方误差也比较大,而如果拟合曲线选择适当,那么效果较好。因此,需要对已知点根据分布规律选取多个可能的近似拟合曲线,算出后比较误差与均方误差,得到最佳拟合曲线。但是如果已知点分布非常不规律,无法观察或是无法正确观察出其近似曲线,那么根本无法使用最小二乘法进行曲线拟合,我们只能使用其它方法进行逼近,如最佳一致逼近多项式。 如果本题我们错误的使用对本题进行模拟,那样误差与均方误差都非常大,肯定无法得到好的效果,相比较而言,本题所选取的可以达到预期效果。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1