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

AI Thread Summary
The discussion focuses on using the Shooting Method to solve the Schrödinger Equation for a particle in an infinite square well, implemented in Matlab. The user reports issues with the resulting wave function not matching expected outcomes when plotting psi against x_negative. A key point raised is the initialization of the wave function, where psi(1) and psi(2) should not be equal to ensure a valid slope. The user is encouraged to adjust the initial conditions and provide more details for further assistance. The conversation emphasizes the importance of correct boundary conditions in numerical simulations.
Bassa
Messages
46
Reaction score
1
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

  • Screen Shot 2017-03-10 at 2.25.43 PM.png
    Screen Shot 2017-03-10 at 2.25.43 PM.png
    29.2 KB · Views: 773
Last edited by a moderator:
Technology news on Phys.org
Bassa said:
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).
 
  • Like
Likes aaroman
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...
Back
Top