牛顿迭代
详细介绍见维基百科 http://zh.wikipedia.org/wiki/牛顿法
举一个栗子
找平方根
给一个数a,求其平方根。
设其平方根为x 则有 x^2 - a = 0,设函数f(x) = x^2 - a,
取x0的初值尽量靠近a的平方根(因为初值的选择影响迭代的次数)
根据 f(x0) = (x0 - x).f’(x0)
---> x = x0 - f(x0)/f’(x0) ①
---> x0 = x ②
重复①、②直到abs(x-x0)<=eps,达到精度要求即可。
代码:
a = input();
x0 = Init_Value;
While( fabs(x-x0)>eps){
x0 = x;
x = x0 - f(x0)/f’(x0);
}
Eg. a = 2 , eps = 1e-8
X0 = 1.0
迭代过程中x的变化
1.5000000000000000
1.4166666666666667
1.4142156862745099
1.4142135623746899
1.4142135623730951
总的来说
F(x)函数连续,且在零点范围内收敛。
迭代的次数受x0和精度影响。
迭代次数很少相对(二分),(精度倍增)
原文:http://blog.csdn.net/yew1eb/article/details/38728357