Agn*_*kas 8 php math sum inverse
最近我偶然发现了问题,Wolfram表示和不同,但Mathematica给出了一个数值.它说它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";
}
}
Run Code Online (Sandbox Code Playgroud)
我的算法计算了答案,直到5.866然后发生了两件事之一:
这发生在大约3400万次迭代之后.
后来我检查了CPU负载在计算更多系列术语方面的变化情况.
现在,有趣的部分:在大约2200万次迭代中,核心显示难以在它们之间切换任务:

后来,在大约3300万次迭代中,核心达到了不可逆转的地步 - 他们拒绝工作:

问题是 - 和5.866计算机崩溃的总和有什么特别之处? - 鉴于迭代次数N非常大(仅为3400万),第N项也非常小(仅为1.7E-9),所以没有理由存在奇点.
只是猜测,但听起来计算机内存不足。您的脚本没有显式分配任何内存,但也许您的 PHP 版本有错误并且以某种方式泄漏内存。
如果可用内存耗尽,这确实可能导致正在运行的操作系统崩溃,或者提示它终止脚本以保护自身。
如果系统开始大量使用交换空间来进行补偿,那么您的脚本会暂时停止,从而导致您观察到的 CPU 图表出现波动。
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |