Poprzedni artykułpreviousnextNastępny artykuł

Minor

Wyznacznik podmacierzy danej macierzy. Minor Mij to wyznacznik podmacierzy, czyli macierzy, z której usunięto i-ty wiersz i j-tą kolumnę. Indeksy minorów i podmacierzy zaczynają się od 1 (ze względu na wykładniki potęg).
Macierz Minor, dopełnienie algebraiczne i rząd macierzy
Podmacierz Minor, dopełnienie algebraiczne i rząd macierzy
Minor M33 tej podmacierzy to 2*5 – 2*4 = 2
Przykład w klasie Matrix031:

        double[][] array = {{2, 2, 3}, {4, 5, 6}, 
           {7, 8, 9}};
        Matrix matrix = new Matrix(array);
        matrix.printToConsole();
        Util.print("");
        double minor = MatrixUtil.minor(matrix, 2, 2);
        Util.print("minor(3,3): " + minor);

Po uruchomieniu klasy na konsoli zobaczymy:

2.0 2.0 3.0 
4.0 5.0 6.0 
7.0 8.0 9.0 

minor(3,3): 2.0

Minor główny

To wyznacznik podmacierzy głównej.

Dopełnienie algebraiczne

Jest to iloczyn:
(-1)i+j i minora Mij
Minor, dopełnienie algebraiczne i rząd macierzy
Podmacierz A22 = Minor, dopełnienie algebraiczne i rząd macierzy
Minor M22 = detA22 = detMinor, dopełnienie algebraiczne i rząd macierzy = 2*9 – 3*7 = -3
Dopełnienie algebraiczne elementu A22 = (-1)2+2 × -3 = 1 ×-3 = -3.
W macierzy dopełnień zaznaczamy:
Minor, dopełnienie algebraiczne i rząd macierzy
Przykład w klasie Matrix032:

       double[][] array = {{2, 2, 3}, {4, 5, 6}, 
               {7, 8, 9}};
        Matrix matrix = new Matrix(array);
        Matrix matrix1 = MatrixUtil.submatrix(matrix, 2, 2);
        matrix1.printToConsole();
        Util.print("");
        double minor = MatrixUtil.minor(matrix, 1, 1);
        Util.print("minor(2,2): " + minor);
        double algCompl = MatrixUtil.algComplement(matrix, 1, 1);
        Util.print("algCompl(2,2): " + algCompl);

Po uruchomieniu klasy na konsoli zobaczymy:

2.0 2.0 
4.0 5.0 

minor(2,2): -3.0
algCompl(2,2): -3.0

Jeżeli wykonamy wszystkie obliczenia uzyskamy macierz dopełnień:
Minor, dopełnienie algebraiczne i rząd macierzy
Przykład w klasie Matrix033:

       double[][] array = {{2, 2, 3}, {4, 5, 6}, 
              {7, 8, 9}};
        Matrix matrix = new Matrix(array);
        matrix.printToConsole();
        Util.print("");
        Matrix matrixac = new Matrix(matrix.getRowCount(), 
                         matrix.getColCount());
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                double ac = MatrixUtil.algComplement(matrix, i, j);
                try {
                    matrixac.setCell(i, j, ac);
                } catch (MatrixException e) {
                    e.printStackTrace();
                }
            }
        }
        matrixac.printToConsole();
        double det = 0.0;
        try {
            det = matrix.det();
        } catch (MatrixException e) {
            e.printStackTrace();
        }
        Util.print("");
        Util.print("det: " + det);

Po uruchomieniu na konsoli zobaczymy:

2.0 2.0 3.0 
4.0 5.0 6.0 
7.0 8.0 9.0 

-3.0 6.0 -3.0 
6.0 -3.0 -2.0 
-3.0 -0.0 2.0 

det: -6.0

Rząd macierzy

Rząd macierzy A o wymiarach m×n to liczba r, która jest równa najwyższemu stopniowi nieosobliwej podmacierzy danej macierzy. r=0 dla macierzy zerowej. Rząd jest większy lub równy zero i mniejszy lub równy mniejszej z wartości (m,n)
Minor, dopełnienie algebraiczne i rząd macierzy
Minor, dopełnienie algebraiczne i rząd macierzy
Macierz nie jest zerowa. Maksymalna wielkość podmacierzy, a więc i rząd macierzy Minor, dopełnienie algebraiczne i rząd macierzy
Badamy kolejno podmacierze zaczynając od największej:
Minor, dopełnienie algebraiczne i rząd macierzy
Obliczamy minor:
Minor, dopełnienie algebraiczne i rząd macierzy
Ponieważ minor Minor, dopełnienie algebraiczne i rząd macierzy podmacierz B0, 5 jest nieosobliwa. Jej stopień r=4 jest rzędem macierzy A.
Przykład w klasie Matrix054:

       double[][] arr = {{1, 2, 3, 4}, {5, 4, 3, 2}, 
                {-1, -3, 3, -2}, {1, 2, 3, -5}};
        Matrix mat = new Matrix(arr);
        mat.printToConsole();
        double det = 0.0;
        try {
            det = MatrixUtil.det(mat);
        } catch (MatrixException e) {
            e.printStackTrace();
        }
        System.out.println(det);
        System.out.println("stopień:" + mat.size()[0]);

Po uruchomieniu klasy na konsoli zobaczymy:

1.0 2.0 3.0 4.0 
5.0 4.0 3.0 2.0 
-1.0 -3.0 3.0 -2.0 
1.0 2.0 3.0 -5.0 
432.0
stopień:4

Metoda eliminacji Gaussa

Inna definicja rzędu macierzy mówi, że jest to maksymalna liczba liniowo niezależnych wektorów tworzących kolumny (albo wiersze) danej macierzy. Zaletą tej definicji jest to, że jeżeli macierz sprowadzimy metodą eliminacji Gaussa do postaci schodkowej, to liczba niezerowych wierszy w tej macierzy jest rzędem macierzy.
Na stronie Wikipedii (hasło: 'Metoda eliminacji Gaussa') znajduje się przykład, przy użyciu, którego sprawdzimy naszą metodę:
Macierz:
Minor, dopełnienie algebraiczne i rząd macierzy
Macierz została sprowadzona do postaci schodkowej:
Minor, dopełnienie algebraiczne i rząd macierzy
Ponieważ macierz ma trzy niezależne wiersze jej rząd wynosi 3.
Przykład w klasie Matrix070:

       double[][] array1 = {{1, -1, 2, 2}, {2, -2, 1, 0}, 
          {-1, 2, 1, -2}, {2, -1, 4, 0}};
        Matrix matrix1 = new Matrix(array1);
        matrix1.printToConsole();
        Util.print("");
        Matrix matrix2 = MatrixUtil.elimGauss(matrix1);
        matrix2.printToConsole();
        int rank = MatrixUtil.rankGauss(matrix1);
        Util.print(rank);

Po uruchomieniu klasy na konsoli zobaczymy:

1.0 -1.0 2.0 2.0 
2.0 -2.0 1.0 0.0 
-1.0 2.0 1.0 -2.0 
2.0 -1.0 4.0 0.0 

1.0 -1.0 2.0 2.0 
0.0 1.0 1.5 -2.0 
0.0 0.0 -3.0 -4.0 
0.0 0.0 0.0 0.0 
3

Jak widzimy wynik uzyskany ręcznie i wynik uzyskany przy użyciu naszego algorytmu jest identyczny.

Właściwości rzędu macierzy

  1. Jeżeli macierz nie jest kwadratowa, to jej rząd jest mniejszy lub równy mniejszemu z wymiarów macierzy
  2. Rząd macierzy równa się 0 wtedy i tylko wtedy, gdy macierz jest zerowa.
  3. Macierz kwadratowa jest odwracalna wtedy i tylko wtedy, gdy jej rząd jest równy jej wymiarowi
  4. Nierówność Sylwestra. Jeśli mamy dwie macierze kwadratowe A i B i obie są stopnia n, to wówczas
  5. Transpozycja macierzy nie zmienia jej rzędu.
  6. Operacje elementarne nie zmieniają rzędu

Ad. 1. Jeżeli macierz ma wymiar 4 *times; 3 to jej rząd jest równy 3 lub niższy.

Pliki do ściągnięcia

matrices022.zip
Moduł matrices - aktualny stan projektu = 022;

Dodaj komentarz

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