本文实例讲述了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算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
本文向大家介绍java实现的n*n矩阵求值及求逆矩阵算法示例,包括了java实现的n*n矩阵求值及求逆矩阵算法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java实现的n*n矩阵求值及求逆矩阵算法。分享给大家供大家参考,具体如下: 先来看看运行结果: java版的写出来了,用的跟c语言相同的算法,然后看看能不能以后加个框做成程序: 更多关于java算法相关内容感兴趣的读者可查看本站
问题内容: 我正在尝试计算Java中的逆矩阵。 我遵循伴随方法(首先计算伴随矩阵,然后转置该矩阵,最后将其乘以行列式值的倒数)。 当矩阵不太大时有效。我检查过,对于尺寸最大为12x12的矩阵,可以快速提供结果。但是,当矩阵大于12x12时,完成计算所需的时间呈指数增长。 我需要反转的矩阵是19x19,并且花费太多时间。消耗更多时间的方法是用于行列式计算的方法。 我使用的代码是: 有人知道如何更有效
本文向大家介绍详解用java描述矩阵求逆的算法,包括了详解用java描述矩阵求逆的算法的使用技巧和注意事项,需要的朋友参考一下 今天很开心把困扰几天的问题解决了,在学习线性代数这门课程的时候。想通过程序实现里面的计算方法,比如矩阵求逆,用java代码该如何描述呢? 首先,咱们先用我们所交流语言描述一下算法思路: 1.求出一个矩阵A对应的行列式在第i,j(i表示行,j表示列)位置的余子式(余子式前面
本文向大家介绍Java实现的矩阵乘法示例,包括了Java实现的矩阵乘法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java实现的矩阵乘法。分享给大家供大家参考,具体如下: 思路: 矩阵乘法的前提是:前一矩阵的行数 == 后一矩阵的列数(rows == cols) 在满足前提的情况下:前一矩阵的第一行 与 第二个矩阵的第一列 逐个相乘。将乘积求和 作为 结果矩阵的第一个元素 类推刻得
本文向大家介绍python简单实现矩阵的乘,加,转置和逆运算示例,包括了python简单实现矩阵的乘,加,转置和逆运算示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python简单实现矩阵的乘,加,转置和逆运算。分享给大家供大家参考,具体如下: 使用python完成矩阵的乘,加,转置和逆: 运行结果: 矩阵的乘: [[23] [43] [17]] 矩阵的加: [[ 6 8 8
本文向大家介绍java实现任意矩阵Strassen算法,包括了java实现任意矩阵Strassen算法的使用技巧和注意事项,需要的朋友参考一下 本例输入为两个任意尺寸的矩阵m * n, n * m,输出为两个矩阵的乘积。计算任意尺寸矩阵相乘时,使用了Strassen算法。程序为自编,经过测试,请放心使用。基本算法是: 1.对于方阵(正方形矩阵),找到最大的l, 使得l = 2 ^ k, k为整数并