我最近为有限元方法编写了代码。由于我的算法正在生成一个对称矩阵,因此在为每个元素收集数据后,生成的矩阵应该是对称的。
但是,在我对元素运行循环之后,生成的全局矩阵不是对称的。基本的代码结构是这样的:
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
自然对称而无需任何后处理?