我正在尝试模拟非线性材料中的波传播。我考虑了一个基波![A(z,t)],它以z0的定义信号形状进入材料,而第二谐波B(z,t)的B(z0,t)=0。非线性效应在材料中引起基波A(z,t)在沿z方向穿过材料时产生二次谐波B(z,t)。
生成可以描述如下:
我试图使用Python的odeint这样实现:
def NL_coupling(t, Amp, c):
A, B = Amp
rho1, rho2 = c
return [1j * rho1 * B * np.conj(A),
1j * rho2 * A * A]
solveNonlinear = integrate.ode(NL_coupling).set_integrator('zvode', method='bdf')
solveNonlinear.set_f_params(paramCoupling).set_initial_value([A, B], 0)
当我尝试迭代求解器时,出现以下错误:
ZWORK length needed, LENZW (=I1), exceeds LZW (=I2)
我使用相同的求解器传播单个波而没有耦合,效果很好。请记住,A和B是包含时间分辨脉冲形式的(复杂)阵列。 那么我怎么可能呢? 我尝试求解单个时间点t的ODE,因此[A,B]是仅包含两个元素的列表,而不是遍历整个信号。但是由于求解器不会每次都计算出完全相同的点的值,因此该方法并没有真正提供有用的结果。
感谢您的帮助