我正在尝试使用 Scipy 和 Numpy 模拟与两个激光场相互作用的三能级原子中两个能级之间的绝热通道。
.
我不确定我的模型是否是错误的,因为我在 python 中错误地制定了方程式或 Scipy ODE 求解器出现错误。
为了获得我使用的三种状态中的每一种的系数
其中给出了由两个激光束产生的电场幅度的(慢)时间依赖性。初始条件为。
的高斯形式:
和
其中的正值意味着场 2 在场 1 之前打开设置脉冲的持续时间。
import numpy as np
import scipy as sp
from scipy.integrate import odeint
import matplotlib.pyplot as plt
from math import exp
from collections import defaultdict
import pylab as p
tau = 2
T = 1
def omega1(t,tau=tau,T=T):
return exp(-(t - tau)**2/T**2)
def omega2(t,tau=tau,T=T):
return exp(-(t + tau)**2/T**2)
def g(y, t,tau=tau,T=T):
c1_i = y[0]
c2_i = y[1]
c3_i = y[2]
g1 = omega1(t, tau, T)*c2_i
g2 = omega1(t, tau, T)*c1_i + omega2(t)*c3_i
g3 = omega2(t, tau, T)*c2_i
return [g1, g2, g3]
# initial conditions
c1_0 = 1
c2_0 = 0
c3_0 = 0
y0 = [c1_0, c2_0, c3_0]
step_size = 1000
t_max = 10.
t_min = 0.
delta_t = (t_max - t_min)/step_size
t = np.linspace(t_max, t_min, step_size) # time grid
soln = odeint(g, y0, t)
c1 = soln[:, 0]
c2 = soln[:, 1]
c3 = soln[:, 2]
# plot results
plt.figure()
plt.plot(t, np.abs(c1), label='c1')
plt.plot(t, np.abs(c2), label='c2')
plt.plot(t, np.abs(c3), label='c3')
plt.xlabel('time')
plt.ylabel('energy level population')
plt.title('initial attempt')
plt.legend(loc=0)

结果似乎是错误的,因为它显示的系数值大于 1。此外,我似乎无法找到产生非零最终和值。
可能造成影响的一个问题是,目前我的答案不包括乘以。我不确定如何将它包含在我的 python 方程中。
谢谢您的帮助!