2015-12-04 7 views
0

J'ai 3 équations comme suitl'intégration des systèmes chaotiques

u'= -a*(u-v) 

v'= c*u-v-u*w 

w'= -b*w+u*v 
a=5.0 b=0.9 and c=8.2 

Im essayant d'utiliser scipy.integrate.odeint résoudre de t = 0 à t = 10 Mes conditions initiales u (0) = 0, v (0) = 1.0 et w (0) = 2.0 Je ne peux pas beaucoup de notes utiles sur scipy.integrate.odeint. Donc pourrait utiliser quelques conseils sur l'utilisation de ce module pour mon problème.

+0

Les modérateurs devraient envisager de passer cela en échange informatique scientifique. @darren vous devriez aussi chercher dans cet échange. Il y a sûrement des questions qui ont été répondues ici qui vous aideront. – wgwz

Répondre

1

scipy.integrate.odeint prend une fonction d'intégration, les valeurs initiales pour les variables dépendantes (votre u, v, un w) et une grille de valeurs de temps. Tous les arguments supplémentaires dont votre fonction a besoin (tels que a, b et c) sont passés en tant que args.

La fonction que vous définissez doit prendre un vecteur de valeurs, par exemple, X, (que vous pouvez déballer à u, v et w), le point de temps, ils correspondent et des arguments supplémentaires, et devrait retourner les premiers dérivés de X par rapport à l'heure à ce moment-là. La visualisation de l'attracteur de Lorenz est a subject of one of the Matplotlib gallery examples.

import numpy as np 
from scipy.integrate import odeint 

a, b, c = 5, 0.9, 8.2 
u0, v0, w0 = 0, 1, 2 

def lorenz(X, t, a, b, c): 
    u, v, w = X 
    up = -a*(u - v) 
    vp = c*u - v - u*w 
    wp = -b*w + u*v 
    return up, vp, wp 

t = np.linspace(0, 100, 10000) 
f = odeint(lorenz, (u0, v0, w0), t, args=(a, b, c)) 
x, y, z = f.T 

import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 

fig = plt.figure() 
ax = fig.gca(projection='3d') 

ax.plot(x, y, z) 
ax.set_xlabel("X Axis") 
ax.set_ylabel("Y Axis") 
ax.set_zlabel("Z Axis") 
ax.set_title("Lorenz Attractor") 

plt.show() 

enter image description here