涉及逆运算的矩阵的乘法:得到无穷大

时间:2017-04-06 03:13:24

标签: matlab math matrix inverse

在我之前提出的问题中:Matlab: How to compute the inverse of a matrix

我想知道如何执行逆操作

A = [1/2, (1j/2), 0;
     1/2, (-1j/2), 0;
     0,0,1]

 T = A.*1

 Tinv = inv(T)

输出为Tinv =

   1.0000             1.0000                  0          
        0 - 1.0000i        0 + 1.0000i        0          
        0                  0             1.0000 

与第二张图片中的相同。第一张图片是矩阵A

T

T inverse

然而,对于更大的矩阵说5乘5,如果我不使用身份,I来执行元素乘法,我得到无穷大值。这是一个例子

A = [1/2, (1j/2),  1/2, (1j/2),  0;
     1/2, (-1j/2), 1/2, (-1j/2), 0;
     1/2, (1j/2),  1/2, (1j/2),  0;
     1/2, (-1j/2), 1/2, (-1j/2), 0;
     0,    0 ,     0 ,  0,      1.00
          ];

T = A.*1

Tinv = inv(T)
Tinv =

   Inf   Inf   Inf   Inf   Inf
   Inf   Inf   Inf   Inf   Inf
   Inf   Inf   Inf   Inf   Inf
   Inf   Inf   Inf   Inf   Inf
   Inf   Inf   Inf   Inf   Inf

所以,我试图将T = A.*I乘以I = eye(5),然后取反向事件,我没有获得无穷大值,我得到的元素2不存在3×3矩阵情况的图片。结果如下

Tinv =

   2.0000                  0                  0                  0                  0          
        0                  0 + 2.0000i        0                  0                  0          
        0                  0             2.0000                  0                  0          
        0                  0                  0                  0 + 2.0000i        0          
        0                  0                  0                  0             1.0000    

如果对于3乘3矩阵的情况,我使用I = eye(3),然后再次得到元素2.

Tinv =

   2.0000                  0                  0          
        0                  0 + 2.0000i        0          
        0                  0             1.0000 

适当的方法是什么?

问题:对于一般情况,对于任何大小的矩阵m by m,我应该使用I = eye(m)进行乘法运算吗?使用I可以阻止无穷大值,但会生成新的数字2。我真的很困惑。请帮忙

UPDATE:这里是完整的图像,其中Theta是3个未知数的向量,即Theta1,Theta1 *和Theta2是3个标量值参数。 Theta1是一个复数值,因此我们将它分为两​​部分,Theta1和Theta1 *,Theta2是一个实数值。 g是复值函数。相对于Theta的复值函数的导数的表达式评估为T ^ H.由于有3个未知数,矩阵T的大小应为3乘3。

pic new

2 个答案:

答案 0 :(得分:2)

你的问题与你的想法略有不同。图像矩阵中的符号( I 0 不一定是标量(仅适用于n = 1),但它们是实际上是方矩阵

I 是一个单位矩阵, 0 是一个零矩阵。如果你像这样对待这些矩阵,你将获得预期的答案:

n = 2; % size of the sub-matrices
I = eye(n); % identity matrix
Z = zeros(n); % matrix of zeros
% your T matrix
T = [1/2*I, (1j/2)*I, Z;
    1/2*I, (-1j/2)*I, Z;
    Z,Z,I];
% inverse of T
Tinv1 = inv(T);
% expected result
Tinv2 = [I,I,Z;
    -1j*I,1j*I,Z;
    Z,Z,I];
% max difference between computed and expected
maxDist = max(abs(Tinv1(:) - Tinv2(:)))

答案 1 :(得分:1)

首先,应该知道,是否应该

T = A.*eye(...)

I = A.*1 %// which actually does nothing

这些是完全不同的东西。确保你需要什么,然后考虑代码。

您获得所有inf的原因是因为矩阵的行列式det

det(T) == 0

因此,从数学角度来看,您的结果是正确的,因为构建反转需要T的每个元素除以det(T)。你的矩阵不能被反转。如果它应该是可能的,那么错误就在您的输入矩阵中,或者在您对要解决的实际基础问题的理解中再次出现。

修改

更新问题后,感觉您实际上正在寻找ctranpose而不是inv