牛顿迭代法(Newton’s method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。
设 是 的根,选取 作为 的初始近似值,过点 做曲线 的切线 , ,则 与 轴交点的横坐标 ,称 为 的一次近似值。过点 做曲线 的切线,并求该切线与x轴交点的横坐标 ,称 为的二次近似值。重复以上过程,得 的近似值序列,其中, 称为 的 次近似值,上式称为牛顿迭代公式。
//求绝对值
function abs(x) {
return x > 0 ? x : -x;
}
//牛顿迭代法求解算术平方根算法
function sqrt(x) {
if(x == 1)
return 1;
var x0 = 1;
var x1;
var x2 = x0;
var y = x;
//如果误差大于10^-6,就继续进行迭代
while (abs(x2 - y) >= 1e-6) {
//迭代核心公式
x1 = (x0 + x/x0)/2;
x2 = x0;
y = x1;
x0 = x1;
}
return x1;
}
//输出100以内的所有整数的算术平方根
for(var i = 1 ; i < 100 ; i++) {
console.log(i + '的算术平方根的值为'+sqrt(i));
}