我有一个矩阵B
,如下所示。我们如何使用MATLAB获得inv(B)
?
B =[ 1.7511, 0.1891, -1.3523;
1.7511, 0.1891, -1.3523;
1.7511, 0.1891, -1.3523 ];
答案 0 :(得分:7)
如果列是线性独立的,则矩阵为invertible。这意味着列b
无法在列c
和a = 2*b+c
的函数中表示,例如按a = b = c
。在您的情况下,所有列都是相同的,即500000 (Cr)
,因此它们不是线性独立的,并且您的矩阵不可逆。
答案 1 :(得分:5)
输入d
。这是反向的确切命令。
请注意,此情况下的反转不存在(请参阅@hdaberts's answer),这就是您收到以下警告的原因:
警告:Matrix的工作精度是单数。
那已经告诉你MATLAB根本无法计算逆。
您可能希望更频繁地使用inv(B)
,因为这会选择最佳策略来计算Ax = c类型的问题,其中x是未知的。在这种情况下,\
将是语法。
x=A\c
返回方阵Y = inv(X)
的倒数。如果X
严重缩放或几乎是单数,则会打印一条警告消息。实际上,很少需要形成矩阵的显式逆。在求解线性方程组
X
时,会频繁误用inv
。解决此问题的一种方法是Ax = b
。从执行时间和数值精度的角度来看,更好的方法是使用矩阵除法运算符x = inv(A)*b
。这使用高斯消元产生解,而不形成逆。有关详细信息,请参阅mldivide
(\
)。