Poprzedni artykułpreviousnextNastępny artykuł

Dla każdej macierzy możemy stworzyć macierz odpowiedniego przekształcenia.
Mamy macierz:
Tworzenie macierzy przekształceń elementarnych
Wyznacznik tej macierzy wynosi:
Tworzenie macierzy przekształceń elementarnych

Tworzenie macierzy E

Dla powyższej macierzy tworzymy macierz przekształcenia takiego, aby po jego wykonaniu w elemencie a1,1 pojawiło się zero. Najlepiej pomnożyć wiersz pierwszy przez 2 i wynik odjąć od wiersza drugiego.
Przy użyciu poniższej metody tworzymy macierz przekształcenia E:
Matrix matrix2 = MatrixUtil.makeE(matrix1, Elem.Row, 2, 1, -2);
Jest to macierz postaci:
Tworzenie macierzy przekształceń elementarnych
Po wykonaniu mnożenia eA otrzymujemy macierz wynikową:
Tworzenie macierzy przekształceń elementarnych
Przykład w klasie Matrix065:

 double[][] array1 = {{2, 4, 0, 6}, {4, 10, -2, 12}, {6, 14, 0, 10},
                {-2, 0, 0, -4}};
        Matrix matrix1 = new Matrix(array1);
        matrix1.printToConsole();
        try {
            Util.print(matrix1.det());
        } catch (MatrixException e) {
            e.printStackTrace();
        }
        Matrix matrix2 = MatrixUtil.makeE(matrix1, Elem.Row, 1, 0, -2);
        matrix2.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:

2.0 4.0 0.0 6.0 
4.0 10.0 -2.0 12.0 
6.0 14.0 0.0 10.0 
-2.0 0.0 0.0 -4.0 
144.0
1.0 0.0 0.0 0.0 
-2.0 1.0 0.0 0.0 
0.0 0.0 1.0 0.0 
0.0 0.0 0.0 1.0 

2.0 4.0 0.0 6.0 
0.0 2.0 -2.0 0.0 
6.0 14.0 0.0 10.0 
-2.0 0.0 0.0 -4.0 
144.0

Tworzenie macierzy T

Mamy macierz wynikową z poprzedniej operacji:
Tworzenie macierzy przekształceń elementarnych
Chcemy zamienić kolumnę drugą z trzecią.
Używając poniższej metody tworzymy macierz przekształcenia T:
Matrix matrix2 = MatrixUtil.makeT(matrix1, 2, 3);
Jest to macierz:
Tworzenie macierzy przekształceń elementarnych
Po pomnożeniu prawostronnym AT otrzymujemy macierz wynikową:
Tworzenie macierzy przekształceń elementarnych
Przykład w klasie Matrix066:

       double[][] array1 = {{2, 4, 0, 6}, {0, 2, -2, 0}, 
                {6, 14, 0, 10}, {-2, 0, 0, -4}};
        Matrix matrix1 = new Matrix(array1);
        matrix1.printToConsole();
        try {
            Util.print(matrix1.det());
        } catch (MatrixException e) {
            e.printStackTrace();
        }
        Matrix matrix2 = MatrixUtil.makeT(matrix1, 1, 2);
        matrix2.printToConsole();
        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 zoabczymy:

2.0 4.0 0.0 6.0 
0.0 2.0 -2.0 0.0 
6.0 14.0 0.0 10.0 
-2.0 0.0 0.0 -4.0 
144.0
1.0 0.0 0.0 0.0 
0.0 0.0 1.0 0.0 
0.0 1.0 0.0 0.0 
0.0 0.0 0.0 1.0 

2.0 0.0 4.0 6.0 
0.0 -2.0 2.0 0.0 
6.0 0.0 14.0 10.0 
-2.0 0.0 0.0 -4.0 
-144.0

Jak widzimy zmienił się znak wyznacznika.

Tworzenie macierzy I

Mamy macierz wynikową z poprzedniej operacji:
Tworzenie macierzy przekształceń elementarnych
Nie mamy żadnego rozsądnego powodu, poza zwykłym kaprysem programisty, aby mnożyć którykolwiek wiersz macierzy. Pomnóżmy wiersz czwarty przez 3:
Macierz tego przekształcenia wygląda następująco:
Tworzenie macierzy przekształceń elementarnych
Mnożymy IA
Otrzymujemy macierz wynikową:
Tworzenie macierzy przekształceń elementarnych
Przykład w klasie Matrix067:

         double[][] array1 = {{2, 0, 4, 6}, {0, -2, 2, 0}, 
                {6, 0, 14, 10}, {-2, 0, 0, -4}};
        Matrix matrix1 = new Matrix(array1);
        matrix1.printToConsole();
        try {
            Util.print(matrix1.det());
        } catch (MatrixException e) {
            e.printStackTrace();
        }
        Matrix matrix2 = MatrixUtil.makeI(matrix1, 3, 3);
        matrix2.printToConsole();
        Util.print("");
        Matrix matrix3 = MatrixUtil.multiply3(matrix2, matrix1);
        matrix3.printToConsole();
        try {
            Util.print(matrix3.det());
        } catch (MatrixException e) {
            e.printStackTrace();
        }

Po uruchomieniu kodu na konsoli zoabczymy:

2.0 0.0 4.0 6.0 
0.0 -2.0 2.0 0.0 
6.0 0.0 14.0 10.0 
-2.0 0.0 0.0 -4.0 
-144.0
1.0 0.0 0.0 0.0 
0.0 1.0 0.0 0.0 
0.0 0.0 1.0 0.0 
0.0 0.0 0.0 3.0 

2.0 0.0 4.0 6.0 
0.0 -2.0 2.0 0.0 
6.0 0.0 14.0 10.0 
-6.0 0.0 0.0 -12.0 
-432.0

Jak widzimy wyznacznik został pomnożony przez 3.

Pliki do ściągnięcia

matrices020.zip
Moduł matrices – aktualny stan projektu = 020;

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *