繁体   English   中英

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

[英]Multiplication of matrices involving inverse operation: getting infinity

在我之前的问题中,这里问过: Matlab:如何计算矩阵的逆

我想知道如何执行逆运算

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逆

但是,对于更大的矩阵,说5 x 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 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乘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而不是inv

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM