最小二乘法求解矛盾方程组
由线性代数理论可知,在求解线性方程组时,当方程式得个数多于未知数的个数时,方程组往往无解,此类方程组称为矛盾方程组(也叫超定方程组)
最小二乘法是用来求解矛盾方程组的一个常用方法。 设有矛盾方程组如下:
可写为:
此时为了找到合适的近似解答,定义方程的偏差:
进一步定义二范数偏差:
在这里,如果的取值使得
最小,则其为矛盾方程组的最优近似解答
求解格式的推导
二次函数Q取极值的必要条件:
对
这里注意后面对求和循序进行了更改
极值条件可写为:
记
矛盾方程(1)写为:
(6)可写为:
求解上式即得
算例
求解下列方程组:
利用python编写求解程序:
import numpy as np
A = np.array([
[1,-1],
[-1,1],
[2,-2],
[-3,1]
]) ## 系数矩阵
b = np.array([1,2,3,4]).reshape((-1,1))##reshape((-1,1))就是用来转置b的
ATA = np.dot(A.T,A)
ATb = np.dot(A.T,b)
X = np.linalg.solve(ATA,ATb)
print(X)
结果为: