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!
<Moderator's note: please use code tags>
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
49.6 KB Views: 413
Last edited by a moderator: