Guest User

Untitled

a guest
Jan 17th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. sigma = 1.0;
  2. xmin = -10.0;
  3. xmax = 10.0;
  4. npts = 512;
  5. nstates = 14;
  6.  
  7. dx = (xmax-xmin)/npts;
  8. x = xmin + dx*(0:npts-1);
  9.  
  10. % -- initial state/wavefunction
  11. psi_init = exp(-0.5*x.^2/sigma^2)*(pi*sigma^2)^(-0.25);
  12.  
  13. psi = zeros(nstates,npts); % -- list to store oscillator states
  14. psi(1,:) = psi_init;
  15. for nn=2:nstates
  16. psi(nn,:) = raising_psi(psi(nn-1,:),xmin,xmax,npts,sigma);
  17. end
  18.  
  19. function adag_fn = raising_psi(previous_fn,a,b,n,sigma) % -- raising_operator
  20. dx = (b-a)/n;
  21. x = a + dx*(0:n-1);
  22.  
  23. % -- going into fourier space using 'fft' library
  24. fwd_fft = fft(previous_fn);
  25. k = (2*pi/(b-a))*[0:n/2-1,0,-n/2+1:-1];
  26. dfk_dx = 1i*k.*fwd_fft; % -- 1st derivative in fourier space
  27. df_dx = ifft(dfk_dx); % -- back into position space
  28.  
  29. % -- a^dagger acting on the previous state
  30. adag_fn = (x.*previous_fn/sigma - sigma*real(df_dx))/sqrt(2);
  31. norm_fn = adag_fn*transpose(adag_fn);
  32. adag_fn = adag_fn/sqrt(norm_fn); % -- normalization
  33. end
Add Comment
Please, Sign In to add comment