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.