比二分更快的方法
如果要求一个高次方程的根,我们可以用二分法来做,这是最基础的方法了。但是有没有更好更快的方法呢?
我们先来考察一个方程f(x)的在点a的泰勒展开,展开到一阶就可以了(假设f(x)在点a可以泰勒展开,也就是泰勒展开的那个余项在n趋于无穷时趋于0)
f(x) -> f(a) + (x - a)f'(a)
现在我们令这个一阶展开为0,当f'(a)是非0值,移项一下就有
x = a - f(a)/f'(a)
实际上当我们把f(a)改成f(x) - f(a),这就是一个过了f(a)的关于f(x)的切线方程,如果我们令f(x) = 0就可以得到这条切线在x轴上的交点了。
重复这个过程,我们就可以得到逼近我们所想要的答案的解了。这就是牛顿迭代法的原理。
如上图,当我们求f[x] = x^2 - 2这个方程的根时,我们可以先猜这个解是4,然后在(4,f(4))这个点上做切线交x轴零点9/4,然后我们继续在9/4这个点做切线,继续逼近。