幂法求解矩阵特征值及特征向量

您所在的位置:网站首页 设k法求最值 幂法求解矩阵特征值及特征向量

幂法求解矩阵特征值及特征向量

2024-07-16 09:04| 来源: 网络整理| 查看: 265

文章目录 幂法含义基础知识思想实例Python实现

幂法 含义

幂法是计算矩阵的按模最大的特征值和相应特征向量的一种向量迭代法

适用于大型稀疏矩阵

基础知识

求矩阵A特征值问题等价于求A的特征方程。

∣ λ E − A ∣ = [ λ − a 11 − a 12 ⋯ − a 1 n − a 21 λ − a 22 ⋯ − a 2 n ⋯ ⋯ ⋯ ⋯ λ − a n 1 − a n 2 ⋯ λ − a n n ] = 0 |\lambda E-A| = \left[ \begin{matrix} \lambda-a_{11} ; -a_{12} ; \cdots ; -a_{1n} \\ -a_{21} ; \lambda-a_{22} ; \cdots ; -a_{2n} \\ \cdots ; \cdots ; \cdots ; \cdots \\ \lambda-a_{n1} ; -a_{n2} ; \cdots ; \lambda-a_{nn} \\ \end{matrix} \right] = 0 ∣λE−A∣=⎣⎢⎢⎡​λ−a11​−a21​⋯λ−an1​​−a12​λ−a22​⋯−an2​​⋯⋯⋯⋯​−a1n​−a2n​⋯λ−ann​​⎦⎥⎥⎤​=0 求A的属于特征值\lambda的特征向量等价求 ( λ E − A ) x = 0 (\lambda E -A)x =0 (λE−A)x=0 的非零解 设 λ 为 A ∈ R x ∗ n 的 特 征 值 , x 称 为 A 的 与 特 征 值 λ 相 对 应 的 一 个 特 征 向 量 , 即 A x = λ x , ( x ≠ 0 ) , 则 有 : 设\lambda 为A\in R^{x*n}的特征值,x称为A的与特征值\lambda 相对应的一个特征向量,即Ax = \lambda x,(x\neq0),则有: 设λ为A∈Rx∗n的特征值,x称为A的与特征值λ相对应的一个特征向量,即Ax=λx,(x̸​=0),则有: (1) c x ( c ≠ 0 ) 也 是 A 的 与 特 征 值 λ 相 对 应 的 一 个 特 征 向 量 , 即 A c x = λ c x cx(c\neq0)也是A的与特征值\lambda 相对应的一个特征向量,即Acx = \lambda cx cx(c̸​=0)也是A的与特征值λ相对应的一个特征向量,即Acx=λcx (2) λ k 为 A k 的 特 征 值 , A k x = λ k x \lambda ^k为A^k的特征值,A^kx=\lambda ^kx λk为Ak的特征值,Akx=λkx

思想

设n阶矩阵A的特征值和特征向量为 λ 1 , λ 2 , . . . , λ n       v 1 , v 2 , . . . v n \lambda_1,\lambda_2,...,\lambda_n    v_1,v_2,...v_n λ1​,λ2​,...,λn​   v1​,v2​,...vn​ v 1 , v 2 , . . . v n 线 性 无 关 , 且 v_1,v_2,...v_n线性无关,且 v1​,v2​,...vn​线性无关,且 ∣ λ 1 ∣ ; ∣ λ 2 ∣ ; . . . ; ∣ λ n ∣ |\lambda_1|;|\lambda_2|;...;|\lambda_n| ∣λ1​∣>∣λ2​∣>...>∣λn​∣ 称 λ 1 为 A 的 按 模 最 大 特 征 值 ( 主 特 征 值 ) 称\lambda_1为A的按模最大特征值(主特征值) 称λ1​为A的按模最大特征值(主特征值)

任取非零向量 x 0 = ( x 1 ( 0 ) , x x ( 0 ) , ⋯   , x n ( 0 ) ) x_0 =(x_1^{(0)},x_x^{(0)},\cdots,x_n^{(0)}) x0​=(x1(0)​,xx(0)​,⋯,xn(0)​) 特征向量构成n维空间的一组基.任取的初始向量X(0)由它们的线性组合给出 x 0 = a 1 v 1 + a 2 v 2 + … + a n v n x_0 =a_1v_1+a_2v_2+…+a_nv_n x0​=a1​v1​+a2​v2​+…+an​vn​ 假 设 a 1 ≠ 0 , 由 此 构 造 向 量 序 列 x k = A x k − 1 , k = 1 , 2 , 3... 假设a_1\neq0,由此构造向量序列x_k = Ax_{k-1},k=1,2,3... 假设a1​̸​=0,由此构造向量序列xk​=Axk−1​,k=1,2,3... 其中, x 1 = A x 0 = a 1 A v 1 + a 2 A v 2 + . . . + a n A v n = x_1=Ax_0=a_1Av_1+a_2Av_2+...+a_nAv_n= x1​=Ax0​=a1​Av1​+a2​Av2​+...+an​Avn​=                                           = a 1 λ 1 v 1 + a 2 λ 2 v 2 + . . . + a n λ n v n                       =a_1\lambda_1v_1+a_2\lambda_2v_2+...+a_n\lambda_nv_n                      =a1​λ1​v1​+a2​λ2​v2​+...+an​λn​vn​

x 2 = A x 1 = a 1 λ 1 A v 1 + a 2 λ 2 A v 2 + . . . + a n λ n A v n = x_2=Ax_1=a_1\lambda_1Av_1+a_2\lambda_2Av_2+...+a_n\lambda_nAv_n= x2​=Ax1​=a1​λ1​Av1​+a2​λ2​Av2​+...+an​λn​Avn​=                                           = a 1 λ 1 2 v 1 + a 2 λ 2 2 v 2 + . . . + a n λ n 2 v n                       =a_1\lambda_1^2v_1+a_2\lambda_2^2v_2+...+a_n\lambda_n^2v_n                      =a1​λ12​v1​+a2​λ22​v2​+...+an​λn2​vn​

得到向量序列: x 1 = a 1 λ 1 v 1 + a 2 λ 2 v 2 + . . . + a n λ n v n x_1=a_1\lambda_1v_1+a_2\lambda_2v_2+...+a_n\lambda_nv_n x1​=a1​λ1​v1​+a2​λ2​v2​+...+an​λn​vn​ x 2 = a 1 λ 1 2 v 1 + a 2 λ 2 2 v 2 + . . . + a n λ n 2 v n x_2= a_1\lambda_1^2v_1+a_2\lambda_2^2v_2+...+a_n\lambda_n^2v_n x2​=a1​λ12​v1​+a2​λ22​v2​+...+an​λn2​vn​             …       \dots       … x k = a 1 λ 1 k v 1 + a 2 λ 2 k v 2 + . . . + a n λ n k v n x_k= a_1\lambda_1^kv_1+a_2\lambda_2^kv_2+...+a_n\lambda_n^kv_n xk​=a1​λ1k​v1​+a2​λ2k​v2​+...+an​λnk​vn​

下面按模最大特征值λ1是单根的情况讨论: x k = a 1 λ 1 k v 1 + a 2 λ 2 k v 2 + . . . + a n λ n k v n = λ 1 k [ a 1 v 1 + a 2 ( λ 2 λ 1 ) k v 2 + . . . + a n ( λ n λ 1 ) 2 v n ] = λ 1 k ( a 1 v 1 + ε k ) x_k= a_1\lambda_1^kv_1+a_2\lambda_2^kv_2+...+a_n\lambda_n^kv_n=\lambda_1^k[a_1v_1 +a_2(\frac{\lambda_2}{\lambda_1})^kv_2+...+a_n(\frac{\lambda_n}{\lambda_1})^2v_n]=\lambda_1^k(a_1v_1+\varepsilon_k) xk​=a1​λ1k​v1​+a2​λ2k​v2​+...+an​λnk​vn​=λ1k​[a1​v1​+a2​(λ1​λ2​​)kv2​+...+an​(λ1​λn​​)2vn​]=λ1k​(a1​v1​+εk​)

ε k = a 2 ( λ 2 λ 1 ) k v 2 + . . . + a n ( λ n λ 1 ) 2 v n \varepsilon_k=a_2(\frac{\lambda_2}{\lambda_1})^kv_2+...+a_n(\frac{\lambda_n}{\lambda_1})^2v_n εk​=a2​(λ1​λ2​​)kv2​+...+an​(λ1​λn​​)2vn​ 由于 ∣ λ 1 ∣ ; ∣ λ 2 ∣ ; . . . ; ∣ λ n ∣     故 ∣ λ j λ 1 ∣ ; 1 ( j = 2 , 3 , . . . n ) , 故 : |\lambda_1|;|\lambda_2|;...;|\lambda_n|  故|\frac{\lambda_j}{\lambda_1}|;1(j=2,3,...n),故: ∣λ1​∣>∣λ2​∣>...>∣λn​∣  故∣λ1​λj​​∣1时,xk​中不为0的分量会随着k→∞而趋于∞,计算机计算时会造成溢出,当|\lambda_1| min_delta: itrs_num += 1 y = np.dot(mat, x) #print(y) m = y.max() #print("m={0}".format(m)) x = y / m print("***********第{}次迭代*************".format(itrs_num)) print("y = ",y) print("m={0}".format(m)) print("x^T为:",x) print( "===================================") IOS = np.array([[2, 3, 2], [10, 3, 4], [3, 6, 1]], dtype=float) Solve(IOS, 10, 1e-10)

输出:

***********第1次迭代************* y = [[ 7.] [17.] [10.]] m=17.0 x^T为: [[0.41176471] [1. ] [0.58823529]] =================================== ***********第2次迭代************* y = [[5. ] [9.47058824] [7.82352941]] m=9.470588235294118 x^T为: [[0.52795031] [1. ] [0.82608696]] =================================== ***********第3次迭代************* y = [[ 5.70807453] [11.58385093] [ 8.40993789]] m=11.58385093167702 x^T为: [[0.49276139] [1. ] [0.72600536]] =================================== ***********第4次迭代************* y = [[ 5.43753351] [10.83163539] [ 8.20428954]] m=10.831635388739945 x^T为: [[0.50200485] [1. ] [0.75743775]] =================================== ***********第5次迭代************* y = [[ 5.5188852 ] [11.04979951] [ 8.2634523 ]] m=11.049799514875502 x^T为: [[0.49945569] [1. ] [0.74783731]] =================================== ***********第6次迭代************* y = [[ 5.49458599] [10.98590609] [ 8.24620437]] m=10.985906091381928 x^T为: [[0.50014864] [1. ] [0.75061668]] =================================== ***********第7次迭代************* y = [[ 5.50153064] [11.00395312] [ 8.2510626 ]] m=11.003953118800313 x^T为: [[0.49995948] [1. ] [0.74982713]] =================================== ***********第8次迭代************* y = [[ 5.49957322] [10.99890329] [ 8.24970556]] m=10.998903290037243 x^T为: [[0.50001105] [1. ] [0.75004801]] =================================== ***********第9次迭代************* y = [[ 5.50011813] [11.00030258] [ 8.25008117]] m=11.000302582696586 x^T为: [[0.49999699] [1. ] [0.74998675]] =================================== ***********第10次迭代************* y = [[ 5.49996747] [10.99991685] [ 8.24997771]] m=10.999916852432536 x^T为: [[0.50000082] [1. ] [0.75000364]] ===================================


【本文地址】


今日新闻


推荐新闻


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