自学内容网 自学内容网

特征值计算(大数据作业)

  这节课老师讲的是用幂法来求特征值和特征向量,采用迭代的方法计算矩阵模最大的特征值和对于的特征向量

  课上还有动画演示,可以说老师非常用心啦~

证明过程涉及到线性代数方面的知识,我只能说找时间复习,≧ ﹏ ≦


基于规范化的幂法求解主特征值及其对应的特征向量

def power_method(A,max_iter=100,tolerance=1e-9):
    n,_ = A.shape
    u = np.random.rand(n)
    u = u / np.linalg.norm(u)

    la_old = 0
    for _ in range(max_iter):
       
        v = A @ u
        u = v / np.linalg.norm(v)
        la_new = u.T @ A @ u
        if abs(la_new - la_old) < tolerance:
            break
            
        la_old = la_new
    
    return la_new,u

参数可以自己设置,A是一个实对称矩阵,max_iter是最大的迭代次数,tolerance 是用于设置迭代停止的条件之一 ,是精度要求

u 是随机设置的一个向量,通过迭代不断地更新lambda( 特征值 ) 以及u(对应的特征向量),对向量 u 不断地规范化是为了避免溢出现象的发生。

用 @ 或者是用 np.dot(a,b)来计算矩阵之间的乘法都是可以的

有什么问题欢迎指正批评!

另外,数学证明就不附上了


原文地址:https://blog.csdn.net/C_K_Y/article/details/142895745

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!