%matplotlib inline
%config InlineBackend.figure_format='svg'
from numpy import pi,arange,linspace,sin,zeros,diag,sort
from scipy.linalg import toeplitz
from numpy.linalg import eig
L = 8.0
for N in range(6,37,6):
h = 2.0*pi/N; x = h*linspace(1,N,N); x = L*(x-pi)/pi
col = zeros(N)
col[0] = -pi**2/(3.0*h**2) - 1.0/6.0
col[1:] = -0.5*(-1.0)**arange(1,N)/sin(0.5*h*arange(1,N))**2
D2 = (pi/L)**2 * toeplitz(col)
evals,evecs = eig(-D2 + diag(x**2))
eigenvalues = sort(evals)
print("N = %d" % N)
for e in eigenvalues[0:4]:
print("%24.15e" % e)
N = 6 4.614729169954715e-01 7.494134621050520e+00 7.720916053006559e+00 2.883248377834012e+01 N = 12 9.781372812986032e-01 3.171605320647183e+00 4.455935291166786e+00 8.924529058119932e+00 N = 18 9.999700014993065e-01 3.000644066795828e+00 4.992595324407711e+00 7.039571897981498e+00 N = 24 9.999999976290365e-01 3.000000098410870e+00 4.999997965273278e+00 7.000024998156537e+00 N = 30 9.999999999999706e-01 3.000000000000749e+00 4.999999999975585e+00 7.000000000508598e+00 N = 36 1.000000000000004e+00 2.999999999999993e+00 4.999999999999999e+00 6.999999999999990e+00