最近我遇到了这个问题:Wolfram说总和发散,但Mathematica给出了一个数值。它说
好的。 我认为,让我们试着在PHP脚本中复制该数字(或类似的数字)的系列求和。 我的代码如下:
1/(n * log(n)-n)
不可加和(或者在数学上不收敛)。有趣的是,尽管它“不可加和”,我们仍然可以尝试进行数值计算。Mathematica给出的答案约为6.1
。好的。 我认为,让我们试着在PHP脚本中复制该数字(或类似的数字)的系列求和。 我的代码如下:
$formula = function ($n) {return 1/($n * log($n) - $n);};
$n=2;
$sum=0;
while(true) {
$term_n = $formula($n);
$sum += $term_n;
if ($n++ % 100000 == 0) {
if ($sum > 5.8)
usleep(1000);
echo "n=".number_format($n-1)."; sum={$sum}; error={$term_n}\n";
}
}
我的算法计算到5.866
就出现了两种情况之一:
- Ubuntu崩溃/冻结了
- 或者Linux杀死了我的计算脚本进程
这发生在大约3400万次迭代后。
后来,我检查了CPU负载如何随着计算更多级数而变化。
现在,有趣的部分:
在约2200万次迭代时,核心在彼此之间切换任务时出现了困难:
后来,在约3300万次迭代时,核心达到了无法回头的地步-它们拒绝工作了:
问题是- 为什么和为5.866
会导致电脑崩溃? -考虑到迭代次数N不是很大(只有3400万),第N项也不是很小(只有1.7E-9)-所以没有奇点的原因。
n=1,134,300,000; sum=6.0596079176871; error=4.4414755508302E-11
。它没有崩溃,系统几乎没有变慢。我有4个 CPU。我运行的是 Mint 18.3 (4.15.0-38-generic #41~16.04.1-Ubuntu SMP Wed Oct 10 20:16:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux)。我可以看到很多 CPU 之间的切换,但总平均值没有超过大约60%的总量。至于为什么它在你的系统上这样做,我无法评论。 - Nic3500$formula($n)
替换为同样的内联表达式,并查看您的代码是否继续出错。 - Mike Robinson