同步两组微分方程

2024-06-08 14:42:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python odeint同步两组Lorentz方程。我取一个系统的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]

Tags: 系统错误npdtsigmabetayrrho