N = 42; h = 2.0*pi/N; x = h*arange(1,N+1)
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 = toeplitz(col)
ne = 11 # number of eigenvalues to plot
qq = arange(0.0, 15.0, 0.2)
data= zeros((len(qq),ne))
i = 0
for q in qq:
evals,evecs = eig(-D2 + 2.0*q*diag(cos(2.0*x)))
e = real(sort(evals))
data[i,:] = e[0:ne]
i = i + 1
figure(figsize=(5,10))
lines=cycle(["-","--"])
for i in range(ne):
plot(qq,data[:,i],next(lines))
xlabel("q")
ylabel("$\\lambda$");