如果我想要计算矩阵乘法AA‘的k个最小特征值,A的大小是300K乘以512,而’是转置,那么用传统的方法是不可行的。然而,通过使用函数参数来执行从Afun = @(x) A*(A'*x));到eigs函数的乘积,MatLab提供了一个很好的功能。然后,为了找到最小的6个特征值/特征向量,我们称之为d = eigs(Afun,300000,6,'smallestabs'),其中第二个输入是矩阵AA‘的大小。在Python中有没有执行类似操作的函数?
Afun = @(x) A*(A'*x));
eigs
d = eigs(Afun,300000,6,'smallestabs')
xfyts7mz1#
据我所知,numpy中没有这样的功能。然而,我不认为简单地使用numpy.linalg.eigvals来检索矩阵特征值数组有任何限制。然后,只需通过以下排序找到N个最小的:
numpy
numpy.linalg.eigvals
import numpy as np import numpy.linalg A = np.array() # your matrix eigvals = numpy.linalg.eigvals(A) eigvals.sort() smallest_6_eigvals = eigvals[:6]
1条答案
按热度按时间xfyts7mz1#
据我所知,
numpy
中没有这样的功能。然而,我不认为简单地使用numpy.linalg.eigvals
来检索矩阵特征值数组有任何限制。然后,只需通过以下排序找到N个最小的: