首页 > 编程知识 正文

求矩阵乘法及行列式的值怎么求,矩阵与行列式的乘法

时间:2023-05-03 11:39:46 阅读:270380 作者:1050

n阶行列式计算 方法:将大矩阵不断分解为小矩阵来缩小其规模,最后逐层返回答案。

java实现 import java.util.Scanner;class Main { public static void main(String []args) { Scanner sc=new Scanner(System.in); //String s=sc.next(); int[][]a=new int [11][11]; int n=sc.nextInt(); //输入行列式的阶数 for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { a[i][j]=sc.nextInt(); //按顺序输入数据 } } System.out.println(determinant(n,a)); } static int determinant(int S,int a[][]) { //传入参数,S代表当前行列式的阶数,a代表代数余子式所成矩阵 if(S==1) return a[1][1]; if(S == 2) { return a[1][1]*a[2][2]-a[2][1]*a[1][2]; //到达边界,如果当前阶数为2,那么主对角线乘积减去副对角线乘积即可return } int tmp[][]=new int[11][11]; int ans=0; //tmp用于储存代数余子式所成矩阵,ans就是最后要返回的结果 int row=1,col=1; for(int k=1;k<=S;k++) { //遍历第一行元素,这是第一个乘因子 for(int i=2;i<=S;i++) { for(int j=1;j<=S;j++) { //这两层循环用于求代数余子式所成矩阵 if(j==k) continue; //如果当前元素刚好是被“划”掉的,那么不做任何操作 else { tmp[row][col++]=a[i][j]; //构造tmp数组 if(col==S) { //如果到达行末了,记得换行,列数置1 col=1; row++; } } } } ans += ((k+1)%2==0? 1: -1)* a[1][k]*determinant(S-1,tmp); //控制正负,递归求解 row=col=1; //这里一定一定要记得置1,否则会出错!!!切记 } return ans; //最后把答案返回 } } 矩阵乘法 矩阵乘法及行列式计算

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。