我试图用python使用shift-invert模式计算复杂网络(有10000个节点)的laplacian矩阵的第二个最小特征值,代码如下:
import numpy as np
import networkx as nx
from scipy import sparse
G = nx.watts_strogatz_graph(10000,4,0.1)
degree_dict = nx.degree(G)
degree_list = []
for i in degree_dict:
degree_list.append(degree_dict[i])
lap_matrix = sparse.diags(degree_list, 0)-nx.adjacency_matrix(G)
eigval, eigvec = sparse.linalg.eigsh(lap_matrix, 2, sigma=0, which='LM')
second_eigval = eigval[1]
当运行上述代码时,我得到:
^{pr2}$这个错误是否意味着拉普拉斯矩阵是奇异的? 我该怎么办? 有没有其他方法来计算这个次最小特征值(用Matlab或任何其他编程语言)?在
您的代码对我(scipy1.0.0)的工作原理几乎与编写的一样,只是我简化了
degree_list
的格式(在您的版本中抛出了一个KeyError)现在eigval是
[1.48814294e-16, 4.88863211e-02]
;在机器精度范围内,最小特征值为零,但第二个最小特征值不是。在相关问题 更多 >
编程相关推荐