clear all; %physical constants in MKS units hbar = 1.054e-34; q = 1.602e-19; m = 9.110e-31; %generate lattice N = 100; %number of lattice points n = [1:N]; %lattice points a = 1e-10; %lattice constant x = a * n; %x-coordinates t0 = (hbar^2)/(2*m*a^2)/q; %encapsulating factor L = a * (N+1); %total length of consideration %set up Hamiltonian matrix U = 0*x; %0 potential at all x main_diag = diag(2*t0*ones(1,N)+U,0); %create main diagonal matrix lower_diag = diag(-t0*ones(1,N-1),-1); %create lower diagonal matrix upper_diag = diag(-t0*ones(1,N-1),+1); %create upper diagonal matrix H = main_diag + lower_diag + upper_diag; %sum to get Hamiltonian matrix [eigenvectors,E_diag] = eig(H); %"eigenvectors" is a matrix wherein each column is an eigenvector %"E_diag" is a diagonal matrix where the %corresponding eigenvalues are on the %diagonal. E_col = diag(E_diag); %folds E_diag into a column vector of eigenvalues % return eigenvectors for the 1st and 50th eigenvalues phi_1 = eigenvectors(:,1); phi_50 = eigenvectors(:,50); % find the probability densities of position for 1st and 50th eigenvectors P_1 = phi_1 .* conj(phi_1); P_50 = phi_50 .* conj(phi_50); % Find first N analytic eigenvalues E_col_analytic = (1/q) * (hbar^2 * pi^2 * n.*n) / (2*m*L^2); % Plot the probability densities for 1st and 50th eigenvectors figure(1); clf; h = plot(x,P_1,'kx',x,P_50,'k-'); grid on; set(h,'linewidth',[2.0]); set(gca,'Fontsize',[18]); xlabel('POSITION [m]'); ylabel('PROBABILITY DENSITY [1/m]'); legend('n=1','n=50'); % Plot numerical eigenvalues figure(2); clf; h = plot(n,E_col,'kx'); grid on; set(h,'linewidth',[2.0]); set(gca,'Fontsize',[18]); xlabel('EIGENVALUE NUMBER'); ylabel('ENERGY [eV]'); axis([0 100 0 40]); % Add analytic eigenvalues to above plot hold on; plot(n,E_col_analytic,'k-'); legend({'Numerical','Analytical'},'Location','northwest');