1. 程式人生 > >三元一次方程組的程式

三元一次方程組的程式

{

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");
}

}