我有一个从Wolfram演示项目中采用的小程序(链接在这里:http://demonstrations.wolfram.com/PercolationOnASquareGrid/)。
我想知道如果我将矩阵大小增加到1000甚至更高,会发生什么,但Mathematica会退出我。如果我在Manipulate中进行了更改,它只显示“Manipulate Aborted”。如果没有Manipulate,则退出内核。
如果我的版本(9.00)中出现故障或仅仅是因为Mathematica的限制,我不会这样做......
非常感谢你的时间!!
L = 1000;
p1 = 0.6;
seed = 2000;
perColation[{i_, j_}] :=
If[1 <= i <= L && 1 <= j <= L && a[[i, j]] == 1,
a[[i, j]] = 2;
perColation[{i + 1, j}];
perColation[{i - 1, j}];
perColation[{i, j + 1}];
perColation[{i, j - 1}];
];
SeedRandom[seed];
Block[{a, $RecursionLimit = Infinity},
a = RandomReal[{0, 1}, {L, L}];
For[j = 1, j <= L, j++,
For[i = 1, i <= L, i++,
If[a[[i, j]] < p1,
a[[i, j]] = 1,
a[[i, j]] = 0
]]];
a[[IntegerPart[L/2], IntegerPart[L/2]]] = 1;
perColation[{IntegerPart[L/2], IntegerPart[L/2]}];
ArrayPlot[Transpose[a], ImageSize -> 1000,
ColorRules -> {0 -> White, 1 -> White, 2 -> Red}]]
答案 0 :(得分:1)
听起来这是一个类似于我在工业环境中遇到的内存限制问题(尽管提供的不同信息可能导致不同的结论)。对于上下文,如果您还没有,您可能需要查看来自Mathematica that talks loosely about the limits of Mathematica的以下帖子,或直接联系他们的团队寻求帮助。他们注意到:
&#34;内存空间是Mathematica计算中最常见的限制因素。然而,时间也可能是一个限制因素。您通常会准备等待一秒钟,甚至一分钟,以便计算结果。但是你不会经常做好等待一小时或一天的准备,而且你几乎永远无法等待一年。&#34;
他们还注意到,在行为方面:
&#34;如果您的计算机在计算过程中内存不足,大多数版本的Mathematica别无选择,只能立即停止。因此,计划计算非常重要,这样他们就不需要比计算机更多的内存。&#34;
此解释将说明您的程序在执行期间自动退出。