我正试图模拟波在非线性材料中的传播。我认为是基波[A(z,t)]以z0的规定信号形状进入材料,以及B(z0,t)=0的二次谐波B(z,t)。材料中的非线性效应导致基波A(z,t)在沿z方向穿过材料时产生二次谐波B(z,t)
生成过程可以描述如下:
我试着用Pythons-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]是一个只包含两个元素的列表,而不是迭代整个信号。但是,由于解算器不会每次都计算完全相同的点的值,因此这种方法并不能真正提供有用的结果
谢谢你的帮助
目前没有回答
相关问题 更多 >
编程相关推荐