#!/usr/bin/env python # coding: utf-8 # # p08: Eigenvalues of harmonic oscillator $-u'' + x^2 u$ on $R$ # In[1]: get_ipython().run_line_magic('matplotlib', 'inline') get_ipython().run_line_magic('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 # In[3]: 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)