1,牛顿迭代法
牛顿法的作用是使用迭代的方法来求解函数方程的根。简单地说,牛顿法就是不断求取切线的过程。
他可以快速求出平方根的近似值。
例如,我们想求n的平方根(n>0),他的标准值是x.
f(x)=x^2-n 就是这个函数与x轴交点出的正值就是所求x。
首先随便猜一个近似值x,然后不断令x等于x和a/x的平均数,迭代个六七次后x的值就已经相当精确了。
我们不断用过一个点的切线与x轴相交的点来逼近真实值就好了。例如我们假设x0,那么就有一点(x0,f(x0))在这条曲线上,切线的斜率为2*x0.我们很容易求出这条切线与x轴的交点坐标((n+x0^2)/(2*x0),0)
得出下一个逼近值是(x0+n/x0)/2,继续带入逼近多次即可。
但是,有可能会遇到牛顿迭代法无法收敛的情况。比如函数有多个零点,或者函数不连续的时候。
double sqrt1(int n)
{
if(n<=0) return -1;
double res=1;
while(res*res-n>1e-9||res*res-n<-1e-9)
{
res=(res+n/res)/2;
}
return res;
}