python 微分方程ipynb
时间: 2024-12-25 07:23:04 浏览: 2
六点差分格式构造_CFD_python_差分方程_优化_
### Python 解决微分方程的 Jupyter Notebook 示例
#### 使用 `SciPy` 库求解常微分方程 (ODE)
为了展示如何利用 Python 和 Jupyter Notebook 来解决微分方程,下面给出一个简单的例子——洛伦兹吸引子模型。该模型描述的是流体动力学中的一种混沌现象。
```python
from scipy.integrate import solve_ivp
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
def lorenz(t, xyz, sigma=10., beta=8./3, rho=28.0):
"""The Lorenz equations."""
x, y, z = xyz
return [sigma * (y - x),
x * (rho - z) - y,
x * y - beta * z]
# Initial state at time t=0 is (-8, 8, 27)
initial_state = [-8, 8, 27]
time_span = [0, 40] # Time interval to integrate over.
solution = solve_ivp(lorenz, time_span, initial_state, dense_output=True)
times = np.linspace(time_span[0], time_span[-1], 10000)
xyz_sol = solution.sol(times)
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.plot(xyz_sol[0], xyz_sol[1], xyz_sol[2])
plt.show()
```
这段代码展示了怎样定义并绘制三维空间内的轨迹图来表示系统的演化过程[^1]。
#### 利用 `SymPy` 进行符号运算解析解法
除了数值方法外,还可以借助 SymPy 工具包来进行代数操作获得某些类型的 ODE 的精确表达式:
```python
from sympy import *
init_printing(use_unicode=True)
t = symbols('t') # Define symbol 't'
x = Function('x')(t) # Create function object named "x"
ode_example = Eq(diff(x,t), sin(t)) # Example of simple first order linear differential equation dx/dt=sin(t).
dsolve(ode_example,x).doit() # Solve the given ordinary differential equation and display result.
```
上述脚本会返回给定一阶线性齐次微分方程 \( \frac{dx}{dt}=\sin{(t)}\) 的通解形式[^2]。
阅读全文