定义
对于线性方程组,A是系数矩阵,x是未知向量,b是常数向量。
如果A的秩小于列数,方程组可能没有精确解。在这种情况下,我们希望找到一个向量x,使得2范数最小。
最小范数解可以通过最小二乘法求解,最小二乘法的目标是最小化残差向量的范数。最小二乘法的数学表达式是:,可以通过求解正规方程组 $来得到
python实现
检验系数矩阵的秩
A = np.array([ [3,1,1,1,1,-1],
[1,3,1,1,-1,1],
[1,-1,3,1,1,1],
[-1,1,1,3,1,1],
[1,1,-1,1,3,1],
[1,1,1,-1,1,3]],dtype=int)
b = np.array([1,1,1,1,1,1])
np.linalg.matrix_rank(A)
该矩阵的秩rank= 5,
np.linalg.lstsq(A, b, rcond=None)
返回结果:
-
第一个元素
array([0.16666667, 0.16666667, 0.16666667, 0.16666667, 0.16666667, 0.16666667])
是最小范数解,它是使得 的一个近似解,以使得 最小。 -
第二个元素
array([], dtype=float64)
是一个空的数组,这表示残差向量的平方和。 -
第三个元素
5
是矩阵的秩,这是用于估计最小二乘问题的自由度。 -
第四个元素
array([6.00000000e+00, 3.46410162e+00, 3.46410162e+00, 3.46410162e+00, 3.46410162e+00, 2.00695761e-16])
是奇异值分解的奇异值数组,它可以用来判断矩阵的秩和可逆性。