%matplotlib inline from pylab import * from numpy import * #physical constants hbar = 1.0 m = 1.0 #discretization nx = 100 minx = -1. maxx = 1. x = linspace(minx, maxx, nx) #assemble the matrix Hamiltonian from d2matrix import d2matrix from scipy.sparse import dia_matrix def make_H(V): nx = len(V) kinetic = -hbar**2/(2*m)*d2matrix(nx) potential = diag(V) H = kinetic + potential return H V = zeros(nx) H = make_H(V) # calculate the eigenvectors eigvals, eigvecs = linalg.eig(H) eigvecs = array(eigvecs) for i in arange(nx): plot(x, eigvecs[:,i]+eigvals[i]*150) ylim([0, 10]) def solve(H): eigvals, eigvecs = linalg.eig(H) I = eigvals.argsort() eigvals = eigvals[I] eigvecs = array(eigvecs)[:,I] return eigvals, eigvecs V = x**2 H = make_H(V) eigvals, eigvecs = solve(H) figure(figsize(5,6)) for i in arange(10): plot(x, eigvecs[:,i]*.05+eigvals[i]) plot(x, V, lw=3) ylim([0, 0.3]) #discretization nx = 100 minx = -1. maxx = 1. x = linspace(minx, maxx, nx) V = zeros(nx) a1 = -0.5 a2 = 0.5 asize = 0.2 apot = -0.07 V[(x>a1-asize) & (xa2-asize) & (x