當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python SciPy linalg.eig用法及代碼示例

本文簡要介紹 python 語言中 scipy.linalg.eig 的用法。

用法:

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

求解方陣的普通或廣義特征值問題。

求一般矩陣的特征值 w 和右或左特征向量:

a   vr[:,i] = w[i]        b   vr[:,i]
a.H vl[:,i] = w[i].conj() b.H vl[:,i]

其中 .H 是 Hermitian 共軛。

參數

a (M, M) 數組

將計算其特征值和特征向量的複數或實數矩陣。

b (M, M) 數組,可選

廣義特征值問題中的右側矩陣。默認值為 None,假定為單位矩陣。

left 布爾型,可選

是否計算並返回左特征向量。默認為假。

right 布爾型,可選

是否計算並返回右特征向量。默認為真。

overwrite_a 布爾型,可選

是否覆蓋a;可以提高性能。默認為假。

overwrite_b 布爾型,可選

是否覆蓋b;可以提高性能。默認為假。

check_finite 布爾型,可選

是否檢查輸入矩陣是否僅包含有限數。禁用可能會提高性能,但如果輸入確實包含無窮大或 NaN,則可能會導致問題(崩潰、非終止)。

homogeneous_eigvals 布爾型,可選

如果為 True,則返回齊次坐標中的特征值。在這種情況下,w 是一個 (2, M) 數組,因此:

w[1,i] a vr[:,i] = w[0,i] b vr[:,i]

默認為假。

返回

w (M,) 或 (2, M) 雙精度或複數 ndarray

特征值,每個都根據其多重性重複。形狀為 (M,) 除非 homogeneous_eigvals=True

vl (M, M) 雙精度或複數 ndarray

與特征值w[i]對應的歸一化左特征向量是列vl[:,i]。僅在 left=True 時返回。

vr (M, M) 雙精度或複數 ndarray

對應於特征值 w[i] 的歸一化右特征向量是列 vr[:,i] 。僅在 right=True 時返回。

拋出

LinAlgError

如果特征值計算不收斂。

例子

>>> import numpy as np
>>> from scipy import linalg
>>> a = np.array([[0., -1.], [1., 0.]])
>>> linalg.eigvals(a)
array([0.+1.j, 0.-1.j])
>>> b = np.array([[0., 1.], [1., 1.]])
>>> linalg.eigvals(a, b)
array([ 1.+0.j, -1.+0.j])
>>> a = np.array([[3., 0., 0.], [0., 8., 0.], [0., 0., 7.]])
>>> linalg.eigvals(a, homogeneous_eigvals=True)
array([[3.+0.j, 8.+0.j, 7.+0.j],
       [1.+0.j, 1.+0.j, 1.+0.j]])
>>> a = np.array([[0., -1.], [1., 0.]])
>>> linalg.eigvals(a) == linalg.eig(a)[0]
array([ True,  True])
>>> linalg.eig(a, left=True, right=False)[1] # normalized left eigenvector
array([[-0.70710678+0.j        , -0.70710678-0.j        ],
       [-0.        +0.70710678j, -0.        -0.70710678j]])
>>> linalg.eig(a, left=False, right=True)[1] # normalized right eigenvector
array([[0.70710678+0.j        , 0.70710678-0.j        ],
       [0.        -0.70710678j, 0.        +0.70710678j]])

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.linalg.eig。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。