如果矩阵A是非奇异的,则解X=A\B的大小与B的大小相同,例如:
在命令窗口中输入
code.matlab
>> A = pascal(3)
A =
1 1 1
1 2 3
1 3 6
>> u = [3; 1; 4];
>> x = A\u
x =
10
-12
5
如果A和B都是适定的,并且大小相等,则解X=A\B的大小与它们的相同,如例1-37所示。
接上例在命令窗口中输入。
code.matlab
>> B = magic(3)
B =
8 1 6
3 5 7
4 9 2
>> X = A\B
X =
19 -3 -1
-17 4 13
6 0 -6
如果矩阵A的列有线性相关关系,则它是奇异矩阵。如果A是奇异的,则矩阵方程AX=B的解可能不存在,或者不唯一。当使用反斜线运算符“\”时,如果A是近于奇异的,则会给出一个警告信息;如果A确实是奇异的,则给出一个出错信息。如果A是奇异的,并且AX=B有解,则通过输入下面的命令行,可以找到多个解:
code.matlab
P=pinv(A)*b
如果AX=B没有精确解,则pinv(A)返回一个最小二乘意义上的解。例如:
code.matlab
>> A = [ 1 3 7
-1 4 4
1 10 18 ]
是奇异的,可以输入下面的命令行进行确认:
code.matlab
>> det(A)
ans =
0
对于b=[5;2;12],方程AX=b有一个精确解,即
code.matlab
>> pinv(A)*b
ans =
0.3850
-0.1103
0.7066
输入下面的命令行,可以确认pinv(A)*b是一个精确解:
code.matlab
>> A*pinv(A)*b
ans =
5.0000
2.0000
12.0000
另一方面,如果b=[3;6;0],则AX=b没有精确解。此时,pinv(A)*b返回一个最小二乘意义上的解,即
code.matlab
>> A*pinv(A)*b
ans =
-1.0000
4.0000
2.0000