您的位置:首页 > 编程语言 > Java开发

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

2016-03-11 10:03 441 查看
前不久用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
=B
/A

;
n--;
for(;n>=0;n--){
for(int k=n+1;k<B.length;k++){
sum=sum+A[n+1][k]*B[k];
}
B
=B
-sum/A

;
}
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]
;
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;
}
}


错误之后再改吧。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java