将数学翻译成 JavaScript; convergent/divergent 系列
Translating math to JavaScript; convergent/divergent series
我正在尝试计算 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 步后发散:
您需要将系列的每个元素添加到之前的总和中。
您还需要从 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.195
和 [=14= 之间],这些加起来不止1.
我正在尝试计算 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 步后发散:
您需要将系列的每个元素添加到之前的总和中。
您还需要从 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.195
和 [=14= 之间],这些加起来不止1.