import numpy as np
import matplotlib.pyplot as plt
import scipy.constants as pc
import math
import sys
import matplotlib.cm as cm
import time
from scipy.sparse import csc_matrix
from scipy.sparse.linalg import splu
from scipy.sparse import spdiags
import scipy.integrate as intg
np.set_printoptions(threshold=sys.maxsize)
dx=0.05 # x step , difference between x values
x0=0
sigma=0.7 #S.D of the gaussian
k0=15 #momenta of the wave packet**strong text**
Norm=(((2*np.pi)**(1/2))*sigma)**(-1/2) #gaussian normalisation
startx=-20 #beginning x value
stopx=100 #end x value
dt=0.001 #timestep
t0=0 #starting time
tmax=3 #code will output a wavefunction at tmax
ts=np.array([t0])
start=startx #beginning x value
stop=stopx #end x value
xvalues=np.arange(start,stop,dx) #creates an array of x values spacing dx**strong text**
def potential(length):
'''input the potential function here, returns an array of the potential values'''
V=np.zeros(length,complex)
height=50 #height of potential
barrier_start=48; barrier_end=50 #values in x space
i = int(startx + (barrier_start + 1 - startx)/dx) #lower bound
j = int(startx + (barrier_end + 1 - startx)/dx) #upper bound
for k in range(i,j):
V[k] = height
else:
V[k] = np.zeros(length,complex)
return V
Эта проблема относится к квантово-механическому моделированию волнового пакета, взаимодействующего с потенциалом, если это помогает. По сути, потенциальная функция начинается с [0,0, ..., 0], и я хочу, чтобы она стала [0,0, ... высота, высота, высота, ..., 0,0], где высота например, 5 и индексы, в которых значение есть высота, удовлетворяют неравенству, замеченному выше. Т.е. для индекса k: нижняя граница