您好,登錄后才能下訂單哦!
這篇文章給大家介紹怎么在Java項目中實現一個求逆矩陣算法,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
實現方法如下:
package demo; public class MatrixInverse { public static double Det(double [][]Matrix,int N)//計算n階行列式(N=n-1) { int T0; int T1; int T2; double Num; int Cha; double [][] B; if(N>0) { Cha=0; B=new double[N][N]; Num=0; if(N==1) { return Matrix[0][0]*Matrix[1][1]-Matrix[0][1]*Matrix[1][0]; } for (T0=0;T0<=N;T0++)//T0循環 { for (T1=1;T1<=N;T1++)//T1循環 { for (T2=0;T2<=N-1;T2++)//T2循環 { if(T2==T0) { Cha=1; } B[T1-1][T2]=Matrix[T1][T2+Cha]; } //T2循環 Cha=0; } //T1循環 Num=Num+Matrix[0][T0]*Det(B,N-1)*Math.pow((-1),T0); } //T0循環 return Num; } else if(N==0) { return Matrix[0][0]; } return 0; } public static double Inverse(double[][]Matrix,int N,double[][]MatrixC){ int T0; int T1; int T2; int T3; double [][]B; double Num=0; int Chay=0; int Chax=0; B=new double[N][N]; double add; add=1/Det(Matrix,N); for ( T0=0;T0<=N;T0++) { for (T3=0;T3<=N;T3++) { for (T1=0;T1<=N-1;T1++) { if(T1<T0) { Chax=0; } else { Chax=1; } for (T2=0;T2<=N-1;T2++) { if(T2<T3) { Chay=0; } else { Chay=1; } B[T1][T2]=Matrix[T1+Chax][T2+Chay]; } //T2循環 }//T1循環 Det(B,N-1); MatrixC[T3][T0]=Det(B,N-1)*add*(Math.pow(-1, T0+T3)); } } return 0; } public static void main(String[]args)//測試 { double[][] TestMatrix = { {1, 22, 34,22}, {1, 11,5,21} , {0,1,5,11}, {7,2,13,19}}; double[][]InMatrix=new double[4][4]; Inverse(TestMatrix,3,InMatrix); String str=new String(""); for (int i=0;i<4;i++) { for (int j=0;j<4;j++) { String strr=String.valueOf(InMatrix[i][j]); str+=strr; str+=" "; } str+="\n"; } System.out.println("億速云測試結果:"); System.out.println(str); } }
運行結果:
關于怎么在Java項目中實現一個求逆矩陣算法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。