当前位置:文档之家› 最小二乘法的数据拟合

最小二乘法的数据拟合

四川理工学院
《数值计算方法》课程设计
题目:用最小二乘法实现数据拟合
专业:数学与应用数学
班级:2013级2班
姓名:李宁、李鑫、骆丹、冯莉娟
目录:
一、摘要............................ 错误!未定义书签。

二、应用计算方法的基本原理.......... 错误!未定义书签。

1.最小二乘法线性拟合............... 错误!未定义书签。

1.1算法描述........................ 错误!未定义书签。

1.2误差估计 (3)
2.最小二乘法非线性拟合 (3)
三、例题的计算结果 (4)
1. 最小二乘法线性拟合 (4)
2.最小二乘法非线性拟合 (5)
四、总结及心得体会 (7)
五、参考文献........................ 错误!未定义书签。

六、附录程序 (8)
一、摘要
本文主要依据最小二乘法对任意一组数据进行线性拟合和非线性拟合。

因为在实际生活中,我们在工厂、车间、工作室等地方将遇见很多数据,这些数据可能有关系,及线性关系,正比关系,一些简单和复杂的关系。

但是更多的数据是杂乱无章的。

对于这些无规律的数据,我们得出对我们有利的结论。

然而分析数据有是我们这个时代发展的必不可少的研究,所以只有将数据转化成为我们需要的形式,才能进一步分析。

将数据转化为必要的形式的一种重要的方式则是最小二乘法中的数据拟合。

但是在拟合的时候,有些非线性的数据需要我们进行变量代换。

在本文中就举出了一个非线性拟合的例子,通过此例子来演示如何把非线性拟合转化为线性拟合求解。

本文中还有重要的模块是用matlab编写程序,在使用c语言调用子程序时,我们只需要建立大M文件,而我们所工作的区间就是主程序。

我们可以初步绘制出散点图,观察散点图的趋势来确定用什么拟合。

用最小二乘法拟合数据大概分为两类:线性拟合和非线性拟合。

一般先测量数据在直角坐标平面上描出散点图,看一看散点同哪类曲线图形接近,然后选用相近的线性或非线性的曲线去拟合数据,非线性的曲线再通过适当的变量替换转化为线性拟合问题,进而用matlab编写程序求出拟合函数表达式。

关键字:线性拟合,非线性拟合,最小二乘法,matlab软件,M文件
二、应用计算方法的基本原理
1.最小二乘法线性拟合
1.1.算法描述
在科学实验中,常常需要从一组测量数据中找出实验规律的数学表达式,用最小二乘法拟合数据是常用的数学方法。

最小二乘法拟合就是在一类曲线错误!未找到引用源。

中求一曲线错误!未找到引用源。

,使之被拟合曲线错误!未找到引用源。

在节点错误!未找到引用源。

的误差平方和错误!未找到引用源。

最小。

设定数据组错误!未找到引用源。

错误!未找到引用源。

,错误!未找到引用源。

为已知的一组错误!未找到引用源。

上线性无关的函数,选取近视函数为:
(1)
使得
(2)
其中,错误!未找到引用源。

为权系数;错误!未找到引用源。

为错误!未找到引用源。

的线性组合的全体,特别的可取错误!未找到引用源。

由于错误!未找到引用源。

为已知,故可令:
(3)
即可将上述数据拟合问题归结为求多元函数的极值问题。

要使得错误!未找到引用源。

取极小值,则错误!未找到引用源。

必须满足条件:
即对式(3)求偏导数得:
即:
(4) 令
则方程组(4)可表示成矩阵形式:
(5) 由错误!未找到引用源。

线性无关可导出(5)中的系数矩阵非奇异,即方程组(4)的解存在唯一,即错误!未找到引用源。

存在且唯一,可求得拟合函数:
1.2.误差估计
在最小二乘法数据拟合曲线算法中,一般取2-范数作为总体误差,即最小二乘法数据拟合曲线算法中误差为:
2.最小二乘法非线性拟合
一些实际问题中的数据分布需要用非线性的函数错误!未找到引用源。

去拟合,一般先测量数据在直角坐标平面上描出散点图,看一看散点同哪类曲线图形接近,然后选用相近的曲线拟合方程,再通过适当的变量替换转化为线性拟合问题,按线性拟合解出后再还原为原变量所表示的曲线拟合方程,仍用2-范数作为总体误差,即:
三、例题计算结果
1. 最小二乘法线性拟合
1.1.设从某一实验中测的两个变量x和y的一组数据如下所示:
1 2 3 4 5 6 7 8 9
1 3 4 5 6 7 8 9 10
10 5 4 2 1 1 2 3 4
求该数据的拟合多项式及其误差。

解:首先利用matlab画出数据分布趋势图(详细见程序1),如下图:
由上图观察可知,可建立的拟合函数错误!未找到引用源。

利用matlab求得拟合函数:错误!未找到引用源。

误差:错误!未找到引用源。

拟合图像如下:
2.最小二乘法非线性拟合
2.1.求下列数据的拟合函数:
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
2.74 4.50 5.35 5.65 5.90 6.10 6.26 6.39 6.50 6.59
首先利用matlab画出数据分布趋势图(详细见程序1),如下图:
由上图观察可知,可建立的拟合函数错误!未找到引用源。

则等式两边同时乘以错误!未找到引用源。

得错误!未找到引用源。

利用matlab求得拟合函数中错误!未找到引用源。

7.0367
故拟合函数为:错误!未找到引用源。

7.0367错误!未找到引用源。

拟合图像如下:
四、总结及心得体会
总结:
最小二乘法是指使因变量估计值与实测值间的相对误差平方和为最小。

在研究两个变量之间的关系时,我们可以直线代替两个变量之间的关系。

曲线拟合是指适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量之间的关系。

通过此次课程设计,能够运用最小二乘法原理来拟合数据间的线性和非线性关系,并求出数学表达式。

但求解过程中也存在舍入误差和数据在运算中形成的矩阵奇异,从而所得结果可能不准确。

心得体会:在日常的工作和学习中,我们不时会遇到各方面的数据问题,然而不是所有的数据都是有用的,此时必须对所给数据适当的进行处理和筛选,以使达到预期的目的,在这个过程中采用曲线拟合不失为一种可取的方法,当让这也是曲线拟合相关应用所在,值得注意的是曲线拟合的最小二乘法并不局限,因
此对曲线拟合知识的掌握、对最小二乘法的研究与运用是值得学习的。

五、参考文献
[1].杜廷松 .数值分析及实验 [M].北京:科学出版社,2012.
[2].熊庆如 .MATLAB基础与应用 [M].北京:机械工业出版社,2014.
六、附录程序
M文件:
function [a,w]=ff(x,y,m)
n=length(x); %计算出x的长度
d=0;
t=zeros(1,m+1); %将t赋为1行m+1列的零矩阵
b=zeros(n,m+1); %将b赋为n行m+1列的零矩阵
for k=1:m+1
b(:,k)=x'.^(k-1); %将转置后的矩阵b内元素的(k-1)
end 幂赋为矩阵的第k列的元素
s=b'*b; %利用矩阵b,计算出s=错误!未找到引用源。

t=b'*y'; %利用矩阵b,计算出t=错误!未找到引用源。

a=(inv(s)*t)'; %利用错误!未找到引用源。

计算出系数错误!未找到引用源。

f=zeros(1,n); %将f赋为1行n列的零矩阵
for i=0:1:m
e=a(i+1)*(x.^i);
f=e+f; %计算出x在所求拟合函数的值
end
for i=1:n
g=(f(i)-y(i))^2;
d=g+d; %计算出错误!未找到引用源。

end
w=sqrt(d); %计算出误差错误!未找到引用源。

命令行:
程序1:>> x=[1 3 4 5 6 7 8 9 10];
>>y=[10 5 4 2 1 1 2 3 4];
>>plot(x,y,'o')
>> m=2;
>> [a,w]=ff(x,y,m)
a =
13.4597 -3.6053 0.2676
w =
1.0056
程序2:
>>x=0.1:0.1:1;
>> y=[2.74 4.50 5.35 5.65 5.90 6.10 6.26 6.39 6.50 6.59];
>> plot(x,y,'o')
>> f=x.*y;
>> [a,w]=ff(x,f,1)
a =
-0.5119 7.0367 w =
0.1431
>> d=7.0367-0.5119./x; >> plot(x,y,'o',x,d)。

相关主题