numpy.linalg.eigvalsh#
- linalg.eigvalsh(a, UPLO='L')[原始碼]#
計算複 Hermitian 或實對稱矩陣的特徵值。
與 eigh 的主要差異:不計算特徵向量。
- 參數:
- a(…, M, M) array_like
要計算特徵值的複數或實數值矩陣。
- UPLO{‘L’, ‘U’}, 可選
指定是否使用 a 的下三角部分(‘L’,預設)或上三角部分(‘U’)進行計算。 無論此值為何,在計算中僅會考慮對角線的實部,以保留 Hermitian 矩陣的概念。 因此,對角線的虛部將始終被視為零。
- 返回:
- w(…, M,) ndarray
升序排列的特徵值,每個特徵值根據其重數重複。
- 引發:
- LinAlgError
如果特徵值計算未收斂。
另請參閱
eigh
實對稱或複 Hermitian(共軛對稱)陣列的特徵值和特徵向量。
eigvals
一般實數或複數陣列的特徵值。
eig
一般實數或複數陣列的特徵值和右特徵向量。
scipy.linalg.eigvalsh
SciPy 中的類似函數。
註解
廣播規則適用,請參閱
numpy.linalg
文件以了解詳細資訊。特徵值是使用 LAPACK 常式
_syevd
、_heevd
計算的。範例
>>> import numpy as np >>> from numpy import linalg as LA >>> a = np.array([[1, -2j], [2j, 5]]) >>> LA.eigvalsh(a) array([ 0.17157288, 5.82842712]) # may vary
>>> # demonstrate the treatment of the imaginary part of the diagonal >>> a = np.array([[5+2j, 9-2j], [0+2j, 2-1j]]) >>> a array([[5.+2.j, 9.-2.j], [0.+2.j, 2.-1.j]]) >>> # with UPLO='L' this is numerically equivalent to using LA.eigvals() >>> # with: >>> b = np.array([[5.+0.j, 0.-2.j], [0.+2.j, 2.-0.j]]) >>> b array([[5.+0.j, 0.-2.j], [0.+2.j, 2.+0.j]]) >>> wa = LA.eigvalsh(a) >>> wb = LA.eigvals(b) >>> wa; wb array([1., 6.]) array([6.+0.j, 1.+0.j])