# "Shooting Method" for simulating a Particle in an Infinite Square Well

## Main Question or Discussion Point

Hello! I am trying to write a program that solves the Schrodinger Equation for a particle in an infinite square well. I did a lot of research regarding the methods that could be used to accomplish this. I am writing this program in Matlab. The method I am using is called the Shooting Method. In my code below, when I plot psi vs. x_negative, I do not get a wave function that looks like what we expect. I am not sure where I am going wrong with this. I also don't know how much details I should include in this thread. Please, ask me for more information if needed. I have also attached picture of the textbook I am using for my logic. It is from the Computational Physics textbook by N. Giordano. Thank you very much for your help!

Matlab:
clear;
clc;
%declaring variables
psi = zeros(1,200); %Wave function
dx = 0.01; %x steps
V = 1000; %potential outside the well
e = 3; %initial guess energy
de = -.6; %energy step-size.

%boundry conditions
psi(1) = 1;
psi(2) = 1;

last_diverge = 0; %keeping track of the curvature of the wave function
flag = 't'; %variable to control the while loop below

while flag == 't'
%this for loop needs to be nested in another loop
for k = 2:length(psi)-1
%defining the potential funtion of the well
if abs(k*dx) <= 1
potential = 0;
else
potential = V;
end
psi(k+1) =  2*psi(k) - psi(k-1) - 2*(e - potential)*(dx^2)*psi(k);
%if psi exceeds the maximum magnitude, then exit the loop
if psi(k+1) > 2
break;
end
end

%plotting the left side of the wave function
f = 1;
for n = -k:0
x_negative(f) = n*dx;
f = f + 1;
end

%asking the user if they want to estimate more
flag = input('Enter (t) if you would like to continue finding the solution: ','s');

%updating the curvature of the wave function
if psi(k+1) > 0
diverge = 1;
else
diverge = -1;
end
if diverge * last_diverge < 0
de = -(de/2);
end
e = e + de;
last_diverge = diverge;
end
<Moderator's note: please use code tags>

#### Attachments

• 49.6 KB Views: 413
Last edited by a moderator:

Related Programming and Computer Science News on Phys.org
DrClaude
Mentor
In my code below, when I plot psi vs. x_negative, I do not get a wave function that looks like what we expect.
So what do you get?

One thing that bothers me is
Matlab:
psi(1) = 1;
psi(2) = 1;
This is not a valid slope for the wave function. You need to initialize the 2-point recursion with psi(1)≠psi(2).