docs: def analyze_eigenvalues(path,name,Ne):
  	r'''This function can be called after calling ``run_diagonalization`` if the option ``save_eigenvalues``
  is set to ``True``. It will return the shortest and longest oscillation period, and the shortest and
  longest half life. The results are lists ordered as:
  	``[detunings, shortest_oscillations, longest_oscillations, shortest_half_lifes, longest_half_lifes]``.
  
  The shortest oscillation period can be interpreted as a suggested size for the time step needed for a
  fine-grained picture of time evolution (an order of magnitude smaller is likely to be optimal).
  
  The longest half life can be interpreted as a suggested time for the stationary state to be reached
  (an order of magnitude larger is likely to be optimal).
  '''
  	times=characteristic_times(path,name)
  
  	min_osci=min([min(times[1+i]) for i in range(Ne**2-1)])
  	max_osci=max([max(times[1+i]) for i in range(Ne**2-1)])
  	min_half=min([min(times[1+Ne**2-1+i]) for i in range(Ne**2-1)])
  	max_half=max([max(times[1+Ne**2-1+i]) for i in range(Ne**2-1)])
  
  	return min_osci,max_osci,min_half,max_half