
线性拟合公式
-
2023年2月27日发(作者:明清北京城)线性代数最小二乘法线性拟合
1
《线性代数》
最小二乘法线性拟合:
我们知道,用作图法求出直线的斜率a和截据b,可以确定这条直线所对应
的经验公式,但用作图法拟合直线时,由于作图连线有较大的随意性,尤其在测
量数据比较分散时,对同一组测量数据,不同的人去处理,所得结果有差异,因
此是一种粗略的数据处理方法,求出的a和b误差较大。用最小二乘法拟合直线
处理数据时,任何人去处理同一组数据,只要处理过程没有错误,得到的斜率a
和截据b是唯一的。
最小二乘法就是将一组符合Y=a+bX关系的测量数据,用计算的方法求出最
佳的a和b。显然,关键是如何求出最佳的a和b。
弹簧长度与受力大小关系
已知在不同的力F下,测定弹簧的长度
l
如下表所示:
i12345678
F/
N
12345678
L/
cm
3.494.154.625.225.776.127.327.83
解(1)在MATLAB工作窗口输入程序:
>>clc,clear;
F=[12345678];
L=[3.494.154.625.225.776.127.327.83];
plot(F,L,'m');
gridon;
xlabel('F/N');
ylabel('L/cm');
title('F-LLinechart');
legend('F-L');
运行后屏幕显示
线性代数最小二乘法线性拟合
2
图1T-LLineChart
(2)由折线图可知,弹簧的长度
l
随力F呈线性变化,设L=aF+b,用最小二乘
法给出参数
a
和
b
的最小二乘估计值。
编写下列MATLAB程序计算
)(xf
在
),(
ii
yx
处的函数值,即输入程序
>>symsab
F=[12345678];
fi=a.*F+b;
编写构造误差平方和的MATLAB程序
>>L=[3.494.154.625.225.776.127.327.83];
fy=fi-L;fy2=fy.^2;J=sum(fy.^2)
运行后屏幕显示误差平方和如下
J=
(a+b-349/100)^2+(2*a+b-83/20)^2+(3*a+b-231/50)^2+(4*a+b-261/50)^2+(5*
a+b-577/100)^2+(6*a+b-153/25)^2+(7*a+b-183/25)^2+(8*a+b-783/100)^2
为求a,b使
J
达到最小,只需利用极值的必要条件
0
J
m
(,)mab
,得到
关于
,ab
的线性方程组,这可以由下面的MATLAB程序完成,即输入程序
>>symsab
J=(a+b-349/100)^2+(2*a+b-83/20)^2+(3*a+b-231/50)^2+(4*a+b-261/50)
线性代数最小二乘法线性拟合
3
^2+(5*a+b-577/100)^2+(6*a+b-153/25)^2+(7*a+b-183/25)^2+(8*a+b-783/100
)^2
Ja=diff(J,a);
Jb=diff(J,b);
Ja1=simple(Ja),Jb1=simple(Jb),
运行后屏幕显示J分别对a,b的偏导数如下:
Ja1=408*a+72*b-11299/25
Jb1=72*a+16*b-2226/25
解线性方程组Ja1=0,Jb1=0输入下列程序:
A=[40872;7216];B=[11299/252226/25];
C=B/A,f=poly2sym(C)
运行后屏幕显示拟合函数f及其系数C如下:
C=0.61052.8179
f=641/1050*x+789/280
故所求的拟合曲线为:
f=0.6105x+2.8179
编写下面的MATLAB程序估计其误差,并作出拟合曲线和数据的图形.输入程
序:
>>F=[12345678];
L=[3.494.154.625.225.776.127.327.83];
n=length(F);
f=0.6105.*F+2.8179;
x=1:1:8;
plot(x,f,'b',F,L,'m');
gridon;
fL=abs(f-L);fL2=fL.^2;
Ew=max(fL),
E1=sum(fL)/n,
E2=sqrt((sum(fL2))/n),
xlabel('F/N');
ylabel('L/cm');
title('F-LLinechart');
legend('L=aF+b','F-L');
运行后屏幕显示数据
),(
ii
yx
与拟合函数f的最大误差Ew,平均误差E1和均
线性代数最小二乘法线性拟合
4
方根误差E2及其数据点
),(
ii
yx
和拟合曲线y=f(x)的图形:
Ew=0.3609E1=0.1325E2=0.1687
图2折线图与直线图对比
所以由上可知
a=0.6105,b=2.8179
所以L与F的线性关系式为:l=0.6105F+2.8179。