我正在使用Python odeint来同步两组洛伦兹方程。我正在使用一个系统的X值(Xi)并使用它来驱动第二个系统,因此第二个系统的X值(Xr)将与第一个系统同步,这非常有效。当噪声被添加到第一个系统的X值的输出时,我想尝试测试同步性的极限。当我向方程式添加高斯随机数时,我收到以下错误,在此调用上完成的过多工作(可能是错误的Dfun类型)。使用full_output = 1运行以获取定量信息。
如何向Xi添加噪声,以便Xr的解决方案开始偏离Xi?
以下是代码:
Beta = 8. / 3.
Rho = 28.
Sigma = 10.
##################################
#
# dx/dt = Sigma(y-x)
# dy/dt = Rho*x - y-xz
# dz/dt = xy - Beta*z
#
##################################
def f(y, t):
Xi = y[0]
Yi = y[1]
Zi = y[2]
Xr = y[3]
Yr = y[4]
Zr = y[5]
f0 = Sigma*(Yi -Xi)
f1 = Rho*Xi - Yi - Xi*Zi
f2 = Xi*Yi - Beta*Zi
f3 = Sigma*(Yr - Xr)
f4 = Rho*(Xi +np.random.normal(0,3)) - Yr - (Xi)*Zr
f5 = (Xi +Rho*np.random.normal(0,3))*Yr - Beta*Zr
return [f0, f1, f2, f3, f4, f5]
# Initial Conditions
X0 = 2.0
Y0 = 1.0
Z0 = 3.0
XR0 = 2.5
YR0 = 1.5
ZR0 = 2.25
y0 = [X0, Y0, Z0, XR0, YR0, ZR0]
t = np.arange(0, 30, .001)
dt = t[1] - t[0]
# Solve the DEs
soln = odeint(f, y0, t)
X = soln[:, 0]
Y = soln[:, 1]
Z = soln[:, 2]
XR = soln[:, 3]
YR = soln[:, 4]
ZR = soln[:, 5]