这是可能的,因为PageRank是一种特征值形式,这就是MapReduce引入的原因.但是在实际实现中似乎存在问题,例如每台从属计算机都必须维护矩阵的副本?
在MATLAB中,当我运行[V,D] = eig(a)对称矩阵的命令时,最大特征值(及其相关向量)位于最后一列.但是,当我使用非对称矩阵运行它时,最大的特征值在第一列中.
我正在尝试计算特征向量中心性,这要求我将计算与最大特征值相关联的特征向量.因此,最大的特征值出现在两个不同的位置这一事实使我很难找到解决方案.
我需要计算(稀疏)矩阵的最大特征值.我实现了幂迭代方法,但收敛速度太慢,所以我想使用一个包.有人有推荐吗?
什么是最好的C++特征值计算包?优选地,小的并且易于编译.
我想知道是否有一个Python包,numpy或其他,它有一个函数来计算一个小矩阵的第一个特征值和特征向量,比如2x2.我可以在numpy中使用linalg包,如下所示.
import numpy as np
def whatever():
A = np.asmatrix(np.rand(2, 2))
evals, evecs = np.linalg.eig(A)
#Assume that the eigenvalues are ordered from large to small and that the
#eigenvectors are ordered accordingly.
return evals[0], evecs[:, 0]
Run Code Online (Sandbox Code Playgroud)
但这需要很长时间.我怀疑这是因为numpy通过某种迭代过程计算特征向量.所以我想知道是否有一个更快的算法只返回第一个(最大的)特征值和特征向量,因为我只需要第一个.
对于2x2矩阵,我当然可以自己编写一个函数,分析计算特征值和特征向量,但是浮点计算存在问题,例如当我将一个非常大的数字除以一个非常小的数字时,我得到无穷大或NaN .有人对这个有了解吗?请帮忙!先感谢您!
我正在使用GSL库中的函数gsl_eigen_nonsymm和/或gsl_eigen_symm来找到L x L矩阵的特征值,该矩阵M[i][j]也是时间的函数,t = 1,....,N因此我必须M[i][j][t]得到每个ti的特征值,分配一个L x L矩阵E[i][j] = M[i][j][t]并对其进行对角化对于每一个.
问题是程序在一些迭代后给出了不同顺序的特征值.例如(L = 3),如果在t = 0我得到eigen[t = 0] = {l1,l2,l3}(0)在 t = 1i可以得到eigen[t = 1] = {l3,l2,l1}(1)而我需要总是有{l1,l2,l3}(t)
更具体的:考虑矩阵M (t) ) = {{0,t,t},{t,0,2t},{t,t,0}}的特征值将始终是(approximatevly)l1 = -1.3 t , l2 = -t , l3 = 2.3 t当我试图对角化它(与下面的代码)我在特征值的结果中多次交换.有没有办法防止它?我不能只按它的大小对它们进行排序我需要它们始终处于相同的顺序(无论它是什么)先验.(下面的代码只是解释我的问题的一个例子)
编辑:我不能只对它们进行排序,因为先验我不知道它们的价值,也不是l1<l2<l3因为统计波动它们是否可靠地具有类似的结构,这就是为什么我想知道是否有办法制作算法行为总是以相同的方式运行,以便特征值的顺序始终相同,或者是否有一些技巧可以使它发生.
为了更清楚,我将尝试重新描述我在这里提出的玩具问题.我们有一个矩阵,它取决于时间,我可能天真地,期望得到 lambda_1(t).....lambda_N(t),而我所看到的是算法经常在不同的时间交换特征值,所以如果t = 1 I've got ( lambda_1,lambda_2,lambda_3 )(1) at time t = …
我正在编写一个包含很多步骤 (PCA) 的算法,其中两个正在查找给定矩阵的特征值和特征向量。
我不想为它编写整个代码,因为我知道这是一项很长的工作,所以我为此搜索了一些临时代码,但只找到了 1 或 2 个库,起初我不想包含库,但我没有想转移到matlab。
是否有任何算法/教程/代码似乎不太难理解?
我正在尝试计算这个矩阵的特征向量和特征值
import numpy as np
la = 0.02
mi = 0.08
n = 500
d1 = np.full(n, -(la+mi), np.double)
d1[0] = -la
d1[-1] = -mi
d2 = np.full(n-1, la, np.double)
d3 = np.full(n-1, mi, np.double)
A = np.diagflat(d1) + np.diagflat(d2, -1) + np.diag(d3, 1)
e_values, e_vectors = np.linalg.eig(A)
Run Code Online (Sandbox Code Playgroud)
如果我将矩阵的维度设置为 n < 110,则输出很好。但是,如果我将其设置为 n >= 110,则特征值和特征向量分量都会变成具有显着虚部的复数。为什么会发生这种情况?它应该发生吗?这是非常奇怪的行为,坦率地说,我有点卡住了。
我想在Python中找到稀疏矩阵的N个最小特征值.我尝试过使用该scipy.sparse.linalg.eigen.arpack软件包,但计算最小的特征值时速度非常慢.我在某处看到有一个移位反转模式,但是当我尝试使用它时,我收到一条错误消息,告诉我还没有支持shift-invert模式.关于我应该如何进行的任何想法?
在我的例子中,我正在编写代码来计算非常大的矩阵的经典多维缩放(缩写为MDS). nnn = 500,000
在MDS一步,我需要计算创3个特征值及其对应的特征向量的n通过n矩阵.该矩阵称为B矩阵.我只需要这三个特征向量和特征值.计算大矩阵的特征向量和特征值的常用方法需要很长时间,而且我不需要非常准确的答案,因此我正在寻找特征向量和特征值的估计.
一些参数:
我的问题:是否有快速估算这种大B矩阵的三个特征向量和特征值的方法?
我的进展:我找到了一种近似矩阵最高特征值的方法,但我不知道是否可以将其推广到最高的三个.我也发现这篇论文写于1996年,但它非常技术性,对我来说很难阅读.