Zielony Smok - logo witryny

Macierze przekształceń elementarnych (3) (Java)

Dla każdej macierzy kwadratowej A możemy znaleźć taką macierz przekształcenia E, T albo I, że pomnożenie lewostronne macierzy A przez macierz przekształcenia wykona odpowiednie przekształcenie na wierszach macierzy A, a pomnożenie prawostronne, wykona odpowiednie przekształcenie na wierszach A.

Macierz przekształcenia I

Macierz przekształcenia elementarnego I

Macierz przekształcenia elementarnego I

i – to numer mnożonego wiersza w macierzy wejściowej

c – stała, przez którą mnoży się rząd w macierzy wejściowej

r,k – to wiersz i kolumna macierzy wyjściowej

Mamy macierz:

Macierz

Wyznacznik macierzy wynosi:

Wyznacznik macierzy

Chcemy pomnożyć wiersz drugi przez 3:

Przekształcenie macierzy

Macierz przekształcenia elementarnego I

Wyznacznik macierzy

Mnożymy

Macierz

Pomnożyliśmy wiersz drugi przez 3. Zmieniła się wartość wyznacznika (×3).

Przykład w klasie Matrix063:

        double[][] array1 = {{1, 0, 0, 0}, {0, 3, 0, 0},
               {0, 0, 1, 0}, {0, 0, 0, 1}};
        Matrix matrix1 = new Matrix(array1);
        matrix1.printToConsole();
        Util.print("x");
        double[][] array2 = {{-1, 2, 3, 4}, {5, -6, 7, 8},
                {9, 10, -11, 12}, {13, 14, 15, 16}};
        Matrix matrix2 = new Matrix(array2);
        matrix2.printToConsole();
        try {
            Util.print(matrix2.det());
        } catch (MatrixException e) {
            e.printStackTrace();
        }
        Util.print("=");
        Matrix matrix3 = MatrixUtil.multiply3(matrix1, matrix2);
        matrix3.printToConsole();
        try {
            Util.print(matrix3.det());
        } catch (MatrixException e) {
            e.printStackTrace();
        }

Po uruchomieniu klasy na konsoli zobaczymy:

1.0 0.0 0.0 0.0
0.0 3.0 0.0 0.0
0.0 0.0 1.0 0.0
0.0 0.0 0.0 1.0
x
-1.0 2.0 3.0 4.0
5.0 -6.0 7.0 8.0
9.0 10.0 -11.0 12.0
13.0 14.0 15.0 16.0
-18752.0
=
-1.0 2.0 3.0 4.0
15.0 -18.0 21.0 24.0
9.0 10.0 -11.0 12.0
13.0 14.0 15.0 16.0
-56256.0

Aby uczynić to samo dla drugiej kolumny odwracamy kolejność mnożenia:

Macierz przekształcenia elementarnego I

Pomnożyliśmy kolumnę drugą przez 3. Zmieniła się wartość wyznacznika (*times;3).

Przykład w klasie Matrix064:

        double[][] array2 = {{-1, 2, 3, 4}, {5, -6, 7, 8},
           {9, 10, -11, 12},  {13, 14, 15, 16}};
        Matrix matrix2 = new Matrix(array2);
        matrix2.printToConsole();
        try {
            Util.print(matrix2.det());
        } catch (MatrixException e) {
            e.printStackTrace();
        }
        Util.print("x");
        double[][] array1 = {{1, 0, 0, 0}, {0, 3, 0, 0}, {0, 0, 1, 0},
                {0, 0, 0, 1}};
        Matrix matrix1 = new Matrix(array1);
        matrix1.printToConsole();
        Util.print("=");
        Matrix matrix3 = MatrixUtil.multiply3(matrix2, matrix1);
        matrix3.printToConsole();
        try {
            Util.print(matrix3.det());
        } catch (MatrixException e) {
            e.printStackTrace();
        }

Po uruchomieniu klasy na konsoli zobaczymy:

-1.0 2.0 3.0 4.0
5.0 -6.0 7.0 8.0
9.0 10.0 -11.0 12.0
13.0 14.0 15.0 16.0
-18752.0
x
1.0 0.0 0.0 0.0
0.0 3.0 0.0 0.0
0.0 0.0 1.0 0.0
0.0 0.0 0.0 1.0
=
-1.0 6.0 3.0 4.0
5.0 -18.0 7.0 8.0
9.0 30.0 -11.0 12.0
13.0 42.0 15.0 16.0
-56256.0

Pliki do ściągnięcia

matrices019.zip

Moduł matrices – aktualny stan projektu = 019;