Java實現(xiàn)牛頓迭代法求平方根
突然發(fā)現(xiàn)牛頓迭代法求解求根好快啊,好方便?。ê冒?,我承認我只會這一種解方程的方式)
附上我試著寫的求根代碼,求方程涉及大量判斷,代碼就不貼了,大佬就看著玩一下就行了,別吐槽,我知道這技術含量很低,真的,別噴我了。
import java.util.Scanner;
public class Hello
{
? ? ? ? final static double esp = 0.000005;
? ? ? ??
? ? ? ? public static double sol(double x, double n) {
? ? ? ? ? ? ? ? x = x / 2.0 + n / (2.0 * x);
? ? ? ? ? ? ? ? return x;
? ? ? ? }
? ? ? ??
? ? ? ? public static double root(double n) {
? ? ? ? ? ? ? ? double x = n/2.0;
? ? ? ? ? ? ? ? while (true) {
? ? ? ? ? ? ? ? ? ? ? ? if ( Math.abs(n - x * x) < esp)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return x;
? ? ? ? ? ? ? ? ? ? ? ? else x = sol(x, n);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? }
? ? ? ??
? ? ? ? public static void main(String[] args) {
? ? ? ? ? ? ? ? double? x;
? ? ? ? ? ? ? ? Scanner s = new Scanner(System.in);
? ? ? ? ? ? ? ? x = s.nextDouble();
? ? ? ? ? ? ? ? System.out.println("result is " + root(x));
? ? ? ? ? ? ? ? System.out.println("test "+ (root(x) * root(x)));
? ? ? ? }
}