/**
* 矩阵乘法
* @param a
* @param b
* @return
*/
public static double[][] mulMatrix(double[][] a,double[][] b){
double[][] c=new double[a.length][b[0].length];
//相乘的两个32313133353236313431303231363533e4b893e5b19e31333363393661行列式需要满足,第一个行列式的列于第二个行列式的行相等
if(a[0].length!=b.length){
System.out.println("Wrong parameters.");
return c;
}
//若A为mXn矩阵,B为nXp矩阵,返回一个mXp的矩阵
for (int i = 0; i
for (int j = 0; j
for (int j2 = 0; 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.length>2){
//每次选择第一行展开
for(int i=0;i
//系数符号
double f=Math.pow(-1,i);
//求余子式
double[][] yuzs=new double[a.length-1][a[0].length-1];
for (int j = 0; j
for (int j2 = 0; j2
//去掉第一行,第i列之后的行列式即为余子式
if(j2
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;
}