I am trying to approximate the wavefunction of a particle in a delta potential U(x)=−U0δ(x) with V0>0. I am using the following formula to calculate the wavefunction:
ψ(x+Δx)=2ψ(x)−ψ(x−Δx)+(Δx)2(V(x)−ϵ)ψ(x)
This can be derived from the one dimensional, time-independent, one-dimensional schrödinger-equation ψ″(x)=(U(x)−ϵ)ψ(x).
The following C++-code sippet shows the calculation:
double phi_x_prev = 0;
double phi_x_curr = 1e-100;
double phi_x_next = 0;
m_value.push_back(phi_x_curr);
double stepSq = step * step;
for (double x = -xmax + step; x <= xmax; x += step)
{
phi_x_next =
(2 * phi_x_curr - phi_x_prev) // O(1)
+ stepSq * (system->Potential(x) - eps)*phi_x_curr; // O(step^2)
m_value.push_back(phi_x_next);
phi_x_prev = phi_x_curr;
phi_x_curr = phi_x_next;
}
The solution looks good for x<0, but for x>0 the wavefunction starts growing exponentially, which is not compatible with the boundary condition ψ(x)→∞ for x→±∞.
What did I do wrong? Thanks in advance!
No comments:
Post a Comment