Python 具有随机高斯元素的5x5对称矩阵特征值的收敛性

Python 具有随机高斯元素的5x5对称矩阵特征值的收敛性,python,numpy,linear-algebra,numerical-methods,numerical-computing,Python,Numpy,Linear Algebra,Numerical Methods,Numerical Computing,我的问题涉及到将一个5x1向量反复应用于一个具有高斯随机元素的5x5对称矩阵。我想证明我对特征值的估计是收敛的(逐渐趋于零) 我使用了一个与这里找到的代码类似的代码:并试图修改它以适应我的问题 在运行下面的代码后,我发现了以下结果-[2.460508363078007,1.9278897530810486,1.5179404650567603,1.2006967066279755,0.9530814844968405]-这表明了我认为特征值的收敛性 对于我的问题,这个代码可以接受吗 import

我的问题涉及到将一个5x1向量反复应用于一个具有高斯随机元素的5x5对称矩阵。我想证明我对特征值的估计是收敛的(逐渐趋于零)

我使用了一个与这里找到的代码类似的代码:并试图修改它以适应我的问题

在运行下面的代码后,我发现了以下结果-[2.460508363078007,1.9278897530810486,1.5179404650567603,1.2006967066279755,0.9530814844968405]-这表明了我认为特征值的收敛性

对于我的问题,这个代码可以接受吗

import numpy as np
import numpy.linalg as la

eps = 1e-8 # Precision of eigenvalue

def trans(v): # translates vector (v^T)
    v_1 = np.copy(v)
    return v_1.reshape((5, 5))

def power(A):
    eig = []
    Ac = np.copy(A)
    lamb = 0
    for i in range(5):
        x = np.random.uniform(0.0,1.0)
        while True:
            x_1 = Ac.dot(x) # y_n = A*x_(n-1)
            x_norm = la.norm(x_1) 
            x_1 = x_1/x_norm # x_n = y_n/||y_n||
            if(abs(lamb - x_norm) <= eps): # If precision is reached, it returns eigenvalue
                break
            else:
                lamb = x_norm
                x = x_1
        eig.append(lamb)

        # Matrix Deflaction: A - Lambda * norm[V]*norm[V]^T
        v = x_1/la.norm(x_1)
        R = v * trans(v)
        R = eig[i]*R
        Ac = Ac - R

    return eig

def main():
    A = np.array(np.random.uniform(0.0,1.0,25)).reshape((5, 5))
    print(power(A))



if __name__ == '__main__':
    main()

将numpy导入为np
将numpy.linalg作为la导入
eps=1e-8#特征值精度
def trans(v):#转换向量(v^T)
v_1=np.拷贝(v)
返回v_1.重塑((5,5))
def电源(A):
eig=[]
Ac=np.副本(A)
兰姆=0
对于范围(5)中的i:
x=np.随机均匀(0.0,1.0)
尽管如此:
x_1=Ac.dot(x)#y_n=A*x_(n-1)
x_范数=la.范数(x_1)
x_1=x_1/x_范数#x_n=y_n/| y|n||
if(绝对值(兰姆-x_标准)