我正在使用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
答案 0 :(得分:4)
除了手动使矩阵对称,如你所建议的,例如取矩阵的平均值及其转置如
A = inv(mat)
(A+A.')/2
可能是一种更清洁的方式
smat = Symmetric(mat)
B = inv(smat)
现在B
(以及smat
)传递issymmetric
。此外,在类型级别(Symmetric
)上确保了它是对称的这一事实 - 某些功能可能会利用这些附加信息。这正是inv
对smat
所做的。
编辑:问题也发布在Discourse上,您可以在其中找到有关Symmetric
效果的其他讨论。