1

const x = new Array(3).fill(0)
const x0 = new Array(3).fill(0)
const er = new Array(3).fill(0)
const C = [1, 1, 1];
for (let j = 0; j < 1000; j++) {
    for (let i = 0; i < C.length; i++) {
        x[i] = C[i] + 1 / x0[i];
        er[i] = Math.abs(x0[i] - x[i])/x0[i];
        x0[i] = x[i];
        if (er[i] < 0.0001){
            break;
        }
    }
}

console.log("x", x, "er", er)

我的目标是使用定点迭代方法求解一维数组 x,并在每个解决方案收敛在 0.0001 容差误差内时插入一个断点。不幸的是,当第一个元素达到所需的收敛误差限制时,它会中断循环,而其他解决方案尚未达到。

在这种情况下,有没有更好的方法来实现中断?如果我不包括 break 并且解决方案如下所示(请注意我已将参数 C 设置为相同的值,以便更好地看到这个问题的症结所在)。

const x = new Array(3).fill(0)
const x0 = new Array(3).fill(0)
const er = new Array(3).fill(0)
const C = [1, 1, 1];
for (let j = 0; j < 1000; j++) {
    for (let i = 0; i < C.length; i++) {
        x[i] = C[i] + 1 / x0[i];
        er[i] = Math.abs(x0[i] - x[i])/x0[i];
        x0[i] = x[i];
    }
}

console.log("x", x, "er", er)

4

0 回答 0