#!/usr/bin/env python # coding: utf-8 # # p21: Eigenvalues of Mathieu operator # In[1]: get_ipython().run_line_magic('matplotlib', 'inline') get_ipython().run_line_magic('config', "InlineBackend.figure_format='svg'") from numpy import pi,arange,sin,cos,zeros,diag,sort,real from scipy.linalg import toeplitz from numpy.linalg import eig from itertools import cycle from matplotlib.pyplot import figure,plot,xlabel,ylabel # In[2]: 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$");