【发布时间】:2017-08-31 21:13:25
【问题描述】:
在我之前在这里提出的问题中: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
但是对于一个更大的矩阵,比如 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 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。
【问题讨论】:
-
操作
T = A.*I完全对角化T,因为所有元素对角线之外的元素都是0作为标识;这是错误的T。现在如果你要做T = A*I,那很好,因为它什么都不做(因为矩阵乘以I就像标量乘以1),但它不能解决构造A. -
看看我的编辑。您实际上是在寻找
ctranpose而不是inv?
标签: matlab math matrix inverse