在MATLAB中如何判断大稀疏矩阵是否奇异

在MATLAB中如何判断大稀疏矩阵是否奇异,matlab,sparse-matrix,Matlab,Sparse Matrix,我用有限元法(FEM)来解决一些问题。刚度矩阵K是一个非常大的稀疏矩阵,我想解方程: U(自由自由度,:)=K(自由度,自由度)\F(自由度,:) freedof表示自由节点 有时我会在MATLAB中得到警告,比如 MATLAB:singularMatrix或MATLAB:nearlySingularMatrix 我计算了condest(K(freedofs,freedofs))值,它是Inf,但我仍然得到了U的答案,这很合理,我不知道是否有任何错误?U的答案可信吗如果发现矩阵是奇异的或接近奇异

我用有限元法(FEM)来解决一些问题。刚度矩阵K是一个非常大的稀疏矩阵,我想解方程:

U(自由自由度,:)=K(自由度,自由度)\F(自由度,:)

freedof
表示自由节点

有时我会在MATLAB中得到警告,比如

MATLAB:singularMatrix
MATLAB:nearlySingularMatrix


我计算了condest(K(freedofs,freedofs))值,它是Inf,但我仍然得到了U的答案,这很合理,我不知道是否有任何错误?U的答案可信吗

如果发现矩阵是奇异的或接近奇异的,这很可能意味着你正在使用的力学模型是“松散的”。当应用的边界条件数量不足时,可能会出现这种情况,因此系统是一个机构,因此整体刚度矩阵是奇异的。另一种可能性是,你使用的是一个,比如说,非常薄的板,它的行为更像一个薄膜,没有或几乎没有弯曲阻力;在这种情况下,整体刚度矩阵将是病态的,MATLAB中的线性解算器将检测到它“近似奇异”。您应该确保您的FEA模型不是上述两种情况;否则,您得到的任何数值解都是不可信的,无论它看起来多么合理

你不能相信结果。参见具有奇异矩阵的线性系统