Wolfram mathematica Mathematica自动退出计算
我有一个来自Wolfram示范项目的小程序(链接:) 我想看看如果我将矩阵大小增加到1000甚至更大,会发生什么,但Mathematica拒绝了我。如果我在操纵中做了更改,它只显示“操纵已中止”。如果没有操纵,则退出内核 我不知道我的版本(9.00)是否有问题,或者仅仅因为Mathematica的限制 非常感谢您抽出时间Wolfram mathematica Mathematica自动退出计算,wolfram-mathematica,block,limit,Wolfram Mathematica,Block,Limit,我有一个来自Wolfram示范项目的小程序(链接:) 我想看看如果我将矩阵大小增加到1000甚至更大,会发生什么,但Mathematica拒绝了我。如果我在操纵中做了更改,它只显示“操纵已中止”。如果没有操纵,则退出内核 我不知道我的版本(9.00)是否有问题,或者仅仅因为Mathematica的限制 非常感谢您抽出时间 L = 1000; p1 = 0.6; seed = 2000; perColation[{i_, j_}] := If[1 <= i <= L &
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}]]
L=1000;
p1=0.6;
种子=2000;
渗流=
如果[1听起来这是一个记忆限制问题,类似于我在工业环境中遇到的问题(尽管提供的不同信息可能导致不同的结论)。对于上下文,如果您没有,您可能希望查看Mathematica的以下帖子,或者直接联系他们的团队寻求帮助。正如他们所指出的:
“记忆空间是Mathematica计算中最常见的限制因素。然而,时间也可能是一个限制因素。你通常会准备等待一秒钟,甚至一分钟,以获得计算结果。但你很少准备等待一小时或一天,而且你几乎永远无法等待一年。”
他们还注意到,在行为方面:
如果你的计算机在计算过程中内存不足,大多数版本的Mathematica别无选择,只能立即停止。因此,重要的是计划你的计算,这样他们就永远不需要比你的计算机拥有更多的内存。
这个解释可以解释你的程序在执行过程中自动退出的原因。当L=3003时,我始终看到Win7中的同一个数学内核以8 gig的速度退出,除了MMA和任务管理器正在运行外,其他什么都没有。所使用的总内存在失败之前不会占用所有内存。我建议你非常礼貌地联系Wolfram Suppo与每次失败的代码完全一致。不要告诉他们“我发现了一个bug”或者你会让他们生气,他们可能会否认这一点,并拒绝对此采取任何行动。假设你感到困惑,这似乎很奇怪,因为数学内核消失了,你想知道你是否做错了什么。删除ArrayPlot以使其更简单。最终,这是递归函数的可爱演示,但不是可行的al解决大n问题的算法。你的问题不清楚你是在寻求更好的方法,还是只是想了解内存问题。旁白(与内存问题无关)你不能在中间开始这样——原因是开始像素可能不在连接路径上。在这个例子中,整个顶部/底部行被初始化为1,并且你需要从一端开始。