title: How to get the second smallest eigenvalue of laplacian matrix of a complex network with python?
body: <p>I'm trying to compute the second smallest eigenvalue of the laplacian matrix of a complex network(with 10000 nodes) with python using the shift-invert mode, here is the code:</p>
  
  <pre><code>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]
  </code></pre>
  
  <p>when running above code, i got:</p>
  
  <pre><code>RuntimeError: Factor is exactly singular
  </code></pre>
  
  <p>Does the error mean the laplacian matrix is singular?
  Any ideas as to how I should proceed?
  Is there any other way to compute this second smallest eigenvalue(with Matlab or any other programming language)?</p>