用python求解一阶常微分方程组代码
时间: 2023-07-23 16:10:00 浏览: 259
以下是使用Python的SciPy库求解一阶常微分方程组的示例代码:
```
import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
# 定义微分方程组
def myODE(t, y):
dydt = np.zeros((2,))
dydt[0] = y[1]
dydt[1] = -np.sin(y[0])
return dydt
# 设置初始条件
tspan = (0, 10)
y0 = [1, 0]
# 调用solve_ivp函数求解微分方程组
sol = solve_ivp(myODE, tspan, y0)
# 绘制结果
plt.plot(sol.t, sol.y[0], '-o', label='y1')
plt.plot(sol.t, sol.y[1], '-x', label='y2')
plt.legend()
plt.xlabel('t')
plt.ylabel('y')
plt.show()
```
在上面的代码中,我们首先定义了一个名为myODE的函数来描述微分方程组。该函数接受两个参数t和y,其中t表示当前时间,y是一个包含微分方程组中每个变量的向量。函数返回一个包含每个变量的导数的向量dydt。在这个例子中,我们定义了一个简单的微分方程组,其中第一个变量y1的导数是y2,第二个变量y2的导数是-sin(y1)。
接下来,我们设置了初始条件tspan和y0。tspan是一个包含开始和结束时间的元组,y0是一个包含每个变量初始值的列表。
然后,我们调用了SciPy的solve_ivp函数来求解微分方程组。该函数接受三个参数:微分方程组函数的句柄,时间范围和初始条件。它返回一个名为sol的对象,该对象包含时间向量sol.t和包含每个变量的值的矩阵sol.y。
最后,我们使用matplotlib库的plot函数绘制了结果。我们绘制了y1和y2随时间的变化,并用legend函数添加了一个图例。最后使用show函数显示图形。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)