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

Multiplication of matrices involving inverse operation: getting infinity

我之前在这里问的问题:

我想知道如何进行逆运算

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

然而,对于更大的矩阵,例如 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.*II = eye(5) 相乘,然后取反 Eventthough,我没有得到无穷大值,我得到的是 2 中不存在的元素3 x 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 x 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。我真的很困惑。请帮忙

更新: 这是完整图像,其中 Theta 是 3 个未知数的向量,即 Theta1、Theta1* 和 Theta2 是 3 个标量值参数。 Theta1 是一个复数值,所以我们将它表示为两部分,Theta1 和 Theta1*,Theta2 是一个实数值。 g 是复值函数。复值函数关于 Theta 的导数表达式计算为 T^H。因为有 3 个未知数,矩阵 T 的大小应该是 3 x 3。

您的问题与您想象的略有不同。图像中矩阵中的符号(I0不一定是标量(仅用于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(:)))

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

T = A.*eye(...)

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

这些是完全不同的东西。确定自己需要什么,再想代码。


之所以得到全部 inf 是因为矩阵的行列式 det.

det(T) == 0

所以从数学的角度来看,您的结果是正确的,因为构建逆函数需要 T 的每个元素除以 det(T)。您的矩阵无法反转。如果可能的话,错误在你的输入矩阵中,或者在你对要解决的实际潜在问题的理解中。

编辑

你的问题更新后,感觉你真的在找ctranpose instead of inv