工程数学 计算方法 第四章 插值与曲线拟合方法 最小二乘法
最小二乘法
线性拟合/只含最高次项和常数项的拟合
求曲线拟合时,若:
- 数值点很多;
- yi本身时测量值,不准确
此时没必要拟合使得 P ( x i ) = y i P(x_i)=y_i P(xi)=yi,只需要使 P ( x i ) − y i P(x_i)-y_i P(xi)−yi,尽可能小即可。
如何判断“尽可能小”?如何衡量大小?
类似范数。
无穷范数,求最大值最小:太复杂;
1-范数,绝对值求和:不可导,求解困难;
2-范数,平方和最小,可导,可行。
给定数据点
(
x
i
,
y
i
)
,
i
=
1
,
2
,
.
.
.
,
m
(x_i,y_i),\,i=1,2,...,m
(xi,yi),i=1,2,...,m。设拟合曲线为
p
(
x
)
=
a
+
b
x
n
p(x)=a+bx^n
p(x)=a+bxn,显然
p
(
x
i
)
=
a
+
b
x
i
n
≠
y
i
p(x_i)=a+bx_i^n \neq y_i
p(xi)=a+bxin=yi 。记
e
i
=
p
(
x
i
)
−
y
i
e_i=p(x_i)-y_i
ei=p(xi)−yi 称
e
1
,
e
2
,
.
.
.
,
e
m
e_1,e_2,...,e_m
e1,e2,...,em 为残差。
e
1
,
e
2
,
.
.
.
,
e
m
总
体
最
小
⇔
e
=
(
e
1
,
e
2
,
.
.
.
,
e
m
)
T
的
长
度
最
小
Q
(
a
,
b
)
=
∥
e
∥
2
2
=
e
1
2
+
e
2
2
+
.
.
.
+
e
m
2
=
∑
i
=
1
m
(
p
(
x
i
)
−
y
i
)
2
=
∑
i
=
1
m
(
a
+
b
x
i
n
−
y
i
)
2
=
m
i
n
e_1,e_2,...,e_m总体最小 \Leftrightarrow e=(e_1,e_2,...,e_m)^T的长度最小\\ \begin{aligned} Q(a,b)&=\Vert e\Vert _2^2 \\&=e_1^2+e_2^2+...+e_m^2 \\&=\sum_{i=1}^m(p(x_i)-y_i)^2 \\&=\sum_{i=1}^m(a+bx_i^n-y_i)^2 \\&=min \end{aligned}
e1,e2,...,em总体最小⇔e=(e1,e2,...,em)T的长度最小Q(a,b)=∥e∥22=e12+e22+...+em2=i=1∑m(p(xi)−yi)2=i=1∑m(a+bxin−yi)2=min
求拟合曲线即求min取最小时的(a,b)的值。
求最小:求偏导
{
∂
Q
∂
a
=
0
∂
Q
∂
b
=
0
⟺
{
m
a
+
b
∑
i
=
1
m
x
i
n
=
∑
i
=
1
m
y
i
a
∑
i
=
1
m
x
i
n
+
b
∑
i
=
1
m
x
i
2
n
=
∑
i
=
1
m
x
i
n
y
i
\left\{\begin{aligned} \frac{\partial Q}{\partial a}=0\\\,\\ \frac{\partial Q}{\partial b}=0\\ \end{aligned}\right. \Longleftrightarrow \left\{\begin{aligned} ma+b\sum_{i=1}^mx_i^n&=\sum_{i=1}^my_i\\\,\\ a\sum_{i=1}^mx_i^n+b\sum_{i=1}^mx_i^{2n}&=\sum_{i=1}^mx_i^ny_i \end{aligned}\right.
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧∂a∂Q=0∂b∂Q=0⟺⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧ma+bi=1∑mxinai=1∑mxin+bi=1∑mxi2n=i=1∑myi=i=1∑mxinyi
该方程称为正规方程组(法方程),解方程可得a,b。
注意:
- 正规方程组的解存在且唯一;
- 正规方程组的解时最小二乘拟合问题的解。
二次拟合
设拟合曲线为
p
(
x
)
=
a
0
+
a
i
x
+
a
2
x
2
p(x)=a_0+a_ix+a_2x^2
p(x)=a0+aix+a2x2,求
Q
(
a
0
,
a
1
,
a
2
)
=
∑
i
=
1
m
(
p
(
x
i
)
−
y
i
)
2
=
∑
i
=
1
m
(
a
0
+
a
i
x
i
+
a
2
x
i
2
−
y
i
)
2
=
m
i
n
Q(a_0,a_1,a_2)=\sum_{i=1}^m(p(x_i)-y_i)^2=\sum_{i=1}^m(a_0+a_ix_i+a_2x_i^2-y_i)^2=min
Q(a0,a1,a2)=i=1∑m(p(xi)−yi)2=i=1∑m(a0+aixi+a2xi2−yi)2=min
求偏导解方程即可。可用矩阵的形式写:
(
m
∑
i
=
1
m
x
i
∑
i
=
1
m
x
i
2
∑
i
=
1
m
x
i
∑
i
=
1
m
x
i
2
∑
i
=
1
m
x
i
3
∑
i
=
1
m
x
i
2
∑
i
=
1
m
x
i
3
∑
i
=
1
m
x
i
4
)
(
a
0
a
1
a
2
)
=
(
∑
i
=
1
m
y
i
∑
i
=
1
m
x
i
y
i
∑
i
=
1
m
x
i
2
y
i
)
\left(\begin{matrix} m & \sum_{i=1}^mx_i & \sum_{i=1}^mx_i^2\\ \sum_{i=1}^mx_i & \sum_{i=1}^mx_i^2 & \sum_{i=1}^mx_i^3\\ \sum_{i=1}^mx_i^2 & \sum_{i=1}^mx_i^3 & \sum_{i=1}^mx_i^4\\ \end{matrix}\right) \left(\begin{array}{c} a_0\\a_1\\a_2 \end{array}\right)= \left(\begin{array}{c} \sum_{i=1}^my_i\\ \sum_{i=1}^mx_iy_i\\ \sum_{i=1}^mx_i^2y_i\\ \end{array}\right)
⎝⎛m∑i=1mxi∑i=1mxi2∑i=1mxi∑i=1mxi2∑i=1mxi3∑i=1mxi2∑i=1mxi3∑i=1mxi4⎠⎞⎝⎛a0a1a2⎠⎞=⎝⎛∑i=1myi∑i=1mxiyi∑i=1mxi2yi⎠⎞
应用:解矛盾方程
懒写了。
秩(A,b)不等于秩(A)时方程组无解,称为矛盾方程。
求均方误差 m i n ∥ A x − b ∥ 2 2 min\Vert Ax-b\Vert _2^2 min∥Ax−b∥22极小意义下的解,即最小二乘意义下的矛盾方程的解。
大体就是右边移到左边,左边求平方和为Q,求Q最小时的值。
推导可得法方程为 A T A X = A T b A^TAX=A^Tb ATAX=ATb 。
应试
线性拟合/二次拟合。
eg:给数值点和拟合曲线的形式 p ( x ) = a + b x n p(x)=a+bx^n p(x)=a+bxn,求拟合的a,b:
解题过程:
Q
(
a
,
b
)
=
∑
i
=
1
m
(
p
(
x
i
)
−
y
i
)
2
=
∑
i
=
1
m
(
a
+
b
x
i
n
−
y
i
)
2
Q(a,b)=\sum_{i=1}^m(p(x_i)-y_i)^2=\sum_{i=1}^m(a+bx_i^n-y_i)^2
Q(a,b)=∑i=1m(p(xi)−yi)2=∑i=1m(a+bxin−yi)2, 求偏导解方程。
一般过程写为矩阵形式(其实好像无所谓,我就不会写矩阵形式,写方程形式一样的,反正最后都是要写方差解系数的)。
(拟合二次和常数项,题不抄了,看解题步骤就好)
解:由数据可得法方程为
(
5
5072
5072
6355364
)
(
a
b
)
=
(
271.4
344382.5
)
\left(\begin{array}{c} 5 & 5072\\ 5072& 6355364 \end{array}\right) \left(\begin{array}{c} a\\b \end{array}\right)= \left(\begin{array}{c} 271.4\\344382.5 \end{array}\right)
(5507250726355364)(ab)=(271.4344382.5)
即
{
5
a
+
5072
b
=
271.4
5072
a
+
6355364
b
=
344382.5
\left\{\begin{matrix} 5a+5072b=271.4\\ 5072a+6355364b=344382.5 \end{matrix}\right.
{5a+5072b=271.45072a+6355364b=344382.5
解得
{
a
=
−
3.612
b
=
0.057
\left\{\begin{matrix} a=-3.612\\ b=0.057 \end{matrix}\right.
{a=−3.612b=0.057
所以拟合曲线为
p
(
x
)
=
−
3.612
+
0.057
x
2
p(x)=-3.612+0.057x^2
p(x)=−3.612+0.057x2
其实我也不知道第一步的法方程是怎么得到的,我是直接算出方程之后改写成第一步的形式的,法方程不写也无所谓的,写偏导之后的那个方程组也可以。
最后一步一定要写出拟合曲线的方程,题目是求拟合曲线的,不是解方程的,不写出来要扣分。