数值分析实验报告.docx

上传人:b****4 文档编号:4895950 上传时间:2022-12-11 格式:DOCX 页数:11 大小:140.22KB
下载 相关 举报
数值分析实验报告.docx_第1页
第1页 / 共11页
数值分析实验报告.docx_第2页
第2页 / 共11页
数值分析实验报告.docx_第3页
第3页 / 共11页
数值分析实验报告.docx_第4页
第4页 / 共11页
数值分析实验报告.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数值分析实验报告.docx

《数值分析实验报告.docx》由会员分享,可在线阅读,更多相关《数值分析实验报告.docx(11页珍藏版)》请在冰豆网上搜索。

数值分析实验报告.docx

数值分析实验报告

数值分析实验报告

 

课题名称:

曲线拟合的最小二乘法

姓名:

马成章

专业:

材料表针与分析

学号:

2014230074

 

2014年12月17日

 

一问题提出

从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。

在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量y与时间t的拟合曲线。

0

5

10

15

20

25

30

35

40

45

50

55

0

1.27

2.16

2.86

3.44

3.87

4.15

4.37

4.51

4.58

4.02

4.64

二要求

1、用最小二乘法进行曲线拟合;

2、近似解析表达式为;f(t)=a1t+a2t2+a3t3

3、打印出拟合函数f(t),并打印出f(tj)与y(tj)的误差,j=1,2,.....,12

4、另外选取一个近似表达式,尝试拟合效果的比较;

5、绘制出曲线拟合图。

三意义和目的

1、掌握曲线拟合的最小二乘法;

2、最小二乘法亦可用于解超定线代数方程组;

3、探索拟合函数的选择与拟合精度间的关系。

四计算方法

本题要求我们用

对曲线进行拟合,这里

由于

可以利用此式算出拟合曲线的

,即

所以求得

,误差为

,而均方误差为

五程序具体实现

privatevoidResultReport_Load(objectsender,System.EventArgse)

{

this.InitialDeal();

this.Deal();

}

 

//初始化各个变量。

privatevoidInitialDeal()

{

inti=0;

while(tString.Length>0)

{

t[i++]=Convert.ToDouble(tString.Substring(0,tString.IndexOf(",")))*tUnit;

tString=tString.Remove(0,tString.IndexOf(",")+1);

}

num=i;

i=0;

while(yString.Length>0)

{

y[i++]=Convert.ToDouble(yString.Substring(0,yString.IndexOf(",")))*yUnit;

yString=yString.Remove(0,yString.IndexOf(",")+1);

}

i=0;

while(i

{

a11+=y[i]*y[i];

i++;

}

this.labelA11.Text=a11.ToString("#.00E0;(#.00E0);0.00");

i=0;

while(i

{

a12+=y[i]*y[i]*y[i];

i++;

}

a21=a12;

this.labelA12.Text=a12.ToString("#.00E0;(#.00E0);0.00");

this.labelA21.Text=a21.ToString("#.00E0;(#.00E0);0.00");

i=0;

while(i

{

a13+=y[i]*y[i]*y[i]*y[i];

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

{

a23+=y[i]*y[i]*y[i]*y[i]*y[i];

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

{

a33+=y[i]*y[i]*y[i]*y[i]*y[i]*y[i];

i++;

}

this.labelA33.Text=a33.ToString("#.00E0;(#.00E0);0.00");

i=0;

while(i

{

b1+=y[i]*t[i];

i++;

}

this.labelB1.Text=b1.ToString("#.00E0;(#.00E0);0.00");

i=0;

while(i

{

b2+=y[i]*y[i]*t[i];

i++;

}

this.labelB2.Text=b2.ToString("#.00E0;(#.00E0);0.00");

i=0;

while(i

{

b3+=y[i]*y[i]*y[i]*t[i];

i++;

}

this.labelB3.Text=b3.ToString("#.00E0;(#.00E0);0.00");

}

//进行最小二乘法处理。

privatevoidDeal()

{

doubleab11,ab12,ab13,ab21,ab22,ab23,ab31,ab32,ab33=0;

doubleaDiterminal=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)/aDiterminal;

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=newdouble[3,3]{{ab11,ab12,ab13},{ab21,ab22,ab23},{ab31,ab32,ab33}};

//声明一个3行1列的两维数组,用于存放矩阵B

//初始化矩阵B

double[,]matrixB=newdouble[3,1]{{b1},{b2},{b3}};

//声明一个3行1列的两维数组,用于存放矩阵A和矩阵B的乘积

double[,]matrixC=newdouble[3,1];

//计算矩阵A的逆转

//计算矩阵A和矩阵B的乘积

for(inti=0;i<3;i++)

{

for(intj=0;j<1;j++)

{

//初始化矩阵C

matrixC[i,j]=0;

//计算矩阵A和矩阵B的乘积,并把值存放在矩阵C中

for(intk=0;k<3;k++)

{

matrixC[i,j]+=matrixA[i,k]*matrixB[k,j];

}

}

}

this.labela1Result.Text=matrixC[0,0].ToString("#.00E+0;#.00E-0;0.00");

this.labela2Result.Text=matrixC[1,0].ToString("#.00E+0;#.00E-0;0.00");

this.labela3Result.Text=matrixC[2,0].ToString("#.00E+0;#.00E-0;0.00");

}

实验结果

 

对一次拟合做matlab检验,结果如下:

可从图像得一次拟合是错误的,于是进行三次拟合,结果如下:

因此,得出上述数据应进行三次最小二乘法拟合才能得到比较精确的解

六结果讨论与分析

最小二乘法如果想将曲线拟合的比较完美,必须应用适当的模拟曲线,如果模拟曲线选择不够适当,那么用最小二乘法计算完后,会发现拟合曲线误差比较大,均方误差也比较大,而如果拟合曲线选择适当,那么效果较好。

因此,需要对已知点根据分布规律选取多个可能的近似拟合曲线,算出后比较误差与均方误差,得到最佳拟合曲线。

但是如果已知点分布非常不规律,无法观察或是无法正确观察出其近似曲线,那么根本无法使用最小二乘法进行曲线拟合,我们只能使用其它方法进行逼近,如最佳一致逼近多项式。

如果本题我们错误的使用

对本题进行模拟,那样误差与均方误差都非常大,肯定无法得到好的效果,相比较而言,本题所选取的

可以达到预期效果。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

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

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