РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
246 of 541 menu

Функция linalg.eigh

Функция linalg.eigh вычисляет собственные значения и собственные векторы эрмитовой (или симметричной для вещественных матриц) матрицы. Первым параметром функция принимает квадратную матрицу. Вторым параметром можно указать, какие именно собственные значения вычислять: все, только наибольшие или только наименьшие. Возвращает функция кортеж из двух массивов: массив собственных значений и массив собственных векторов, где каждый столбец соответствует собственному вектору.

Синтаксис

np.linalg.eigh(a, [UPLO])

Пример

Давайте вычислим собственные значения и собственные векторы симметричной матрицы 2x2:

import numpy as np arr = np.array([[1, 2], [2, 1]]) eigvals, eigvecs = np.linalg.eigh(arr) print("Eigenvalues:", eigvals) print("Eigenvectors:\n", eigvecs)

Результат выполнения кода:

Eigenvalues: [-1. 3.] Eigenvectors: [[-0.70710678 -0.70710678] [ 0.70710678 -0.70710678]]

Пример

Давайте вычислим собственные значения и собственные векторы эрмитовой матрицы с комплексными элементами:

import numpy as np arr = np.array([[2, 1+1j], [1-1j, 3]]) eigvals, eigvecs = np.linalg.eigh(arr) print("Eigenvalues:", eigvals) print("Eigenvectors:\n", eigvecs)

Результат выполнения кода:

Eigenvalues: [1.26794919 3.73205081] Eigenvectors: [[-0.85065081+0.j -0.52573111+0.j ] [ 0.32505758-0.32505758j -0.52573111+0.52573111j]]

Пример

Давайте используем параметр UPLO для указания, какую часть симметричной матрицы использовать:

import numpy as np arr = np.array([[1, 2], [2, 1]]) eigvals_lower, eigvecs_lower = np.linalg.eigh(arr, UPLO='L') eigvals_upper, eigvecs_upper = np.linalg.eigh(arr, UPLO='U') print("Lower eigenvalues:", eigvals_lower) print("Upper eigenvalues:", eigvals_upper)

Результат выполнения кода:

Lower eigenvalues: [-1. 3.] Upper eigenvalues: [-1. 3.]

Пример

Давайте проверим свойство ортогональности собственных векторов симметричной матрицы:

import numpy as np arr = np.array([[1, 2], [2, 1]]) eigvals, eigvecs = np.linalg.eigh(arr) dot_product = np.dot(eigvecs[:, 0], eigvecs[:, 1]) print("Dot product of eigenvectors:", dot_product)

Результат выполнения кода:

Dot product of eigenvectors: 0.0

Собственные векторы симметричной матрицы ортогональны, что подтверждается нулевым скалярным произведением.

Смотрите также

  • функцию eig,
    которая вычисляет собственные значения и векторы для общей матрицы
  • функцию eigvals,
    которая вычисляет только собственные значения для общей матрицы
  • функцию eigvalsh,
    которая вычисляет только собственные значения для эрмитовой матрицы
  • функцию svd,
    которая выполняет сингулярное разложение матрицы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить