I’m working on a linear variational problem for a general PIB and I keep encountering the same problem, and I know its a rather simple solution. Any suggestions?
import numpy as np import scipy.integrate as sp #Parameters alpha = 0.1 L = 10.0 N = 5 x = np.linspace(0,L,1000) #Matrix elements linear combination components def f(x,n,L): return(np.sqrt(2./L)*np.sin(n*np.pi*x/L)) def f1(x,m,L): return( np.sqrt(2./L)*np.sin(m*np.pi*x/L)) #Linear Potential def V(x): return( alpha*x) #Matrix element functions to integrate def Int_1(x,n,m,L): return(f1(x,m,L)*f(x,n,L)+f1(x,m,L)*V(x)*f(x,n,L)) def Int_2(x,m,n,L): return(f1(x,m,L)*V(x)*f(x,n,L)) # Tring to integrate the matrix components def c(m,n,L): return(sp.quad(Int_1,0,L, args = (m,n,L), limit = 100)[0]) def c1(m,n,L): return(sp.quad(Int_2,0,L, args = (m,n,L), limit = 100)[0]) # Generating the matrix def cal_Hmn(m,n): if m == n: c(m,n,L) elif(m+n)%2 ==1: c1(m,n,L) else: return(0) #Filling the Matrix H = np.zeros((N,N), float) for i in range(N): for j in range(N): H[i,j] = cal_Hmn(i+1, j+1)
The problem is 100% in the integration of the matrix elements, but I cannot figure out how to rectify it.
Thanks!
Advertisement
Answer
It runs for me:
print(H)
returns
[[nan nan 0. nan 0.] [nan nan nan 0. nan] [ 0. nan nan nan 0.] [nan 0. nan nan nan] [ 0. nan 0. nan nan]]
Try updating your packages
I am using PyCharm and Python 3.8
JP