最近用到矩阵的数学计算,写了两个简单的程序,贴在这里:
1、矩阵的乘法:
/**
* 矩阵乘法
* @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){
System.out.println("Wrong parameters.");
return c;
}
//若A为mXn矩阵,B为nXp矩阵,返回一个mXp的矩阵
for (int i = 0; i < c.length; i++) {
for (int j = 0; j < c[0].length; j++) {
for (int j2 = 0; j2 < a[0].length; j2++) {
c[i][j]=c[i][j]+a[i][j2]*b[j2][j];
}
}
}
return c;
}
2、递归方式求行列式的值
/**
* 计算行列式的值
* @param a
* @return
*/
static double determinant(double[][] a){
double result2 = 0;
if(a.length>2){
//每次选择第一行展开
for(int i=0;i<a[0].length;i++){
//系数符号
double f=Math.pow(-1,i);
//求余子式
double[][] yuzs=new double[a.length-1][a[0].length-1];
for (int j = 0; j < yuzs.length; j++) {
for (int j2 = 0; j2 < yuzs[0].length; j2++) {
//去掉第一行,第i列之后的行列式即为余子式
if(j2<i){
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;
}
分享到:
相关推荐
c++实现求矩阵的行列式值,通过递归方式求解。
使用java实现矩阵行列式的计算,下载者可根据自身需要进行修改
这是一个用java 实现求行列式的值。采用了高斯消元的方法。
转置,求秩,求方阵行列式,求方阵的逆矩阵
c++行列式求值源码。。
求行列式的值 求行列式的值 求行列式的值 求行列式的值
这是一个用JAVA代码编的N阶行列式求值程序,先输入阶数,再输入各元素,即可求出其值。
矩阵求行列式的C语言实现,将矩阵化为上三角阵求对角线乘积。
C语言矩阵的逆、矩阵乘法、矩阵行列式、矩阵转置matrixinverse,matrixmultiplication,matrixdetermination,matrixtranspose.zip
用C语言实现,可得到任意矩阵的行列式和逆矩阵
求行列式的C++源代码。使用对角线求值的方法求出行列式的值。(保证全过)
用C++求解一般矩阵的行列式 用C++求解一般矩阵的行列式
vs2012开发环境,求3*3及其以上矩阵的行列式和逆矩阵,采用的是递归方式和代数余子式方法,在vs2012下调试通过。
一个求矩阵的行列式的函数,很实用的,大家可以参考下····
线性代数 求行列式的值,求逆矩阵,矩阵的乘法等等。简单方便,省略了大量计算时间。
使用java语言,递归实现的N阶行列式求值
利用初等行变换求解矩阵行列式和逆矩阵,可选择系统生成随机矩阵或自行输入待求解矩阵。
这是我计算三元线性回归中的一个求矩阵行列式值的函数 因为程序不完善 先把一部分传上去
这个是求矩阵的行列式,用的是高斯消元法求矩阵行列式
可以对任意阶数的矩阵求行列式,采用的是递归算法,并且在程序中,有一个简单的演示例子