超混沌 Lorenz 系统轨迹可视化
import numpy as np
import matplotlib.pyplot as plt
def lorenz(t, x, a, b, c, r):
'超混沌 Lorenz 系统的微分方程'
dx = a * (x[1] - x[0]) + x[3]
dy = x[0] * c - x[1] - x[0] * x[2]
dz = x[0] * x[1] - b * x[2]
dw = -x[1] * x[2] + r * x[3]
return np.array([dx, dy, dz, dw])
def runge_kutta_lorenz(a, b, c, r, x0, dt, num_steps):
'使用四阶龙格-库塔法离散化 Lorenz 系统'
t = np.zeros(num_steps + 1)
x = np.zeros((num_steps + 1, 4))
x[0] = x0
for i in range(num_steps):
t[i+1] = t[i] + dt
k1 = lorenz(t[i], x[i], a, b, c, r)
k2 = lorenz(t[i] + dt/2, x[i] + (dt/2) * k1, a, b, c, r)
k3 = lorenz(t[i] + dt/2, x[i] + (dt/2) * k2, a, b, c, r)
k4 = lorenz(t[i] + dt, x[i] + dt * k3, a, b, c, r)
x[i+1] = x[i] + (dt/6) * (k1 + 2*k2 + 2*k3 + k4)
return t, x
# 参数设置
a = 10
b = 8/3
c = 28
r = -1
x0 = np.array([0.1, 0, 0, 0])
dt = 0.01
num_steps = 10000
# 使用四阶龙格-库塔法离散化 Lorenz 系统
t, x = runge_kutta_lorenz(a, b, c, r, x0, dt, num_steps)
# 绘制轨迹
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.set_title('超混沌 Lorenz 系统', ha='center')
ax.plot(x[:, 0], x[:, 1], x[:, 2], lw=1)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()
这段代码会绘制超混沌Lorenz系统的轨迹,并将标题居中显示。如果您还有其他问题,请随时向我提问。
原文地址: https://www.cveoy.top/t/topic/7EU 著作权归作者所有。请勿转载和采集!