Java编程初体验:列主元素高斯消去法

来源:互联网 发布:淘宝小米f码怎么用 编辑:程序博客网 时间:2024/06/10 04:52

前不久用matlab写了一个关于列主元素高斯消元法的小程序,今天将它移植到java上,在编程过程中深深地体会到matlab在处理矩阵数组问题上的优越性(这就是它叫做矩阵实验室的原因吧),程序大体完成了1.选主元2.化为上三角3.回代 的三个主要过程,不过细节上还存在个别致命漏洞,现在先暂且放在blog上,以后有时间再更改(也希望有大神看到,指点一下小白,感激不尽)

package gauss;import java.util.Scanner;public class gauss {public static void main(String args[]){    Scanner input1=new Scanner(System.in);    juzhen M=new juzhen();    int A[][];      A=M.shuru();    int B[]=new int[A.length];    System.out.println("请输入常系数");    for(int i=0;i<B.length;i++){        B[i]=input1.nextInt();    }    input1.close();    for(int i=0;i<A[0].length;i++){        for(int j=i;j<B.length;j++)        {            if (Math.abs(A[j][i])>=Math.abs(A[i][i]))            {                int temp=0,btemp=0;                for(int k=0;k<A[0].length;k++)                {                    temp=A[j][i];                    A[j][i]=A[i][i];                    A[i][i]=temp;                       btemp=B[j];                    B[j]=B[i];                    B[i]=btemp;                }            }        }    }    for(int l=0;l<A.length;l++){//化为上三角矩阵        for(int k=l;k<A[0].length;k++)        {             A[l][k]=A[l][k]-(A[l][k]/A[l][l])*A[l][k];             B[l]=B[l]-(A[l][k]/A[l][l])*B[l];        }    }    int n=B.length;    int sum=0;        B[n]=B[n]/A[n][n];        n--;        for(;n>=0;n--){            for(int k=n+1;k<B.length;k++){                sum=sum+A[n+1][k]*B[k];            }            B[n]=B[n]-sum/A[n][n];        }    int x[]=new int[B.length];    x=B;        System.out.println("该方程的解为:"+x);}}class juzhen{    juzhen(){    }    int[][] shuru (){        Scanner input=new Scanner(System.in);       int m,n;        System.out.println("请输入矩阵的阶数(请保证为方阵)");        m=input.nextInt();        n=input.nextInt();        int M[][]=new int[m][n];        System.out.println("输入矩阵的值");        for(int i=0;i<M.length;i++)        {            for(int j=0;j<M[i].length;j++)                M[i][j]=input.nextInt();        }        input.close();        return M;    }}

错误之后再改吧。。。。。。

0 0
原创粉丝点击