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)