• Автор записи:
  • Рубрика записи:Scipy
  • Время чтения:5 минут чтения
  • Комментарии к записи:0 комментариев

В контексте системы линейных уравнений собственные значения относятся к уникальному набору скаляров. Чаще всего его используют матричные уравнения. Слово «Eigen» в немецком языке означает «собственный» или «характерный». Таким образом, собственные значения также можно называть соответствующими значениями, скрытыми корнями, характеристическими значениями и характеристическими корнями.

  • Проще говоря, собственное значение — это скаляр, который используется для изменения собственного вектора. Основная формула: Ax = λx, собственное значение A «λ» является целым или скалярным значением.

Давайте также узнаем о термине «собственный вектор», который связан с собственными значениями.

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

Ненулевые векторы, известные как собственные векторы, остаются в том же направлении после применения любого линейного преобразования. Изменяется только один скалярный коэффициент. Если A — линейное преобразование векторного пространства V и x — вектор, отличный от нуля, то v — собственный вектор A, если A(X) — скаляр, кратный x.

Собственное пространство для данного вектора x состоит из всех собственных векторов, которые в совокупности имеют собственное значение, идентичное нулевому вектору. Однако нулевой вектор не является собственным вектором.

  • Предположим, что A — матрица «nxn», и это собственное значение матрицы A. Если x, ненулевой вектор, соответствует приведенному ниже выражению, он называется собственным вектором.

Ах = λx

Его собственный вектор равен x. A совпадает с собственным значением(λ).

Содержание

Метод eigvals()

Метод eigvals() Python Scipy существует в модуле scipy.linalg(), который идентифицирует собственные значения в обычной или обобщенной задаче на собственные значения.

Синтаксис:

scipy.linalg.eigvals(a, b=None, check_finite=False, overwrite_a=True, homogeneous_eigvals=True)

Где параметры:

  • a(array_data,(M,M)): действительная или комплексная матрица, собственные значения и векторы которой необходимо определить.
  • b(array_data,(M,M)): Матрица в правой части обобщенной проблемы собственных значений. Единичная матрица считается существующей, если ее удалить.
  • check_finte(boolean): следует ли гарантировать, что входные матрицы имеют только конечные числа. Если входные данные на самом деле содержат бесконечности или числа NaN, их отключение может улучшить производительность, но вызвать проблемы(незавершение, сбои).
  • overwrite_a(boolean): какие данные следует перезаписать в файле a.
  • homo_eigvals(boolean): в случае, когда True, собственные значения задаются в однородных координатах.

Метод eigvals() возвращает w(Собственные значения, которые не расположены в каком-либо определенном порядке, но каждое повторяется в соответствии с их кратностью. Если однородный eigvals() не имеет значения True, форма имеет вид(M,)) типа complex ndarray или double.

Давайте рассмотрим пример, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
import numpy as np
from scipy.linalg import eigvals
  • Создайте массив или матрицу, используя приведенный ниже код.
matrix = np.array([[-1, .0], [0., 1.]])
  • Теперь вычислите собственные значения созданной выше матрицы, используя приведенный ниже код.
eigvals(matrix)

Собственные значения

В приведенном выше выводе собственные значения матрицы равны [-1.+0.j, 1.+0.j].

Эрмитиан собственных значений

Во-первых, нам нужно знать: «Что такое эрмитова матрица?» Квадратная матрица, аналогичная сопряженной ей транспонированной матрице, является эрмитовой матрицей.

Все недиагональные компоненты эрмитовой матрицы представляют собой комплексные целые числа. Комплексные числа эрмитовой матрицы заданы так, что i-я строка и элемент j-го столбца являются комплексно-сопряженными элементами j-й строки и i-го столбца.

Эрмитиан собственных значений Python Scipy

Если A = AT, то матрица A является эрмитовой. Подобно симметричной матрице, эрмитова матрица отличается от матриц тем, что компоненты ее неглавной диагонали являются комплексными числами.

В Python Scipy есть метод eigh() в модуле scipy.linalg для решения стандартных обычных задач на собственные значения для реальных симметричных или эрмитовых матриц.

Синтаксис:

scipy.linalg.eigh(a, b=None, eigvals_only=True, lower=False, overwrite_a=True, overwrite_b=True, turbo=False, eigvals=None, type=1, check_finite=False, subset_by_index=None, subset_by_value=None, driver=None)

Где параметры:

  • a(array_data): вычисление собственных значений и собственных векторов комплексной эрмитовой или вещественной симметричной матрицы.
  • b(array_data): реальная симметричная комплексная эрмитова положительная матрица. Предполагается, что единичная матрица отсутствует.
  • low(bool): являются ли треугольники в нижней или верхней трети a и, если применимо, b источником соответствующих данных массива. Ниже по умолчанию
  • egvals_only(boolean): если нужно вычислять только собственные значения, а не собственные векторы.(по умолчанию: вычисляются оба)
  • overwrite_a(boolean): Чтобы перезаписать a.
  • overwrite_b(boolean): Чтобы перезаписать b.
  • check_finite(boolean): если необходимо проверить, что входные матрицы содержат только конечные числа. Отключение может улучшить производительность, но если входные данные содержат бесконечности или NaN, это может вызвать проблемы(сбои, отсутствие завершения).
  • subset_by_index(iterable): эта двухэлементная итерация, если она задана, определяет полуоткрытый интервал(a, b], в пределах которого, если таковые имеются, возвращаются только собственные значения между этими значениями. Исключительно для «evr», «evx», и драйверы «gvx» Для неограниченных конечных точек используйте i9 bnp.inf.]-0965\.
  • subset_by_value(iterable): определить полуинтервал для получения только собственных значений, используя итеративный двухэлементный элемент.

Метод eigh() возвращает w(выбранные собственные значения) в возрастающем размере типа ndarray.

Давайте разберемся на примере, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки, используя приведенный ниже код.
import numpy as np
from scipy.linalg import eigh
  • Создайте массив данных в виде матрицы, используя приведенный ниже код.
matrix_data = np.array([[5, 3, 6, 1], [5, 1, 3, 0], [2, 6, 5, 1], [1, 5, 2, 2]])
  • Передайте созданные данные матрицы в метод eigh(), используя приведенный ниже код.
eigh(matrix_data)

Эрмитиан собственных значений Python Scipy

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

Метод Eigvals_only

Метод Python Scipy eigh() возвращает как собственные значения, так и собственные векторы, иногда нам нужно только одно значение, например собственные значения.

Чтобы получить только собственные значения, метод eigh() имеет параметр eigvals_only логического типа или принимает значение True или False.

Если мы установим eigvals_only равным True, то он вернет только собственные значения, в противном случае вернет как собственные значения, так и собственные векторы.

Теперь разберитесь на примере, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки или методы, используя приведенный ниже код Python.
import numpy as np
from scipy.linalg import eigh
  • Создайте матрицу, содержащую значения, используя приведенный ниже код.
matrix_data = np.array([[6, 3, 5, 1], [3, 1, 0, 3], [1, 6, 5, 6], [2, 5, 2, 2]])
  • Чтобы вычислить и получить только собственные значения, установите для параметра eigvals_only значение True, используя приведенный ниже код.
eigh(matrix_data,eigvals_only = True)

Собственные значения Python Scipy только EigvalsКогда мы передаем матрицу методу eigh() с параметром eigvals_only, равным True, как мы видим на выходе, метод возвращает только собственные значения матрицы.

Вот как вычислить собственные значения данной матрицы, используя метод eigh() Python Scipy.

Метод Subset_by_value

Subset_by_value — это еще один параметр метода eigh(), позволяющий узнать о собственных значениях, находящихся в определенном диапазоне.

Например, если нам нужны собственные значения выше 5 или ниже 8, метод возвращает все собственные значения выше 5 или ниже 8.

Давайте посмотрим на примере, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
import numpy as np
from scipy.linalg import eigh
  • Создайте матрицу данных, используя метод np.array(), как показано в приведенном ниже коде.
matrix_data = np.array([[6, 3, 5, 1], [3, 1, 0, 3], [1, 6, 5, 6], [2, 5, 2, 2]])
  • Теперь передайте приведенную выше матрицу в метод eigh() с параметром subset_by_value, равным [-np.inf, 5], чтобы получить только собственные значения меньше 5.
eigh(matrix_data,eigvals_only = True, subset_by_value= [-np.inf, 5])
  • Снова измените значение параметра subset_by_value на [10, 20], чтобы получить собственные значения от 10 до 20, используя приведенный ниже код.
eigh(matrix_data,eigvals_only = True, subset_by_value= [10, 20])

Собственные значения Python Scipy, подмножество по значению

Вот как получить определенный диапазон собственных значений, используя метод eigh() с параметром subset_by_value Python Scipy.

Параметр Subset_by_index

Мы уже знаем, что метод eigh() возвращает тип as ndarray, а также знаем, что к элементам или значениям массива можно получить доступ по его индексному значению.

Таким образом, метод eigh() имеет параметр subset_by_index, который позволяет нам получать доступ к собственным значениям или собственным векторам ndarray, используя его значение индекса.

Теперь разберемся, как можно использовать параметр subset_by_index на примере.

  • Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
import numpy as np
from scipy.linalg import eigh
  • Создайте матрицу данных, используя метод np.array(), как показано в приведенном ниже коде.
matrix_data = np.array([[6, 3, 5, 1], [3, 1, 0, 3], [1, 6, 5, 6], [2, 5, 2, 2]])
  • Теперь передайте приведенную выше матрицу в метод eigh() с параметром subset_by_index, равным [0, 2], чтобы получить собственные значения с индексом от 0 до 2.
eigh(matrix_data,eigvals_only = True, subset_by_value= [0, 2])

Собственные значения Python Scipy, подмножество по индексу

Вот как получить определенный диапазон собственных значений, используя метод eigh() с параметром subset_by_value Python Scipy.

Читайте: Scipy Stats Zscore + примеры.

Собственные значения и векторы

Метод Python eig(), существующий в модуле scipy.linalg, идентифицирует и решает обычную или обобщенную проблему собственных значений квадратной матрицы.

Синтаксис:

scipy.linalg.eig(a, b=None, left=True, right=False, overwrite_a=True, overwrite_b=True, check_finite=False, homogeneous_eigvals=True)

Где параметры:

  • a(array_data): действительная или комплексная матрица, собственные значения и векторы которой необходимо определить.
  • b(array_data): для ввода правой матрицы.
  • right(boolean): правая матрица расширенной задачи на собственные значения. Если по умолчанию установлено значение «Нет», предполагается идентификационная матрица.
  • left(boolean): следует ли вычислять левые собственные векторы и возвращать их. Значение по умолчанию — «Ложь».
  • overwrite_a(boolean): Чтобы перезаписать a.
  • overwrite_b(boolean): Чтобы перезаписать b.
  • check_finite(boolean): Чтобы проверить, имеет ли предоставленная в качестве входных данных матрица конечные числа.
  • homo_eigvals(boolean): чтобы получить собственные значения в однородных координатах.

Метод eig() возвращает w(собственные значения), vr(нормализованный правый вектор) и vl(нормализованный левый вектор) сложного типа ndarray или double.

Давайте рассмотрим пример, выполнив следующие шаги:

  • Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
import numpy as np
from scipy.linalg import eig
  • Сгенерируйте матричные данные, используя приведенный ниже код.
matrix_data = np.array([[-2.,0],[0.1,2]])
  • Теперь вычислите собственные значения и собственные векторы созданной выше матрицы, используя приведенный ниже код.
eig(matrix_data)

Собственные значения и собственные векторы Python Scipy

Вот как вычислить собственные значения и собственные векторы данной матрицы, используя метод eig() Python Scipy.

Добавить комментарий