atomscf.operator.solve_bound_states_fd5
- atomscf.operator.solve_bound_states_fd5(r, l, v_of_r, k=4)[源代码]
在等间距线性网格上使用五点有限差分求解径向束缚态(取低端 \(k\) 个本征对)。
相比二阶差分(solve_bound_states_fd),五点格式精度更高(\(\mathcal{O}(h^4)\)), 但要求网格**必须为等间距**,且去掉首尾各两个点以满足五点模板要求。
- 参数:
r (numpy.ndarray) -- 必须为等间距 线性网格 \((r_0,\dots,r_{N-1})\)。
l (int) -- 角动量量子数 \(\ell\)。
v_of_r (numpy.ndarray) -- 势能数组 \(v(r_i)\),长度与
r
一致。k (int, optional) -- 返回最低能的本征态个数(默认 4)。
- 返回类型:
- 返回:
eps (numpy.ndarray) -- 低端 \(k\) 个本征值(按升序)。
U (numpy.ndarray) -- 对应的径向函数矩阵 \(U\),形状 \((k, N)\),已在 \([r_0,r_{N-1}]\) 上按 \(\int u^2\,dr=1\) 归一,并在两端补零(首尾各两个点为 0)。
备注
实际内部计算在 \((r_2,\dots,r_{N-3})\) 上进行,首尾各两点作为边界条件设为 0。
使用 scipy.linalg.eigh 的 subset_by_index 只求前 k 个本征值以提升性能。