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

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):告诉你电子最常出现在三角形哪个区域(通常不是几何中心,而是偏向"胖"区域)
相关推荐
KWTXX3 小时前
使用matlab官网的skills调用claude-待完成
开发语言·matlab
彬鸿科技6 小时前
bhSDR Studio/Matlab入门指南(十二):AI神经网络训练(Resnet-SE) 实验界面全解析
人工智能·神经网络·matlab·软件无线电·sdr
rit84324997 小时前
链路预测(Link Prediction)MATLAB 实现
开发语言·matlab
yugi9878388 小时前
MATLAB CNN道路特征提取实现
人工智能·matlab·cnn
yongui478348 小时前
基于稀疏低秩分解的图像去噪MATLAB实现
开发语言·matlab
gihigo19988 小时前
MATLAB实现光谱特征波长提取
开发语言·matlab
fie88899 小时前
matlab打靶法求解两点边值优化问题
开发语言·算法·matlab
hoiii1879 小时前
基于MATLAB实现Lamb波频散曲线求解
开发语言·matlab
yu859395811 小时前
MATLAB 分支定界法(Branch and Bound)实现
开发语言·matlab