Pojęcie macierzy (Java)
Macierz to jedno lub dwuwymiarowa tablica liczb. W Javie może być pokazana jako tablica lub tablica dwuwymiarowa (tablica tablic). Macierze oznaczamy dużymi literami, np. A. Poszczególne komórki (elementy) macierzy oznaczamy , gdzie i oznacza wiersz macierzy, a j kolumnę macierzy. Elementami macierzy są liczby. Mogą nimi być również funkcje rzeczywiste lub zespolone, a nawet macierze. W przypadku Javy również obiekty.
W rozwiązywaniu równań i w geometrii najczęściej używa się macierzy kwadratowych, w których liczba rzędów i kolumn jest taka sama.
Ze względów efektywnościowych mądrzej i lepiej było by używać odpowiednio długiej tablicy 1-wymiarowej. Tutaj stosuję jednak klasyczną tablicę tablic. Jeśli chcesz Czytelniku możesz to zmienić i stworzyć macierz opartą o 1-wymiarową tablicę, co znacznie przyśpieszy Twoje obliczenia.
Konstruktory
private double[][] array;
Konstruktor 1
public Matrix() { array = new double[0][0]; }
Tworzy macierz z pustą tablicą o zerowych wymiarach.
Konstruktor 2
public Matrix(int m, int n) { array = new double[m][n]; }
Tworzy macierz z tablicą o podanych wymiarach wypełnioną zerami.
Klasa Matrix001.java
Matrix matrix = new Matrix(3, 3); matrix.setToValue(0); matrix.printToConsole();
Tworzymy macierz o wymiarach 3×3. Macierz wypełniamy zerami. Drukujemy macierz na konsoli.
Po uruchomieniu klasy na konsoli zobaczymy:
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
Konstruktor 3
@ConstructorProperties({"array"}) public Matrix(double[][] array) { this.array = ArrayUtil.clone(array); }
Tworzy macierz z podanej dwuwymiarowej tablicy poprzez jej sklonowanie.
Klasa Matrix002.java
double[][] array = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; Matrix matrix = new Matrix(array); matrix.printToConsole();
Tworzymy tablicę dwuwymiarową. Tworzymy macierz z tej tablicy.
Po uruchomieniu na konsoli zobaczymy:
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
Konstruktor 4
public Matrix(double[] array, int cols) { this.array = ArrayUtil.oneToTwo(array, cols); }
Tworzy macierz z podanej tablicy jednowymiarowej. Należy podać liczbę kolumn w utworzonej macierzy.
Klasa Matrix003.java
Tworzymy macierz z podanej tablicy jednowymiarowej. Liczba kolumn = 3.
double[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9}; Matrix matrix = new Matrix(array, 3); matrix.printToConsole();
Po uruchomieniu na konsoli zobaczymy:
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
Konstruktor 5
public Matrix(Matrix matrix) { this.array = ArrayUtil.clone(matrix.array); }
Tworzy macierz z podanej macierzy poprzez głębokie klonownie tablicy podanej macierzy i przypisanie jej do tworzonej macierzy.
W tym miejscu moglibyśmy również użyć poniższej metody zapewniającej głebokie klonowanie obiektu Matrix
.
public Matrix clone() throws CloneNotSupportedException { Matrix cl = (Matrix) super.clone(); cl.array = ArrayUtil.clone(array); return cl; }
Klasa Matrix004.java
double[][] array = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; Matrix matrix = new Matrix(array); Matrix matrix2 = new Matrix(matrix); //albo Matrix matrix3 = null; try { matrix3 = matrix.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } //matrix3.printToConsole(); matrix2.printToConsole();
Tworzymy macierz. Z tej macierzy tworzymy nową macierz.
Po uruchomieniu na konsoli zobaczymy:
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
Konstruktor 6
public Matrix(String path) { array = read(path); }
Wczytuje macierz z podanego pliku. Zakłada się, że każdy wiersz znajduje się w oddzielnej linii, linia zakończona jest średnikiem, a wartości komórek w wierszu są oddzielone pojedynczą spacją.
Klasa Matrix005.java
Matrix matrix = new Matrix("matrices/assets/matrix1.txt"); matrix.printToConsole();
Zawartość pliku matrix1.txt jest następująca:
1 2 3; 4 5 6; 7 8 9;
Po uruchomieniu na konsoli zobaczymy:
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
Klasa Matrix006.java
Klasa zapisuje macierz do pliku tekstowego.
double[][] tabl = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; Matrix matrix = new Matrix(tabl); matrix.write("matrices/assets/matrix2.txt"); matrix.printToConsole();
Tworzymy macierz. Zapisujemy ją do pliku tekstowego. Po uruchomieniu kodu otrzymamy plik matrix2.txt z zawartością:
1.0 2.0 3.0; 4.0 5.0 6.0; 7.0 8.0 9.0;
Pliki do ściągnięcia
Moduł matrices – aktualny stan projektu = 001;