小编use*_*507的帖子

如何在Mathematica中有效地初始化这个稀疏数组?

我试图在Mathematica中解决一个相当大的线性规划问题,但由于某种原因,瓶颈是设置线性约束的数组.

我初始化矩阵的代码如下所示:

AbsoluteTiming[S = SparseArray[{{i_, 1} -> iaa[[i]],
    {i_, j_} /; Divisible[a[[j]], aa[[i]]] -> 1.}, {2*n, n}]]
Run Code Online (Sandbox Code Playgroud)

这里n是4455,iaa是实数列表,a,aa是整数列表.我得到的这条线的输出是

{2652.014773,SparseArray[<111742>,{8910,4455}]}
Run Code Online (Sandbox Code Playgroud)

换句话说,初始化此矩阵需要45分钟,即使它只有111,742个非零项.为了比较,实际上解决线性程序只需要17秒.是什么赋予了?

编辑:此外,任何人都可以解释为什么这会占用如此多的内存,因为它运行?因为在用户时间,这个计算花费的时间不到十分钟......大部分计算时间都花费在内存中进行分页.

Mathematica出于某种原因将这个矩阵存储为非稀疏矩阵,而它正在构建它吗?因为那真的很蠢.

wolfram-mathematica sparse-matrix

6
推荐指数
1
解决办法
1532
查看次数

标签 统计

sparse-matrix ×1

wolfram-mathematica ×1