-2

アイデンティティ マトリックスを作成するプログラムを作成しています。これは非常に簡単です。しかし、今度は恒等マトリックスを作成する必要がありますが、逆です。結果は次のようになる必要があります。

0 0 1

0 1 0

1 0 0

アイデンティティマトリックスを作成している私が使用しているプログラムは次のとおりです。

import java.util.*;
class Lab19Part2 {
    public static int[][] create(int size) {
        int[][] matrix = new int[size][size];

            for(int i = 0; i < size; i++)
            for(int j = 0; j < size; j++)
                matrix[i][j] = (i == j) ? 1 : 0;
            return matrix;
    } public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("Enter size of matrix: ");
            int size=input.nextInt();
            int matrix[][]=create(size);

            for (int i=0 ; i < matrix.length ; i++) { 
            System.out.println();

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

次のようにアイデンティティマトリックスを出力しますが:

1 0 0

0 1 0

0 0 1

質問は、最初の恒等マトリックスのように印刷されるようにするにはどうすればよいですか? forループと関係があることは知っていますが、特定できません。

ありがとう!

4

4 に答える 4

1

変化する

matrix[i][j] = (i == j) ? 1 : 0;

matrix[i][j] = (i == size - j - 1) ? 1 : 0;
于 2013-04-01T23:35:00.873 に答える
1

値が 1 か 0 かを制御する条件を変更する必要があります。

matrix[i][j] = (i + j == size - 1) ? 1 : 0;

サイズが の場合3、位置 [0][2]、[1][1]、および [2][0] は 1 になります。

于 2013-04-01T23:35:07.187 に答える
0

la4j (Java の線形代数) で作成する方法の簡単な例を次に示します。

Matrix a = new Basic2DMatrix(Matrices.asIdentitySource(3)).transpose();

// will create a 3x3 matrix
//
// 0 0 1
// 0 1 0
// 1 0 0
于 2013-04-02T03:43:26.380 に答える