常微分方程初值问题数学建模例题并用Python求解
时间: 2024-10-19 20:01:00 浏览: 44
常微分方程(简称ODE)描述的是系统随时间变化的连续规律,而初值问题是指给出了初始状态和方程,求解随着时间推移系统的状态。例如,考虑一个简单的物理模型——物体的自由落体运动,其速度v随时间t的变化可以用牛顿第二定律描述,即m * dv/dt = g (其中m是质量,g是重力加速度)。
如果我们设定物体的质量m=1千克,初始速度v(0)=0米每秒,初位置y(0)=0米,我们可以建立如下的初值问题:
dy/dt = v
dv/dt = g
给定 g = 9.8 m/s^2,在Python中可以使用`scipy.integrate`库的`odeint`函数来数值求解。首先,我们需要编写一个代表微分方程的函数:
```python
import numpy as np
from scipy.integrate import odeint
def free_fall(t, y):
dydt = [y[1], -9.8] # 加速度方向向下
return dydt
# 初始条件
initial_conditions = [0, 0] # y(0) = 0, v(0) = 0
time_span = np.linspace(0, 10, 1000) # 时间范围从0到10秒,采样点1000个
# 求解
solutions = odeint(free_fall, initial_conditions, time_span)
y_values = solutions[:, 0] # 落地点高度随时间的变化
v_values = solutions[:, 1] # 速度随时间的变化
print("物体下落的高度和速度随时间的图表:")
plt.plot(time_span, y_values, label="y(t)")
plt.plot(time_span, v_values, label="v(t)")
plt.xlabel('Time (s)')
plt.ylabel('Height (m)/Velocity (m/s)')
plt.legend()
plt.show()
阅读全文