二维电子气在三角形势阱中的量子特性计算

MATLAB 实现:

  • 用一个无限高三角形势阱约束电子:三角形内 (V=0),边界(含外部)(V\to\infty)
  • 矩形网格覆盖三角形外接正方形 ,外部点用大势能墙近似
  • 五点差分离散二维定态薛定谔方程
  • 反幂迭代(inverse iteration)/ 位移反迭代基态能量与波函数

1)物理模型(无量纲化)

为数值稳定,先做约化:

−ℏ22m∗∇2+V(x,y)ψ=Eψ\left-\\frac{\\hbar\^2}{2m\^\*}\\nabla\^2+V(x,y)\\right\psi=E\psi−2m∗ℏ2∇2+V(x,y)ψ=Eψ

令特征长度 (L)(取三角形直角边长),做:

x′=x/L,y′=y/L,V~=V/E0,E~=E/E0,E0=ℏ22m∗L2x'=x/L,\quad y'=y/L,\quad \tilde V=V/E_0,\quad \tilde E=E/E_0,\quad E_0=\frac{\hbar^2}{2m^*L^2}x′=x/L,y′=y/L,V~=V/E0,E~=E/E0,E0=2m∗L2ℏ2

则方程变成(略去撇):

(−∇2+V~)ψ=E~ψ(-\nabla^2+\tilde V)\psi=\tilde E\psi(−∇2+V~)ψ=E~ψ

三角形(等腰直角):

Ω={(x,y):x≥0,  y≥0,  x+y≤1},V~∣Ω=0,ψ∣∂Ω=0\Omega=\{(x,y): x\ge0,\;y\ge0,\;x+y\le 1\},\qquad \tilde V|\Omega=0,\quad \psi|{\partial\Omega}=0Ω={(x,y):x≥0,y≥0,x+y≤1},V~∣Ω=0,ψ∣∂Ω=0


2)MATLAB 代码

matlab 复制代码
%% =========================================================
%  二维电子气 --- 等腰三角形无限深势阱
%  五点差分 + 位移反幂迭代求基态(无任何搜索/优化工具箱)
% =========================================================
clear; clc; close all;

%% ---- 1. 网格 ----
L  = 1;              % 三角形直角边长(你以后可换成 nm)
N  = 80;             % 网格点数/维(越大越贵)
dx = L/(N-1); dy = dx;
x  = linspace(0,L,N); y = linspace(0,L,N);
[X,Y] = meshgrid(x,y);

% 三角形掩码
triMask = (X>=0 & Y>=0 & X+Y<=L+1e-12);

% 外部点:当作"势能墙"
Vbig = 1e6;                 % 足够大,使波函数在外部→0
V = zeros(N,N);
V(~triMask) = Vbig;

% ---- 2. 构造哈密顿矩阵 H(稀疏)----
% 约化单位里  (-∇²) 系数 = 1
coef = 1;                    % = ħ²/(2m*L²) 已吸收
ax2 = coef/dx^2;
ay2 = coef/dy^2;

M   = N*N;                   % 全矩形网格铺平索引
Ic  = zeros(M*5,1); Jc = Ic; S = Ic;  % 预分配(稀疏三元组)
cnt = 0;
for j=1:N
  for i=1:N
    p = (j-1)*N + i;         % 全局索引
    % 如果点在"墙"里,直接钉死 ψ≈0:主元=1,其余=0(保证 ψ=0)
    if ~triMask(j,i)
        cnt=cnt+1; Ic(cnt)=p; Jc(cnt)=p; S(cnt)=1;  % Hψ 中这一行 => ψ(p)=0
        continue;
    end
    % 五点模板
    diagH = 2*ax2 + 2*ay2 + V(j,i);
    cnt=cnt+1; Ic(cnt)=p; Jc(cnt)=p; S(cnt)=diagH;

    % i+1
    if i<N
        q=(j-1)*N+(i+1); cnt=cnt+1; Ic(cnt)=p; Jc(cnt)=q; S(cnt)=-ax2;
    end
    % i-1
    if i>1
        q=(j-1)*N+(i-1); cnt=cnt+1; Ic(cnt)=p; Jc(cnt)=q; S(cnt)=-ax2;
    end
    % j+1
    if j<N
        q=(j)*N+i; cnt=cnt+1; Ic(cnt)=p; Jc(cnt)=q; S(cnt)=-ay2;
    end
    % j-1
    if j>1
        q=(j-2)*N+i; cnt=cnt+1; Ic(cnt)=p; Jc(cnt)=q; S(cnt)=-ay2;
    end
  end
end
H = sparse(Ic(1:cnt), Jc(1:cnt), S(1:cnt), M, M);
fprintf('H 稀疏: %d×%d, 非零=%d\n', M, M, nnz(H));

%% ---- 3. 位移反幂迭代求最小特征值(基态)----
% 解 (H - sigma*I) ψ = v  反复迭代 => 收敛到最接近 sigma 的特征向量
sigma   = 0.5;          % 位移(可初估 ~ 几倍 π² 量级)
maxIter = 2000; tol = 1e-12;
psi = rand(M,1); psi = psi/norm(psi);  % 初始随机向量

for it=1:maxIter
    rhs = psi;                           % (H-sigma)ψ_new = ψ_old
    psi_new = (H - sigma*speye(M))\rhs;  % 直接反斜杠(稀疏 LU 内部)
    nrm = norm(psi_new);
    psi_new = psi_new / nrm;
    if norm(psi_new - sign(dot(psi_new,psi))*psi) < tol
        psi = psi_new; fprintf('收敛 iter=%d\n',it); break;
    end
    psi = psi_new;
end
E0 = dot(psi,H*psi)/dot(psi,psi);       % Rayleigh 商
fprintf('基态能量 E0 ≈ %.6f  (约化单位)\n', E0);

% 还原到带物理单位的表达式(可选)
% 若你要真实 eV: E0_phys = E0 * (hbar^2/(2*meff*L^2)/eV)  [L 要换成真实米]

%% ---- 4. 把 ψ 铺回网格并裁剪到三角区内 ----
PsiGrid = zeros(N,N);
PsiGrid(triMask) = psi( sub2ind([N,N], reshape(find(triMask),[],1) ) );  % 只填三角内
PsiGrid(~triMask) = 0;

%% ---- 5. 可视化 ----
figure('Color','w');

subplot(1,2,1)
pcolor(X,Y,PsiGrid); shading flat; colorbar
hold on
plot([0 L L 0 0],[0 0 L 0 0],'k-','LineW',2)
xlabel('x'); ylabel('y'); title('基态波函数 ψ(x,y)')
axis equal tight

subplot(1,2,2)
pcolor(X,Y,PsiGrid.^2); shading flat; colorbar
hold on
plot([0 L L 0 0],[0 0 L 0 0],'k-','LineW',2)
xlabel('x'); ylabel('y'); title('|ψ|² 概率密度')
axis equal tight
sgtitle('三角形无限深势阱 --- 基态(五点差分 + 反幂迭代)')

参考代码 计算二维电子气在三角形势阱内的一些量子特性 www.youwenfan.com/contentcsv/101624.html

3)直接"读数"的量子特性

  • 基态能量 (E_0)(约化单位)
  • 波函数形状:三角形内应光滑、在边界趋于 0
  • 概率密度 (|\psi|^2):告诉你电子最常出现在三角形哪个区域(通常不是几何中心,而是偏向"胖"区域)
相关推荐
xiao5kou4chang6kai46 天前
MATLAB机器学习、深度学习--从数据预处理到模型训练
深度学习·机器学习·matlab·数据预处理
bubiyoushang8887 天前
电力线信道“五类噪声”仿真MATLAB
开发语言·matlab
cici158747 天前
彩色图像模糊增强(Fuzzy Enhancement)MATLAB 实现
开发语言·算法·matlab
kaikaile19957 天前
图像稀疏化分解 + 压缩感知(CS)重建 MATLAB
开发语言·计算机视觉·matlab
yugi9878387 天前
PNCC(Power-Normalized Cepstral Coefficients)— MATLAB 实现
开发语言·人工智能·matlab
cooldog123pp7 天前
cplex完全安装手册,适配matlab和python!
人工智能·python·matlab·cplex
2zcode7 天前
项目文档:基于MATLAB语音信号变声算法设计与实现
算法·matlab·语音识别
天疆说7 天前
在 Ubuntu 24.04 上安装 MATLAB R2021b
数据库·ubuntu·matlab
guygg887 天前
二维弹塑性有限元分析(von Mises 等向硬化)— MATLAB 实现
开发语言·人工智能·matlab
天疆说7 天前
在 Ubuntu 的 VSCode 中配置 MATLAB
vscode·ubuntu·matlab