求解特征值和特征向量 · python 学习记录

您所在的位置:网站首页 怎样快速求出特征值 求解特征值和特征向量 · python 学习记录

求解特征值和特征向量 · python 学习记录

2024-06-19 04:06| 来源: 网络整理| 查看: 265

求解特征值和特征向量求解问题基本使用求解特征值和特征向量 scipy.linalg.eig(a, b=None, left=False, right=True, overwrite_a=False, overwrite_b=False, check_finite=True) a:一个方阵,形状为(M,M)。待求解特征值和特征向量的矩阵。 b:默认为None,表示求解标准的特征值问题: Ax=λx\mathbf{A} \mathbf{x}=\lambda \mathbf{x}Ax=λx。 也可以是一个形状与a相同的方阵,此时表示广义特征值问题: Ax=λBx\mathbf{A} \mathbf{x}=\lambda \mathbf{B} \mathbf{x}Ax=λBx left:一个布尔值。如果为True,则计算左特征向量 right:一个布尔值。如果为True,则计算右特征向量 overwrite_a:一个布尔值,指定是否将结果写到a的存储区。 overwrite_b:一个布尔值,指定是否将结果写到b的存储区。 check_finite:如果为True,则检测输入中是否有nan或者inf

返回值:

w:一个一维数组,代表了M特特征值。 vl:一个数组,形状为(M,M),表示正则化的左特征向量(每个特征向量占据一列,而不是一行)。仅当left=True时返回 vr:一个数组,形状为(M,M),表示正则化的右特征向量(每个特征向量占据一列,而不是一行)。仅当right=True时返回

numpy提供了numpy.linalg.eig(a)来计算特征值和特征向量

有特征值:Axr=λxr\mathbf{A} \mathbf{x}_{r}=\lambda \mathbf{x}_{r}Ax​r​​=λx​r​​ ; 左特征值: image-20200705160639225为特征值的共轭。

令 P=[xr1,xr2,⋯,xrM]\mathbf{P}=\left[\mathbf{x}_{r 1}, \mathbf{x}_{r 2}, \cdots, \mathbf{x}_{r M}\right]P=[x​r1​​,x​r2​​,⋯,x​rM​​] Σ=[λ100⋯00λ20⋯0⋮⋮⋮⋱⋮000⋯λM] \mathbf{\Sigma}=\left[\begin{array}{ccccc} \lambda_{1} & 0 & 0 & \cdots & 0 \\ 0 & \lambda_{2} & 0 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & \lambda_{M} \end{array}\right] Σ=​⎣​⎢​⎢​⎡​​​λ​1​​​0​⋮​0​​​0​λ​2​​​⋮​0​​​0​0​⋮​0​​​⋯​⋯​⋱​⋯​​​0​0​⋮​λ​M​​​​​⎦​⎥​⎥​⎤​​

则有: AP=PΣ⟹A=PΣP−1 \mathbf{A P}=\mathbf{P \Sigma} \Longrightarrow \mathbf{A}=\mathbf{P} \mathbf{\Sigma P}^{-1} AP=PΣ⟹A=PΣP​−1​​

求解问题 linalg.eig(A) 返回矩阵的特征值与特征向量 linalg.eigvals(A) 返回矩阵的特征值 linalg.eig(A, B) 求解 Av=λBv\mathbf{A} \mathbf{v}=\lambda \mathbf{B} \mathbf{v}Av=λBv 的问题 基本使用

例子

矩阵为: A=[152241362] \mathbf{A}=\left[\begin{array}{lll} 1 & 5 & 2 \\ 2 & 4 & 1 \\ 3 & 6 & 2 \end{array}\right] A=​⎣​⎡​​​1​2​3​​​5​4​6​​​2​1​2​​​⎦​⎤​​ 特征多项式为: ∣A−λI∣=(1−λ)[(4−λ)(2−λ)−6]−5[2(2−λ)−3]+2[12−3(4−λ)]=−λ3+7λ2+8λ−3 \begin{aligned} |\mathbf{A}-\lambda \mathbf{I}|=&(1-\lambda)[(4-\lambda)(2-\lambda)-6]-\\ & 5[2(2-\lambda)-3]+2[12-3(4-\lambda)] \\ =&-\lambda^{3}+7 \lambda^{2}+8 \lambda-3 \end{aligned} ​∣A−λI∣=​​=​​​(1−λ)[(4−λ)(2−λ)−6]−​5[2(2−λ)−3]+2[12−3(4−λ)]​−λ​3​​+7λ​2​​+8λ−3​​ 特征根为: λ1=7.9579λ2=−1.2577λ3=0.2997 \begin{array}{l} \lambda_{1}=7.9579 \\ \lambda_{2}=-1.2577 \\ \lambda_{3}=0.2997 \end{array} ​λ​1​​=7.9579​λ​2​​=−1.2577​λ​3​​=0.2997​​

求解特征值和特征向量 [152241362] \left[\begin{array}{lll} 1 & 5 & 2 \\ 2 & 4 & 1 \\ 3 & 6 & 2 \end{array}\right] ​⎣​⎡​​​1​2​3​​​5​4​6​​​2​1​2​​​⎦​⎤​​

import numpy as np from scipy.linalg import eig a = np.array([[1,5,2],[2,4,1],[3,6,2]]) w,vr=eig(a,right=True) print(w) print(vr)

结果:

# 每一个为一个特征值 [ 7.9579162 +0.j -1.25766471+0.j 0.2997485 +0.j] # 每一列对应一个特征值的特征向量 [[-0.5297175 -0.90730751 0.28380519] [-0.44941741 0.28662547 -0.39012063] [-0.71932146 0.30763439 0.87593408]] Update time: 2020-07-05


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3