奇异系数矩阵
如果方阵 A 不包含线性无关的列,则该矩阵为奇异矩阵。如果 A 为奇异矩阵,则 Ax = b 的解将不存在或不唯一。如果 A 接近奇异或检测到完全奇异性,则反斜杠运算符 A\b 会发出警告。
如果 A 为奇异矩阵并且 Ax = b 具有解,可以通过键入以下内容求不是唯一的特定解
P = pinv(A)*b
pinv(A) 是 A 的伪逆。如果 Ax = b 没有精确解,则 pinv(A) 将返回最小二乘解。
例如:
A = [ 1 3 7
-1 4 4
1 10 18 ]
为奇异矩阵,可以通过键入以下内容进行验证:
rank(A)
ans =
2
由于 A 不是满秩,它有一些等于零的奇异值。
精确解。对于 b =[5;2;12],方程 Ax = b 具有精确解,给定
pinv(A)*b
ans =
0.3850
-0.1103
0.7066
通过键入以下内容验证 pinv(A)*b 是否为精确解
A*pinv(A)*b
ans =
5.0000
2.0000
12.0000
最小二乘解。但是,如果 b =
[3;6;0],则 Ax = b 没有精确解。在这种情况下,pinv(A)*b 会返回最小二乘解。键入
A*pinv(A)*b
ans =
-1.0000
4.0000
2.0000
则不会返回原始向量 b。
通过得到增广矩阵 [A
b] 的简化行阶梯形式,可以确定 Ax = b 是否具有精确解。为此,对于此示例请输入
rref([A b])
ans =
1.0000 0 2.2857 0
0 1.0000 1.5714 0
0 0 0 1.0000
由于最下面一行全部为零(最后一项除外),因此该方程无解。在这种情况下,pinv(A) 会返回最小二乘解。