在Python中,可以使用Matplotlib库绘制变参数值下Lorenz系统的分叉图。
首先,需要导入所需的库:
import numpy as np
import matplotlib.pyplot as plt
然后,定义Lorenz系统的微分方程:
def lorenz(x, y, z, sigma, beta, rho):
dx = sigma * (y - x)
dy = x * (rho - z) - y
dz = x * y - beta * z
return dx, dy, dz
接下来,设置参数范围和步长:
sigma_vals = np.linspace(0, 10, 100) # sigma取值范围
rho = 28.0 # 常量rho
beta = 8.0 / 3.0 # 常量beta
x_vals = [] # 用于存储x坐标的列表
y_vals = [] # 用于存储y坐标的列表
z_vals = [] # 用于存储z坐标的列表
接着,使用循环计算并存储Lorenz系统的坐标值:
for sigma in sigma_vals:
x = 1.0 # 初始x坐标
y = 1.0 # 初始y坐标
z = 1.0 # 初始z坐标
# 进行Lorenz系统的数值积分
dt = 0.01 # 时间步长
num_steps = 10000 # 积分步数
for _ in range(num_steps):
dx, dy, dz = lorenz(x, y, z, sigma, beta, rho)
x += dx * dt
y += dy * dt
z += dz * dt
# 存储计算得到的坐标值
x_vals.append(x)
y_vals.append(y)
z_vals.append(z)
最后,使用Matplotlib绘制分叉图:
plt.plot(sigma_vals, x_vals, 'b.')
plt.xlabel('sigma')
plt.ylabel('x')
plt.title('Bifurcation diagram of the Lorenz system')
plt.show()
这样就可以得到变参数值下Lorenz系统的分叉图。
领取专属 10元无门槛券
手把手带您无忧上云