java - 计算矩阵平方行列式

标签 java loops math matrix multiplication

我正在尝试编写一个函数来计算方阵行列式(其中对角线的所有数字都相乘)以进行自编码。我得到了主要想法,但由于一些计算错误,我无法得到正确的结果。这是我写的代码:

public static int det(int[][] matrix, int n) {
     int i,j, k, det=1;
     for (i=0; i < matrix.length; i++) {
         for (j=0; j < matrix[i].length; j++) {
             if (i<j)
                 if(matrix[i][j] == 0) {
                     //isTriangle = true;
                     det *= matrix[i][i];
                 }
             if (i>j)
                 if (matrix[i][j] == 0) {
                     //isTriangle = true;
                     det *= matrix[i][i];
                 } 
         }
     }
     return det;
 } 

运行此函数后,我得到的结果不包含最终数字 (matrix[n][n]),因为由于某种原因它没有相乘。接下来,我尝试设置一个 for 循环,将两个循环之外的对角线 (det *= matrix[k][k]) 的所有成员相乘,但结果我得到了非常高的数字。我在这里的数学做错了什么?

最佳答案

您的算法不正确。它应该看起来像这样:

  1. 使用高斯消去法使输入矩阵成为三角形。

  2. 将对角线上的所有数字相乘(即求所有 imatrix[i][i] 的乘积)。

您不能跳过第一步。

关于java - 计算矩阵平方行列式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28098724/

相关文章:

java - 为什么在集合中添加类型的子类 a 是非法的?

java - 如何输出代码正在运行的循环的哪一次迭代

c# - f# 和 c# 获得基础数学的不同答案

java - 添加 View 导致 "Child already has parent"错误

java - Hadoop服务器运行向导未在Eclipse中打开

c - 在 C 中看起来像三角形的输出

Javascript循环和构建数组但变量索引未定义

opengl - 法线贴图并保留切线

c++ - 我应该保留此函数以查找第n个素数还是可以对其进行优化?

java - 具有重复支持的 MySQL INSERT