题目描述
计算一个数字的立方根,不使用库函数详细描述: 接口说明 原型: public static double getCubeRoot(double input) 输入:double 待求解参数 返回值:double 输入参数的立方根
输入描述
待求解参数 double类型
输出描述
输入参数的立方根 也是double类型
输入例子
216
输出例子
6.0
算法实现
import java.util.Scanner;/** * Declaration: All Rights Reserved !!! */public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);// Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt")); while (scanner.hasNext()) { double d = scanner.nextDouble(); System.out.printf("%.1f", getCubeRoot(d)); } scanner.close(); } /** * 使用牛顿迭代法求立方根 * 已知利用牛顿迭代法求方程F(x)=0的解的公式为X[n+1] = X[n] - F(X[n])/F'(X[n]), * 其中x[n]为第n次利用此公式求得值。 * 假如函数F(X) = X^m - a, 则根据牛顿迭代法第n+1次求方程F(x) = 0的解为X[n+1], * 且X[n+1] = (1-1/m)*X[n] +a/(n*X[n]^(m-1)) - (X[n]*X[n]*X[n]+a)/3*X[n]*X[n]。 * * @param x * @return */ private static double getCubeRoot(double x) { double x0; double x1 = x; do { x0 = x1; x1 = 2.0 / 3.0 * x0 + x / 3.0 / (x0 * x0); } while (Math.abs(x1 - x0) > 0.000001); return x1; }}