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系统的轨迹,并将标题居中显示。如果您还有其他问题,请随时向我提问。

超混沌 Lorenz 系统轨迹可视化

原文地址: https://www.cveoy.top/t/topic/7EU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录