适定系统

如果矩阵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