我有3个方程如下
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
我尝试使用 scipy.integrate.odeint 从 t=0 解决到 t=10 我的初始条件是 u(0)=0, v(0)=1.0 和 w(0)=2.0 我没有太多有用的注释scipy.integrate.odeint。所以可以使用一些建议来解决我的问题。
我有3个方程如下
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
我尝试使用 scipy.integrate.odeint 从 t=0 解决到 t=10 我的初始条件是 u(0)=0, v(0)=1.0 和 w(0)=2.0 我没有太多有用的注释scipy.integrate.odeint。所以可以使用一些建议来解决我的问题。
scipy.integrate.odeint需要一个函数来积分,因变量(你的,,,an)的初始值u
和v
时间w
值网格。您的函数需要的任何额外参数(例如a
,b
和c
)都作为args
.
您定义的函数应采用值向量,例如X
, (您可以将其解包到u
,v
和w
)、它们对应的时间点以及任何其他参数,并且应该返回X
相对于当时时间的一阶导数观点。
可视化 Lorenz 吸引子是Matplotlib 库示例之一的主题。
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()