我正在尝试使用移位反转模式使用python计算复杂网络(具有10000个节点)的拉普拉斯矩阵的第二小的特征值,这里是代码:
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]
运行上面的代码时,我得到:
RuntimeError: Factor is exactly singular
错误是否意味着拉普拉斯矩阵是奇异的?关于我应该如何进行的任何想法?有没有其他方法来计算这个第二小的特征值(使用 Matlab 或任何其他编程语言)?