三元一次方程組的程式
阿新 • • 發佈:2019-02-03
{
publicstaticvoid swapRows(double matrix[][],int row1,int row2 ) //陣列的兩行交換
{
for(int col=0;col<matrix[row1].length;col++)
{
double temp=matrix[row1][col];
matrix[row1][col]=matrix[row2][col];
matrix[row2][col]=temp;
}
}
publicstaticvoid mulRow(double matrix[][], double numble,int row) //陣列的一行同時*number
{
for(int col=0;col<matrix[row].length;col++ )
{
matrix[row][col]*=numble;
}
}
publicstaticvoid addRow(double matrix[][],double number,int row1,int row2) //陣列的row1行同時*number再與row2行相加賦給row2,
{ //row1不變,row2被替換
for(int col=0;col<matrix[row1].length;col++)
{
matrix[row2][col]+=number*matrix[row1][col];
}
}
publicstaticvoid showMatrix(double matrix[][]) //顯示陣列
{
for(int row=0;row<matrix.length;row++)
{
for(int col=0;col<matrix[row].length;col ++)
{
System.out.print(matrix[row][col]+"");
}
System.out.println();
}
}
publicstaticdouble[][] creatMatrix() //建立陣列
{
double matrix[][]={{2,4,6,10},
{1,-2,-3,6},
{2,-2,4,8}};
return matrix;
}
publicstaticvoid colMethod(double matrix[][],int col) //把一列變為1,0
{
mulRow(matrix,1/matrix[col][col],col);
for(int row=0;row<matrix.length;row++)
{
if(row!=col)
{
addRow(matrix,-matrix[row][col],col,row);
}
}
}
publicstaticboolean foundZero(double matrix[][],int diag) //判斷矩陣主對角線有沒有為0的數,有的話兩行替換
{
for(int col=diag;col<matrix.length;col++)
{
if (matrix[col][diag]!=0)
{
swapRows(matrix,col,diag);
returntrue;
}
}
returnfalse;
}
publicstaticboolean allColMethod(double matrix[][]) //把矩陣的多列變為1,0
{
for(int col=0;col<matrix.length;col++)
{
if(foundZero(matrix,col))
colMethod(matrix,col);
else
returnfalse;
}
returntrue;
}
publicstaticvoid main(String args[])
{
double matrix[][]=creatMatrix();
showMatrix(matrix);
System.out.println();
if(allColMethod(matrix))
showMatrix(matrix);
else
System.out.println("no sole");
}
}
publicstaticvoid swapRows(double matrix[][],int row1,int row2 ) //陣列的兩行交換
{
for(int col=0;col<matrix[row1].length;col++)
{
double temp=matrix[row1][col];
matrix[row1][col]=matrix[row2][col];
matrix[row2][col]=temp;
}
}
publicstaticvoid mulRow(double matrix[][],
{
for(int col=0;col<matrix[row].length;col++ )
{
matrix[row][col]*=numble;
}
}
publicstaticvoid addRow(double matrix[][],double number,int row1,int row2) //陣列的row1行同時*number再與row2行相加賦給row2,
{
for(int col=0;col<matrix[row1].length;col++)
{
matrix[row2][col]+=number*matrix[row1][col];
}
}
publicstaticvoid showMatrix(double matrix[][]) //顯示陣列
{
for(int row=0;row<matrix.length;row++)
{
for(int col=0;col<matrix[row].length;col
{
System.out.print(matrix[row][col]+"");
}
System.out.println();
}
}
publicstaticdouble[][] creatMatrix() //建立陣列
{
double matrix[][]={{2,4,6,10},
{1,-2,-3,6},
{2,-2,4,8}};
return matrix;
}
publicstaticvoid colMethod(double matrix[][],int col) //把一列變為1,0
{
mulRow(matrix,1/matrix[col][col],col);
for(int row=0;row<matrix.length;row++)
{
if(row!=col)
{
addRow(matrix,-matrix[row][col],col,row);
}
}
}
publicstaticboolean foundZero(double matrix[][],int diag) //判斷矩陣主對角線有沒有為0的數,有的話兩行替換
{
for(int col=diag;col<matrix.length;col++)
{
if (matrix[col][diag]!=0)
{
swapRows(matrix,col,diag);
returntrue;
}
}
returnfalse;
}
publicstaticboolean allColMethod(double matrix[][]) //把矩陣的多列變為1,0
{
for(int col=0;col<matrix.length;col++)
{
if(foundZero(matrix,col))
colMethod(matrix,col);
else
returnfalse;
}
returntrue;
}
publicstaticvoid main(String args[])
{
double matrix[][]=creatMatrix();
showMatrix(matrix);
System.out.println();
if(allColMethod(matrix))
showMatrix(matrix);
else
System.out.println("no sole");
}
}