用矩阵函数在MatLab中相当于‘eigs’的Python

gopyfrb3  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(360)

如果我想要计算矩阵乘法AA‘的k个最小特征值,A的大小是300K乘以512,而’是转置,那么用传统的方法是不可行的。然而,通过使用函数参数来执行从Afun = @(x) A*(A'*x));eigs函数的乘积,MatLab提供了一个很好的功能。然后,为了找到最小的6个特征值/特征向量,我们称之为d = eigs(Afun,300000,6,'smallestabs'),其中第二个输入是矩阵AA‘的大小。在Python中有没有执行类似操作的函数?

xfyts7mz

xfyts7mz1#

据我所知,numpy中没有这样的功能。然而,我不认为简单地使用numpy.linalg.eigvals来检索矩阵特征值数组有任何限制。然后,只需通过以下排序找到N个最小的:

import numpy as np
import numpy.linalg

A = np.array() # your matrix
eigvals = numpy.linalg.eigvals(A)
eigvals.sort()
smallest_6_eigvals = eigvals[:6]

相关问题