【发布时间】:2018-06-21 21:46:19
【问题描述】:
我有一个大型方程组要求解。系数存储在维度为 320001 x 320001 个元素的稀疏矩阵 CM 中,其中 18536032 个非零。结果向量 B 的长度为 320001 个元素。
执行时
I=CM\B
八度音阶错误:SparseMatrix::solve numeric factorization failed
我收到上述错误消息。简要查看源代码并没有给我任何线索。
有谁知道是什么导致了这个错误?
顺便说一句:当使用较小的矩阵(例如 180001x180001)解决相同的问题时,程序运行良好。
约翰内斯
【问题讨论】:
-
是否有一种简单的方法可以提供生成此稀疏矩阵的代码,或者它来自复杂/长代码?
-
矩阵是使用 sparse(row, col, data) 之类的 3 个向量创建的。每个向量的长度为 180001 个元素。
-
我试图减少所需的内存量,因为我看到矩阵包含所有元素的 double 类型。我的想法是,将 int32 用于索引,将 single 用于数据值应该可以节省内存。但是,Octave 似乎不允许混合数据类型。
-
稀疏矩阵不接受不同数据类型是有原因的:stackoverflow.com/questions/30894231/matlab-uint8-sparse
标签: octave