涉及逆运算的矩阵乘法:取无穷大
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.*I
与 I = 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。
您的问题与您想象的略有不同。图像中矩阵中的符号(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(:)))
首先你应该知道,你是否应该做
T = A.*eye(...)
或
I = A.*1 %// which actually does nothing
这些是完全不同的东西。确定自己需要什么,再想代码。
之所以得到全部 inf
是因为矩阵的行列式 det
是 零.
det(T) == 0
所以从数学的角度来看,您的结果是正确的,因为构建逆函数需要 T
的每个元素除以 det(T)
。您的矩阵无法反转。如果可能的话,错误在你的输入矩阵中,或者在你对要解决的实际潜在问题的理解中。
编辑
我之前在这里问的问题:
我想知道如何进行逆运算
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.*I
与 I = 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。
您的问题与您想象的略有不同。图像中矩阵中的符号(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(:)))
首先你应该知道,你是否应该做
T = A.*eye(...)
或
I = A.*1 %// which actually does nothing
这些是完全不同的东西。确定自己需要什么,再想代码。
之所以得到全部 inf
是因为矩阵的行列式 det
是 零.
det(T) == 0
所以从数学的角度来看,您的结果是正确的,因为构建逆函数需要 T
的每个元素除以 det(T)
。您的矩阵无法反转。如果可能的话,错误在你的输入矩阵中,或者在你对要解决的实际潜在问题的理解中。