同步两组微分方程

时间:2014-11-03 04:02:48

标签: python odeint

我正在使用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]

0 个答案:

没有答案