【问题标题】:Translating math to JavaScript; convergent/divergent series将数学转换为 JavaScript;收敛/发散级数
【发布时间】:2021-03-12 20:22:30
【问题描述】:

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

我的代码如下:

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 步:

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

更新

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

【问题讨论】:

  • 您将系列推入数组,而不是将它们加在一起。
  • 如果将所有数组元素相加,您将得到接近 1 的结果。
  • 您没有在 JS 代码中进行求和。
  • 如果你的循环从 0 开始,第一项是0 / 0,也就是NaN
  • 根据wolfram,系列分歧(顺便说一句,这也是我在javascript中看到的)。您似乎在绘制单个术语,而不是总和。

标签: javascript math series convergence


【解决方案1】:

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

您还需要从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。

【讨论】:

  • 对,他试图证明的猜想显然是错误的。
  • 每一项都是正数,所以当你看到部分和大于一的时候,它不可能是真的。
  • 正确,系列在 4 步处达到 1,然后从那里发散。
  • 换句话说,对于小的无穷大值,它会收敛到 1。
猜你喜欢
  • 2016-01-19
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
  • 2017-05-21
相关资源
最近更新 更多