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

Функция linalg.eig

Функция torch.linalg.eig вычисляет собственные значения и собственные векторы для квадратной матрицы. Она возвращает два тензора: собственные значения и собственные векторы. Функция работает как для вещественных, так и для комплексных матриц. Первым параметром функция принимает входную матрицу. Вторым параметром можно указать, нужно ли вычислять собственные векторы.

Синтаксис

torch.linalg.eig(A, *, eigenvectors=False)

Пример

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

import torch t = torch.tensor([[1, 2], [3, 4]], dtype=torch.float) eigenvalues, eigenvectors = torch.linalg.eig(t) print(eigenvalues)

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

tensor([-0.3723+0.j, 5.3723+0.j])

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

Пример

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

import torch t = torch.tensor([[1, 2], [3, 4]], dtype=torch.float) eigenvalues, eigenvectors = torch.linalg.eig(t, eigenvectors=True) print(eigenvectors)

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

tensor([[-0.8246+0.j, -0.4160+0.j], [ 0.5658+0.j, -0.9094+0.j]])

Каждый столбец тензора собственных векторов соответствует одному собственному значению.

Пример

Давайте проверим, что собственные векторы действительно удовлетворяют уравнению A * v = lambda * v:

import torch t = torch.tensor([[1, 2], [3, 4]], dtype=torch.float) eigenvalues, eigenvectors = torch.linalg.eig(t, eigenvectors=True) v = eigenvectors[:, 1] lambda_v = eigenvalues[1] res = torch.matmul(t, v) - lambda_v * v print(res)

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

tensor([-7.4506e-09+0.j, 1.4901e-08+0.j])

Мы получили почти нулевой вектор, что подтверждает правильность вычислений.

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

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