如何通过计算 javascript 上的下一个 Xi 项来找到平方根 n
How find square root n by computing the next Xi term on javascript
使用下一个数值方法编写函数 sqrt(A) 计算正实数的平方根 xi+1 = (1/2) * (xi +(A/xi))。其中A——输入的里亚号;
在零次迭代中,下一个语句被采用:x0 = A;
误差至少应为 10^-6
看来您的要求不仅仅是求一个数的平方根。如果有任何机会这是您的要求,请使用 Math.sqrt.
如果您的要求是为了教育目的实现一个求平方根的函数,您需要编写一个递归函数,如下所示。根据需要修改代码以支持 error at 10^-6
function sqrt(A, i = 0) {
if (i === 0)
return A;
let prev = sqrt(A, i - 1);
return 0.5 * (prev + (A / prev));
}
console.log(sqrt(2,1000));
console.log(sqrt(3,1000));
console.log(sqrt(9,1000));
console.log(sqrt(25,1000));
您可以取最后一个值 xi-1 并将其与新值 xi 进行比较,而不是使用循环计数器.
function sqrt(a, x = 1) { // take 1 for x(0) as start value for recursion
var y = (x + a / x) / 2; // prepare next value x(i+1)
if (x === y) { // exit condition
return x;
}
return sqrt(a, y); // tail call optimization
} //
console.log(sqrt(2));
console.log(sqrt(10));
console.log(sqrt(9));
console.log(sqrt(25));
使用下一个数值方法编写函数 sqrt(A) 计算正实数的平方根 xi+1 = (1/2) * (xi +(A/xi))。其中A——输入的里亚号; 在零次迭代中,下一个语句被采用:x0 = A; 误差至少应为 10^-6
看来您的要求不仅仅是求一个数的平方根。如果有任何机会这是您的要求,请使用 Math.sqrt.
如果您的要求是为了教育目的实现一个求平方根的函数,您需要编写一个递归函数,如下所示。根据需要修改代码以支持 error at 10^-6
function sqrt(A, i = 0) {
if (i === 0)
return A;
let prev = sqrt(A, i - 1);
return 0.5 * (prev + (A / prev));
}
console.log(sqrt(2,1000));
console.log(sqrt(3,1000));
console.log(sqrt(9,1000));
console.log(sqrt(25,1000));
您可以取最后一个值 xi-1 并将其与新值 xi 进行比较,而不是使用循环计数器.
function sqrt(a, x = 1) { // take 1 for x(0) as start value for recursion
var y = (x + a / x) / 2; // prepare next value x(i+1)
if (x === y) { // exit condition
return x;
}
return sqrt(a, y); // tail call optimization
} //
console.log(sqrt(2));
console.log(sqrt(10));
console.log(sqrt(9));
console.log(sqrt(25));