
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;
