牛顿法(Newton’s method)又称为牛顿-拉弗森方法(Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x)=0的根。

牛顿法的步骤:

  1. 猜方程的解的第一个近似值
  2. 利用公式


从第一次近似求得第二次近似,再从第二次近似求得第三次近似…,迭代下去就可以求出比较精确的值。

例子(求2的平方根)

求方程的正根

解:由于

我们从开始迭代:

1
2
3
4
5
6
x0 = 1
for i in [0..10]
x = x0/2.0 + 1.0/x0
x0 = x

console.log x

求得结果为:

1
2
$ coffee newton.coffee
1.414213562373095

更一般的可以推广到求的值。

1
2
3
4
5
6
7
8
9
10
11
12
nth_root = (a, b) ->
x0 = 1
for i in [0..10]
x = (b-1.0)/b * x0 + a/(b*Math.pow(x0, b-1))
x0 = x
x
# sqrt(3)
console.log nth_root(3, 2)
# output: 1.7320508075688772
# 3^(1/3)
console.log nth_root(3, 3)
# output: 1.4422495703074083