1. 程式人生 > 其它 >簡單迭代法求方程根

簡單迭代法求方程根

迭代類

點選檢視程式碼
import java.util.Scanner;

public class DieDai {
    public static void main(String[] args) {
        double epsilon, x0, x1;
        long i, maxi;
        System.out.println("請輸入X的精度要求");
        Scanner scan = new Scanner(System.in);
        epsilon = scan.nextDouble();
        System.out.println("請輸入迭代初值");
        x1 = scan.nextDouble();
        System.out.println("請輸入最大迭代次數");
        maxi = scan.nextInt();
        FangCheng pc = new FangCheng();
        for (i = 0; i < maxi; i++) {
            x0 = x1;
            x1 = pc.picard(x0);
            if (Math.abs(x1 - x0) <= epsilon) {
                break;
            }
            if (i < maxi) {
                System.out.println("方程f(x) = 0的根:" + x1);
            } else
                System.out.println("迭代次數以超過上限");
        }
    }

}

所求方程
點選檢視程式碼
public class FangCheng {
    double picard(double x) {

        return (Math.pow(x, 3) + 3 * Math.pow(x, 2) - 3 * x - 3);
    }
}
結果

請輸入X的精度要求
0.0001
請輸入迭代初值
1
請輸入最大迭代次數
10
方程f(x) = 0的根:-2.0
方程f(x) = 0的根:7.0
方程f(x) = 0的根:466.0
方程f(x) = 0的根:1.01844763E8
方程f(x) = 0的根:1.0563701442810917E24
方程f(x) = 0的根:1.1788223337273379E72
方程f(x) = 0的根:1.638117560430921E216
方程f(x) = 0的根:Infinity
方程f(x) = 0的根:NaN
方程f(x) = 0的根:NaN

程序已結束,退出程式碼為 0