繁体   English   中英

对称矩阵不对称

[英]Symmetric matrix is not symmetric

我最近为有限元方法编写了代码。 由于我的算法正在生成对称矩阵,因此在为每个元素收集数据之后,所得矩阵应该是对称的。

但是,在对元素运行循环后,生成的全局矩阵不对称。 基本代码结构如下:

A=zeros(dof,dof)

for (each element)
    loc_A = v'*(diagonal matrix)*v
         % (v is 1xN row vector)
         % loc_A is symmetric matrix

    A(K,K) = A(K,K)+loc_A
                 % (K is Nx1 column vector)
end

由于我添加了对称矩阵,因此生成的矩阵也应该是对称的。

但是,所得矩阵不是对称的(我用issymmetric(A)对其进行了检查)。 我认为这是由于舍入错误。 如果我加A =(A + A')/ 2,则所得矩阵是对称的(当然...)。 但是我不想这样做。 是否有其他补救措施可以自然地使A对称而不进行任何后处理?

这是由于舍入错误(除非您的代码中有明显的错误)。 通常可以通过A = (A+A')/2解决此问题(这不是昂贵的操作),或者您可以告诉求解器您的全局矩阵是对称的(某些求解器(例如MUMPS)具有这种选择)。

暂无
暂无

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

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