记一笔牛顿迭代求平方根与立方根
作者:互联网
假设现在所求为平方根,即函数 x^2 = input 的解,即 x^2 - input = 0 的解.
令 f(x) = x^2 - input
牛顿迭代公式:
即假设 X_n 为函数 f(x) 的第 n 次解,那么第 n + 1 次解就是 X_n - f(X_n) / f'(X_n)
其中 f'(x) 是 f(x) 的导函数.
当 abs(X_(n + 1) - X_n) < eps 时,X_(n + 1) 符合要求精度,即 X_(n + 1) 的平方在要求精度内满足 X_(n + 1) 的平方等于 input
求立方根是同理的,即 f(x) = x^3 - input.
//迭代法求立方根 public double getCube(double input){ double x = 1; double x1 = x - (x*x*x - input) / (3*x*x); while(x - x1 >0.000000001 || x - x1 < -0.000000001){ //判断精度 x = x1; x1 = x - (x*x*x - input) / (3*x*x); } return x1; } //迭代法求平方根 public double getSqrt(double input){ double x = 1; double x1 = x - (x*x - input)/(2*x); while(x - x1 > 0.00000001 || x - x1 < -0.00000001){ x = x1; x1 = x - (x*x - input)/(2*x); } return x1; }
标签:迭代,double,立方根,input,平方根,x1,迭代法 来源: https://www.cnblogs.com/rookie-acmer/p/15317574.html