对称矩阵的逆在Julia中是不对称的

时间:2018-04-03 02:52:32

标签: matrix julia linear-algebra

我正在使用Julia版本0.6.2,我正面临这个问题。

mat = zeros(6, 6)
for i = 1 : 6
    for j = 1 : 6
        mat[i, j] = exp(-(i - j)^2)
    end
end
issymmetric(mat)
issymmetric(inv(mat))

输出

Main> issymmetric(mat)
true
Main> issymmetric(inv(mat))
false

我还尝试了以下Matlab代码

mat = zeros(6, 6);
for i = 1 : 6
    for j = 1 : 6
        mat(i, j) = exp(-(i - j)^2);
    end
end
issymmetric(mat)
issymmetric(inv(mat))

输出

logical 1
logical 1

1 个答案:

答案 0 :(得分:4)

除了手动使矩阵对称,如你所建议的,例如取矩阵的平均值及其转置如

A = inv(mat)
(A+A.')/2

可能是一种更清洁的方式

smat = Symmetric(mat)
B = inv(smat)

现在B(以及smat)传递issymmetric。此外,在类型级别(Symmetric)上确保了它是对称的这一事实 - 某些功能可能会利用这些附加信息。这正是invsmat所做的。

编辑:问题也发布在Discourse上,您可以在其中找到有关Symmetric效果的其他讨论。