java行列式计算源代码 行列的代码

java中n阶行列式的代码public class Arranger {
private double[][] arrangerMatrix;
private double arrangerResult=1.0;
public static void main(String args[]){
double[][] a={{4,1,4,8},{1,1,3,2},{2,2,5,1},{2,2,1,4}};
Arranger ar=new Arranger();
ar.arrFunction(a);//把行列式变成上三角行列式
ar.displayMatrix();//显示得出的上三角行列式
ar.displayResult(); //显示行列式计算结果
}
public void arrFunction(double[][] a){//Guass 消去
double k=0;
for (int p = 0; pa[0].length-1; p) {
for (int r =p 1; ra.length; r) {
k=a[r][p]/a[p][p];
a[r][p]=0;
for (int c = p 1; ca[0].length; c) {
a[r][c]=a[r][c]-k*a[p][c];
}//u
}//r
}//c
arrangerMatrix=new double[a.length][a[0].length];
for (int i = 0; ia.length; i) {
for (int j = 0; ja[0].length; j) {
arrangerMatrix[i][j]=a[i][j];
if (i==j) {arrangerResult=arrangerResult*a[i][j];}//计算主对角线相乘的结果
//System.out.println (a[i][j] " ");
}//j
}//i
}
public void displayMatrix(){
for (int i = 0; iarrangerMatrix.length; i) {
for (int j = 0; jarrangerMatrix[0].length; j) {
System.out.print (arrangerMatrix[i][j] " ");
}//j
System.out.println ();
}//i
}
public void displayResult(){
System.out.println ("The result is " arrangerResult);
}
}
java 求矩阵乘法及行列式的值/**
* 矩阵乘法
* @param a
* @param b
* @return
*/
public static double[][] mulMatrix(double[][] a,double[][] b){
double[][] c=new double[a.length][b[0].length];
//相乘的两个行列式需要满足,第一个行列式的列于第二个行列式的行相等
if(a[0].length!=b.length){
【java行列式计算源代码 行列的代码】System.out.println("Wrong parameters.");
return c;
}
//若A为mXn矩阵 , B为nXp矩阵,返回一个mXp的矩阵
for (int i = 0; ic.length; i) {
for (int j = 0; jc[0].length; j) {
for (int j2 = 0; j2a[0].length; j2) {
c[i][j]=c[i][j] a[i][j2]*b[j2][j];
}
}
}
return c;
}
/**
* 计算行列式的值
* @param a
* @return
*/
static double determinant(double[][] a){
double result2 = 0;
if(a.length2){
//每次选择第一行展开
for(int i=0;ia[0].length;i){
//系数符号
double f=Math.pow(-1,i);
//求余子式
double[][] yuzs=new double[a.length-1][a[0].length-1];
for (int j = 0; jyuzs.length; j) {
for (int j2 = 0; j2yuzs[0].length; j2) {
//去掉第一行,第i列之后的行列式即为余子式
if(j2i){
yuzs[j][j2]=a[j 1][j2];
}else {
yuzs[j][j2]=a[j 1][j2 1];
}
}
}
//行列式的拉普拉斯展开式,递归计算
result2 =a[0][i]*determinant(yuzs)*f;
}
}
else{
//两行两列的行列式使用公式
if(a.length==2){
result2=a[0][0]*a[1][1]-a[0][1]*a[1][0];
}
//单行行列式的值即为本身
else{
result2=a[0][0];
}
}
return result2;
}
转自
行列式求值的java程序这个用个循环递归就好了 。先写个从n阶,以及位置(x,y)得到n-1阶的函数,然后用那个公式直接代入一个递归就行了 。
关于java行列式计算源代码和行列的代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读