牛顿迭代
具体说明,请参见维基百科 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和精度影响。
迭代的次数是非常小的相对(二分法),(精度乘法)
版权声明:本文博主原创文章,博客,未经同意不得转载。