牛顿迭代法
1.假设求x^2=5的解,求解根号5
2.令f(x)=x^2-5,f(x)=0,蓝色点是根的解,红色是我们假设的根的解
3.画出这个二次函数的图像,我们观察函数解的位置
4.我们假设不知道解的位置猜测这个值是x=2,然后在点(2,f(2))处做切线,切线与x轴点交点与我们要求的根的解比较接近了,我们只要重复这个过程就可以得到一个近似解
5.切线的方程是什么呢,求解切线方程,切线方程的通式y-y0=m(x-x0),m是斜率
6.x1是切线在x轴上的截距,那么如何找到x1截距呢,让y=0
0-y0=m(x1-x0),化简-y0/m=x1-x0 -> x1 = x0-y0/m ->y0用f(x)替代,m是斜率用导数替代 x1 = x0 - f(x0)/f'(x0)
7.根据算出来的截距,在点(x1,f(x1))做切线,切线的截距会不断的靠近我们要求的点,也就是利用切线的根来不断逼近要求解曲线的根,重复上面的过程直到收敛
利用牛顿迭代法求解平方根
y = x^2 - 5 = 0
x1 = x0 - y0/f'(x0)
x1 = x0 - x0^2-5/2x0
化简
x1 = (x0 + 5/ x0)/2
function mysqrt(x){
r = x;
while(r * r > x){
r = (r + x / r)/2
}
return r
}
console.log(mysqrt(64))