我刚开始使用Java,作为第一个项目,我正在编写一个程序来查找给定数字的根(在本例中为立方根).现在我正在尝试Newton-Ralphson来实现这一目标.这是代码 -
import java.util.Scanner;
import static java.lang.Math.abs;
public class newClass {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Number whose cube root u wanna find:");
Double number = input.nextDouble();
Double epsilon = 0.0001;
Double ans = number/2.00;
while (abs((abs(number) - abs(Math.pow(ans,3))))>epsilon){
System.out.println("in loop");
ans = ans - ((Math.pow(ans,3) - number)/(3*Math.pow(ans,2)));
System.out.println(ans);
if ((number - ans)<=epsilon){
System.out.println(ans);
}
}
//System.out.println(Math.pow(number,1.0/3.0));
}
}
Run Code Online (Sandbox Code Playgroud)
这只能达到11位数,因为它太大了,IDE无法处理.但是,如果我只是使用Math.pow(number,1.0/3.0)它可以工作更大的数字,并立即计算它.
那么,Math.pow()使用的算法是什么给出了即时答案?
我知道我的方法依赖于猜测,我猜math.pow()可能实际上是在计算答案,但是如何?