import numpy as np import matplotlib.pyplot as plt from scipy import optimize x=np.arange(0,1,0.0001) a=float(input("Enter eefective well width =")) beta=a def func(x): return np.tan(beta*np.sqrt(x))-np.sqrt(x*(1-x))/(x-0.5) nmax=int(np.trunc(beta/np.pi+0.5))+1 xdata=np.zeros(nmax) xtest=0 for i in range(nmax): xdata[i]=(np.pi*(i+0.5)/beta)**2 if (i==0): continue if (xdata[i-1]<0.5 and xdata[i]>0.5): xdata[i]=0.5 xtest=1 continue if (xtest == 1): xdata[i]=(np.pi*(i-0.5)/beta)**2 lp=1.0001 rp=0.9999 for i in range(nmax): tout=0 lv=xdata[i]*lp if (i == nmax-1): rv=1. else: rv=xdata[i+1]*rp if (func(lv)*func(rv)>0): tout=1 else: root=optimize.brentq(func,lv,rv,xtol=1.e-7,rtol=1.e-8) if (tout != 1): print ("For energy level",i,"E/Uo is:",root)