Matrix 用特征值法求解稀疏矩阵

Matrix 用特征值法求解稀疏矩阵,matrix,constraints,sparse-matrix,eigen,particle-system,Matrix,Constraints,Sparse Matrix,Eigen,Particle System,我在纸上写一个基于约束的粒子系统。约束C的雅可比矩阵随着系统中粒子的数量和约束的数量而缩放。由于每个约束通常只有几个依赖于它的粒子,因此矩阵将非常稀疏。我认为在Eigen中使用稀疏矩阵来求解系统可能是有益的。根据,似乎有几种不同的方法来解决这些稀疏矩阵方程。我的问题是: 这些矩阵的大小首先需要使用Space矩阵吗?我需要存储雅可比矩阵及其时间导数。每个都是Mx3N矩阵,其中M是约束数,N是粒子数。我的粒子系统的用户可以在合理范围内添加任意数量的粒子 是密集矩阵上稀疏矩阵表示的论点,更重要的是性能

我在纸上写一个基于约束的粒子系统。约束C的雅可比矩阵随着系统中粒子的数量和约束的数量而缩放。由于每个约束通常只有几个依赖于它的粒子,因此矩阵将非常稀疏。我认为在Eigen中使用稀疏矩阵来求解系统可能是有益的。根据,似乎有几种不同的方法来解决这些稀疏矩阵方程。我的问题是:

  • 这些矩阵的大小首先需要使用Space矩阵吗?我需要存储雅可比矩阵及其时间导数。每个都是Mx3N矩阵,其中M是约束数,N是粒子数。我的粒子系统的用户可以在合理范围内添加任意数量的粒子
  • 是密集矩阵上稀疏矩阵表示的论点,更重要的是性能或内存消耗。稀疏矩阵能比密集矩阵更快地求解吗?这取决于什么
  • 我对这些解算器实现了解不多。我对这些算法没有太多的研究,尤其是在稀疏矩阵方程的背景下。这些算法的性能如何?我应该选择哪一种?我记得几年前在我的线性代数课上学习过其中的一些,我相信其中很多是O(n^3),这对于本文所描述的系统来说似乎不太合适

  • 如果N小于1000,则可以使用密集存储,否则最好使用稀疏表示。每行非零的数量应该非常小,比如说大约10个,不超过100个,以保持解算器的效率。稀疏解算器的复杂度实际上小于O(N*K),其中K是非零的数目。因此,对于非常稀疏的矩阵,它们可以比密集解算器快几个数量级