Python - DFT calculation 1 - Solve the one dimensional Schrodinger equation

  1. Ref
  2. Code

Still waters run deep.

静水流深

Updated time: 08/30 2023.

Ref

MATLAB | 定态薛定谔方程的数值解——以一维谐振子为例 - 知乎 (zhihu.com)

未解决的问题: 如何保证波函数^2在全空间积分为1;厄米方程,级数解法

Code

clear
clc

1-dim Harmonic oscillator
%% 设置基本参数
X = 10;     % 长度 
N = 200;    % 格点数
dx = 2*X/N;   % 空间步长
x = linspace(-X,X,N);

n = 2;      % 次数n
V = 1/2*x'.^n;  % 势场
plot(x,V)

%% 哈密顿算符
A = spdiags(V,0,N,N);  % 提取V的对角线并生成矩阵

H = zeros(N,3);
H(1:N,1) = -0.5/dx^2;
H(1:N,2) = 1/dx^2;
H(1:N,3) = -0.5/dx^2;
B = spdiags(H,-1:1,N,N);
C = A+B;

%% 求解哈密顿矩阵的特征矢量和特征值
E = 9;    % 能级数
% 求特征值
[Vector, Value] = eigs(C,E,0)
psi = Vector(:,2)
% 计算波函数的模的平方
psi_squared = abs(psi).^2;
% 计算归一化常数,全空间积分为1
normalization_constant = trapz(x, psi_squared);
% 对波函数进行归一化
normalized_psi = psi / sqrt(normalization_constant);
plot(x,normalized_psi)

%% 画图
for i = 1:E
    psi = Vector(:,i);
    subplot(3,3,i)
    % 计算波函数的模的平方
    psi_squared = abs(psi).^2;
    % 计算归一化常数
    normalization_constant = trapz(x, psi_squared);
    % 对波函数进行归一化
    normalized_psi = psi / sqrt(normalization_constant);
    plot(x,normalized_psi)
    ylim([-0.8 0.8]);
    xlabel('x');ylabel('P');
end

Please indicate the source when reprinting. Please verify the citation sources in the article and point out any errors or unclear expressions.