i具有扮演2x2矩阵的2D数组。我如何找到该矩阵的等级。到目前为止,我有:
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]+" ");
}
}
}
我如何找到该矩阵的等级(数组)?
您可以通过将矩阵转换为行echelon表单来找到矩阵的等级。矩阵的行形式将与矩阵具有相同的等级。行式表格矩阵的等级仅是非零行的总数。在2x2情况下,您在这里有计算非常简单。请参阅此链接以获取更详细的说明
http://en.wikipedia.org/wiki/rank_(linear_algebra)#computation
一种更简单的原油方法(因为您只有2x2矩阵)就是简单地检测矩阵的一列是否是另一个倍数。这可以通过测试(您选择的某种数值公差)大致检测到这些比率是否相等(使用矩阵符号,而不是基于零整数的零阵列索引)
A(1,1)/A(1,2) == A(2,1)/A(2,2)
照常照顾零部门。如果比率相等,则表明您的列是彼此的倍数,因此矩阵不是完整的等级(1或0)。如果所有矩阵元素为零,则等级为零。
如果这太粗糙满足您的需求,请使用上述链接中建议的高斯消除方法。
@sean Owen:排名也可能为0。