找到2x2阵列的排名

时间:2012-11-04 11:50:42

标签: java arrays math matrix linear-algebra

我有一个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]+" ");
        }
    }
}

如何找到该矩阵(数组)的等级?。

2 个答案:

答案 0 :(得分: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)。如果所有矩阵元素都为零,那么秩为零。

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

答案 1 :(得分:0)

@Sean Owen:等级也可以是0。