Macierze: dodawanie, mnożenie i transpozycja
Algorytmy: sortowanie i wyszukiwanie - Podstawy Javy (Java)
Czym jest macierz? Prostokątna tablica liczb uporządkowana w wiersze i kolumny W Javie reprezentowana jako tablica dwuwymiarowa (np. int[][] matrix) Wymiar określamy jako: liczba wierszy × liczba kolumn (np. 3×3, 2×4) Macierz kwadratowa: tyle samo wierszy co kolumn Podstawowe pojęcia: Element macierzy: wartość na pozycji [i][j] (i-ty wiersz, j-ta kolumna) Główna przekątna: elementy gdzie i=j (od lewego górnego do prawego dolnego rogu) Macierz jednostkowa: same 1 na głównej przekątnej, reszta to 0 Podstawowe operacje: Dodawanie: element po elemencie (macierze muszą mieć te same wymiary) Mnożenie: iloczyn wiersza przez kolumnę (liczba kolumn pierwszej = liczba wierszy drugiej) Transpozycja: zamiana wierszy z kolumnami Złożoność operacji (dla macierzy n×n): Dodawanie: O(n²) Mnożenie: O(n³) Transpozycja: O(n²) Główne zastosowania: Układy równań Grafika komputerowa Przetwarzanie danych
public class Main {
public static void main(String[] args) {
// Definicja dwóch macierzy 3x3
int[][] matrix1 = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int[][] matrix2 = {
{9, 8, 7},
{6, 5, 4},
{3, 2, 1}
};
// Dodawanie macierzy
System.out.println("Dodawanie macierzy:");
int[][] sum = addMatrices(matrix1, matrix2);
printMatrix(sum);
// Mnożenie macierzy
System.out.println("\nMnożenie macierzy:");
int[][] product = multiplyMatrices(matrix1, matrix2);
printMatrix(product);
// Transpozycja macierzy
System.out.println("\nTranspozycja pierwszej macierzy:");
int[][] transpose = transposeMatrix(matrix1);
printMatrix(transpose);
// Znajdowanie elementów charakterystycznych
System.out.println("\nElementy charakterystyczne pierwszej macierzy:");
findCharacteristicElements(matrix1);
}
// Metoda dodająca dwie macierze
public static int[][] addMatrices(int[][] matrix1, int[][] matrix2) {
int rows = matrix1.length;
int cols = matrix1[0].length;
int[][] result = new int[rows][cols];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[i][j] = matrix1[i][j] + matrix2[i][j];
}
}
return result;
}
// Metoda mnożąca dwie macierze
public static int[][] multiplyMatrices(int[][] matrix1, int[][] matrix2) {
int rows1 = matrix1.length;
int cols1 = matrix1[0].length;
int cols2 = matrix2[0].length;
int[][] result = new int[rows1][cols2];
for (int i = 0; i < rows1; i++) {
for (int j = 0; j < cols2; j++) {
for (int k = 0; k < cols1; k++) {
result[i][j] += matrix1[i][k] * matrix2[k][j];
}
}
}
return result;
}
// Metoda transponująca macierz
public static int[][] transposeMatrix(int[][] matrix) {
int rows = matrix.length;
int cols = matrix[0].length;
int[][] result = new int[cols][rows];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[j][i] = matrix[i][j];
}
}
return result;
}
// Metoda znajdująca elementy charakterystyczne
public static void findCharacteristicElements(int[][] matrix) {
int rows = matrix.length;
int cols = matrix[0].length;
// Znajdowanie największego elementu na głównej przekątnej
int maxDiagonal = matrix[0][0];
for (int i = 0; i < Math.min(rows, cols); i++) {
if (matrix[i][i] > maxDiagonal) {
maxDiagonal = matrix[i][i];
}
}
System.out.println("Największy element na głównej przekątnej: " + maxDiagonal);
// Znajdowanie sumy elementów nad główną przekątną
int sumUpperTriangle = 0;
for (int i = 0; i < rows; i++) {
for (int j = i + 1; j < cols; j++) {
sumUpperTriangle += matrix[i][j];
}
}
System.out.println("Suma elementów nad główną przekątną: " + sumUpperTriangle);
}
// Metoda pomocnicza do wyświetlania macierzy
public static void printMatrix(int[][] matrix) {
for (int[] row : matrix) {
for (int element : row) {
System.out.print(element + " ");
}
System.out.println();
}
}
} Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu Podstawy Javy · Zaloguj się, aby zapisać postęp na koncie.