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)。

返回类型:

tuple[ndarray, ndarray]

返回:

  • 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 个本征值以提升性能。