龙格库塔求解洛伦兹方程python代码
时间: 2024-11-07 14:12:41 浏览: 35
龙格-库塔方法是一种数值积分技术,常用于模拟非线性系统的行为,如洛伦兹方程。洛伦兹方程是一个描述混沌理论的经典模型,通常用于模拟三维流体动力学中的气泡云行为。以下是使用Python和`scipy.integrate`库实现龙格-库塔法求解洛伦兹方程的一个简单例子:
```python
import numpy as np
from scipy.integrate import solve_ivp
from matplotlib import pyplot as plt
# 洛伦兹方程的函数定义
def lorenz(t, state, sigma=10, rho=28, beta=8 / 3):
x, y, z = state
return [sigma * (y - x), x * (rho - z) - y, x * y - beta * z]
# 初始条件和时间范围
initial_conditions = [1., 1., 1.] # (x0, y0, z0)
t_span = (0., 50.) # 时间从0到50
dt = 0.01 # 时间步长
# 使用龙格-库塔4阶方法
solution = solve_ivp(lorenz, t_span, initial_conditions, method='RK45', dense_output=True)
# 绘制轨迹
plt.plot(solution.y[0], solution.y[1])
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Lorenz attractor with RK45 method')
plt.show()
阅读全文