【数值分析实验】矩阵特征值及特征向量计算:幂法、反幂法、幂法加速(python)

矩阵特征值及特征向量计算

调包

import numpy as np

幂法

#幂法算法 
def M(A,u0,epsilon = 1e-6,M=100):
    uk = u0
    mk_1 = 1
    k = 0
    while True:
        k += 1
        vk = A*uk  
        mk = vk[np.argmax(np.abs(vk))]    
        uk = vk / mk
        if np.abs(mk - mk_1) < epsilon:
            return mk,uk,k
        if k == M:
            print("算法失败!")
            return
        mk_1 = mk

幂法加速

#幂法加速
def M_plus(A,u0,epsilon,M=100,alpha = 0.5):
    uk = u0
    mk_1 = 1
    k = 0
    A = A - alpha * np.eye(len(A))
    while True:
        k += 1
        vk = A*uk  
        mk = vk[np.argmax(np.abs(vk))]    
        uk = vk / mk
        if np.abs(mk - mk_1) < epsilon:
            return mk,uk,k
        if k == M:
            print("算法失败!")
            return
        mk_1 = mk

反幂法

#反幂法
def M_anti(A,u0,epsilon = 1e-6,M=100):
    uk = u0
    mk_1 = 1
    k = 0
    while True:
        k += 1
        vk = np.matrix(np.linalg.inv(A.A))*uk  
        mk = vk[np.argmax(np.abs(vk))]    
        uk = vk / mk
        if np.abs(mk - mk_1) < epsilon:
            return (1/mk).A,uk.A,k
        if k == M:
            print("算法失败!")
            return
        mk_1 = mk
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值