java解二元一次方程組

     System.out.println(System.currentTimeMillis());
        double a[][] = {{1,-2,1},{1,2,3},{-3,-2,5}};
        double b[] = {1,3,1};

        int para = a.length;
        double x[] = new double[para];

        Gauss(a,b);

        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a[i].length; j++) {
                System.out.print(a[i][j]+",");
            }
            System.out.println(b[i]);
        }
        printX(x,a,b);
        for (int i = 0; i < x.length; i++) {
            System.out.println(x[i]);
        }
        System.out.println(System.currentTimeMillis());
    }

    public static void Gauss(double a[][],double b[]){
        int n = a.length;

        for (int i = 0; i < n-1; i++) {
            for (int j = i+1; j < n; j++) {//j表示行
                double l = a[j][i]/a[i][i];

                for (int e = i+1; e<n;e++){
                    a[j][e] = a[j][e]-l*a[i][e];
                }

                b[j] = b[j] - l*b[i];
                a[j][i] = 0;
            }
        }
    }


    public static void printX(double x[],double a[][],double b[]){
        for (int i = a.length-1; i >= 0 ; i--) {
            for(int j = a.length-1;j > i;j--){
                b[i] -= a[i][j]*x[j];
            }
            System.out.println(a[i][i]+"===="+b[i]);
            x[i] = b[i]/a[i][i];
        }
    }
相關文章
相關標籤/搜索