gpt4 book ai didi

php - 为什么计算 1/(n * log(n) - n) 会破坏计算机?

转载 作者:可可西里 更新时间:2023-11-01 12:38:33 25 4
gpt4 key购买 nike

最近我偶然发现了这个问题Wolfram says sum diverges, but Mathematica gives a numerical value .它表示 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 的答案,然后发生了以下两种情况之一:

  1. 要么 Ubuntu 崩溃了/死机了
  2. 或者 Linux 终止了我的计算脚本进程

这是在大约 3400 万次迭代后发生的。

后来我检查了 CPU 负载如何随着计算更多级数项而变化。

现在,有趣的部分:在大约 2200 万次迭代中,内核显示出在它们之间切换任务的困难: enter image description here

后来,在大约 3300 万次迭代中,内核达到了不可挽回的地步——它们根本拒绝工作: enter image description here

问题是 - sum 5.866 有什么特别之处以至于它会导致计算机崩溃? - 考虑到迭代次数 N 都不是很大(只有 3400 万) ),第 N 项也不是很小(只有 1.7E-9)——所以没有理由出现奇点。

最佳答案

只是猜测,但听起来计算机内存不足。您的脚本没有显式分配任何内存,但您的 PHP 版本可能存在错误并且以某种方式泄漏内存。

如果可用内存耗尽,那确实可能导致正在运行的操作系统崩溃,或提示它终止您的脚本以保护自己。

如果系统开始大量使用交换空间进行补偿,那会暂时停止您的脚本,导致您观察到的 CPU 图表出现波动。

关于php - 为什么计算 1/(n * log(n) - n) 会破坏计算机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53162418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com