-5

我有一个 2d 数组,它扮演 2x2 矩阵的角色。我怎样才能找到该矩阵的等级。直到现在我有这个:

Scanner input=new Scanner(System.in);

int[][] A = new int[2][2];
int[][] B = new int[2][2];
int[][] C = new int[2][2];

System.out.println("Enter elements for matrix A : ");

for (int i=0 ; i < A.length ; i++)
{
    for  (int j=0 ; j < A[i].length ; j++)
    {
        A[i][j] = input.nextInt();
    }

    System.out.println("Matrix A: ");
    for (int i=0 ; i < A.length ; i++)
    {
        System.out.println();
        for(int j=0 ; j < A[i].length ; j++)
        {
            System.out.print(A[i][j]+" ");
        }
    }
}

我怎样才能找到该矩阵(数组)的等级?

4

2 回答 2

3

您可以通过将矩阵转换为行梯形来找到矩阵的秩。矩阵的行梯形形式将与矩阵具有相同的等级。行梯形矩阵的秩就是非零行的总数。在 2x2 的情况下,计算非常简单。有关更详细的说明,请参阅此链接

http://en.wikipedia.org/wiki/Rank_%28linear_algebra%29#Computation

一种更快的简单粗略方法(因为您只有 2x2 矩阵)是简单地检测矩阵的一列是否是另一列的倍数。这可以通过测试(根据您选择的一些数值容差)来大致检测这些比率是否相等(使用矩阵表示法,而不是基于整数零的数组索引)

 A(1,1)/A(1,2) == A(2,1)/A(2,2)  

照常注意零除法。如果比率相等,则表明您的列是彼此的倍数,因此矩阵不是满秩(1 或 0 也是如此)。如果所有矩阵元素都为零,则秩为零。

如果这对您的需求来说过于粗糙,请使用上面链接中建议的高斯消除方法。

于 2012-11-04T18:45:13.863 回答
0

@Sean Owen:排名也可能为 0。

于 2012-11-06T15:13:58.410 回答