- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数值分析设计曲线拟合的最小二乘法.
曲线拟合的最小二乘法
一、目的和意义
在科学实验的统计方法研究中,往往要从一组实验数据中,寻找自变量x与因变量y之间的函数关系。由于观测数据往往不准确,因此不要求经过所有点,而只要求在给定点上误差而只要求所在所有给定点上的误差 按某种标准最小。若记,就是要求向量的范数最小。如果用最大范数,计算上困难较大,通常采用欧式范数作为误差度量的标准。的函数类型往往与实验的物理背景以及数据的实际分布有关,它一般含有某些待定参数。如果是所有待定参数的线性函数,那么相应的问题称为线性最小二乘问题,否则称为非线性最小二乘问题。最小二乘法还是实验数据参数估计的重要工具。这是因为这种方法比其他方法更容易理解,即使在其他方法失效的情况下,用最小二乘法还能提供解答,而且从统计学的观点分析,用该方法求得各项估计具有最优统计特征,因此这一方法也是系统识别的重要基础。线性最小二乘问题可以借助多元微分学知识通过求解法方程组得到解答。
用最小二乘法求拟合曲线时,首先要确定的形式。这不单纯是数学问题,还与所研究问题的运动规律以及所得观测数据有关;通常要从问题的运动规律以及给定数据描图,确定的形式,并通过实际计算选出较好的结果。为了使问题的提法更有一般性,通常把最小二乘法中的都考虑为加权平方和
这里是上的加权函数,它表示不同点处的数据比重不同。
二、计算方法
分) 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 在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量与时间的拟合曲线。
本题要求我们用对曲线进行拟合,这里故
,,
,,
,
,,
由于, 可以利用此式算出拟合曲线的,即
所以求得,,, ,误差为
,而均方误差为
下图可见实际测出值与拟合值的差别,下表可见拟合出的每一点的误差以及均方误差。
t y 拟合值 误差 误差平方 0 0 0 0 0 5 1.27 1.20215 -0.06785 0.004603623 10 2.16 2.1662 0.0062 3.844E-05 15 2.86 2.91855 0.05855 0.003428103 20 3.44 3.4856 0.0456 0 25 3.87 3.89375 0.02375 0.000564063 30 4.15 4.1694 0.0194 0 35 4.37 4.33895 -0.03105 0.000964102 40 4.51 4.4288 -0.0812 0 45 4.58 4.46535 -0.11465 0.013144622 50 4.02 4.475 0.455 0.207025 55 4.64 4.48415 -0.15585 0.024289222 均方误差 0 三、结构程序设计
在本题使用Visual Studio c# .NET编译程序。
//在窗体的Load事件里调用InitialDeal和Deal函数来处理数据。
private void ResultReport_Load(object sender, System.EventArgs e)
{
this.InitialDeal();
this.Deal();
}
//初始化各个变量。
private void InitialDeal()
{
int i = 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 num)
{
a11 += y[i]*y[i];
i++;
}
this.labelA11.Text = a11.ToString(#.00E0
文档评论(0)