将数学翻译成 JavaScript;收敛/发散级数

问题描述

我正在尝试用 JavaScript 计算以下系列:

enter image description here

我的代码如下:

var res = []
for(var i=0; i<1000; i++) {
    res.push(i / ((i * Math.sqrt(i + 1)) + ((i + 1) * Math.sqrt(i))))
}

但这使得序列可能收敛到 0 而不是接近 1。这是前 150 个步骤:

enter image description here

我从数学到 JavaScript 的翻译有什么问题吗?也许是我的括号?

更新

根据@Barmar 的回答,正确的代码显示仅对于小的无穷大值收敛到 1,在 4 个步骤后发散:

enter image description here

解决方法

您需要将系列的每个元素添加到之前的总和中。

您还需要从 i = 1 开始以避免除以 0。

console.config({
  maxEntries: Infinity
});

var res = [];
var sum = 0;
for (var i = 1; i < 1000; i++) {
  sum += i / ((i * Math.sqrt(i + 1)) + ((i + 1) * Math.sqrt(i)));
  res.push(sum);
}
console.log(res);
.as-console-wrapper {
  max-height: 100% !important;
}

请注意,这表明该系列实际上并未收敛到 1。从您的错误图中也可以看出这一点,因为您可以看到前 5 个元素位于 0.1950.293 之间,这些加起来超过 1。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...