假设无人机以平行于水平面的方式飞行,在空中投放物资(物资为球形,半径 20cm, 重量 50kg)到达地面指定位置。 (1)建立数学模型,给出无人机投放距离(投放物资时无人机与地面物资指定落地点之间 的直线距离)与无人机飞行高度、飞行速度、空气阻力等之间的关系。 (2)假设无人机的飞行高度为 300m,飞行速度为 300km/h,风速为 5m/s,风向与水平面 平行。建立数学模型,分别给出无人机飞行方向与风向相同(夹角为 0 度)、相反(夹角为 180 度)、垂直(夹角为 90 度)情况下无人机的投放距离 请针对问题在不考虑升力,风阻存在的情况下用差分法迭代时间并利用python在解风向不同时对物资的投放距离进行求解
时间: 2024-02-15 13:04:31 浏览: 171
(1)建立数学模型
假设无人机以平行于水平面的方式飞行,投放物资时无人机与地面物资指定落地点之间的直线距离为x,无人机的飞行高度为h,飞行速度为v,空气阻力为F,物资的质量为m,重力加速度为g,投放的初始速度为u。则有:
$$x=\frac{u^2}{2g}+\frac{u}{g}\sqrt{u^2+2gh}+\frac{h}{2}\frac{F}{mg}$$
其中,第一项为水平方向的运动距离,第二项为竖直方向的运动距离,第三项为空气阻力对物资的影响。
(2)建立数学模型
假设无人机的飞行高度为300m,飞行速度为300km/h,风速为5m/s,风向与水平面平行。设无人机的投放距离为x,无人机与风向夹角为θ,则有:
当θ=0度(风向与无人机飞行方向相同)时,有:
$$x=\frac{u^2}{2g}+\frac{u}{g}\sqrt{u^2+2gh}+\frac{h}{2}\frac{F}{mg}-\frac{5}{g}\sqrt{\frac{h}{2}\frac{m}{F}}$$
当θ=180度(风向与无人机飞行方向相反)时,有:
$$x=\frac{u^2}{2g}+\frac{u}{g}\sqrt{u^2+2gh}+\frac{h}{2}\frac{F}{mg}+\frac{5}{g}\sqrt{\frac{h}{2}\frac{m}{F}}$$
当θ=90度(风向与无人机垂直)时,有:
$$x=\frac{u^2}{2g}+\frac{u}{g}\sqrt{u^2+2gh}+\frac{h}{2}\frac{F}{mg}-\frac{5}{g}\sqrt{\frac{h}{2}\frac{m}{F}}\sin\alpha$$
其中,α为无人机与风向夹角。
利用差分法迭代时间并利用Python求解
我们可以利用欧拉正向差分法对时间进行迭代,求解出无人机投放物资的距离。
具体实现过程如下:
1. 定义参数:物资半径r=0.2m,物资重量m=50kg,重力加速度g=9.8m/s^2,空气阻力系数k=0.5,空气密度ρ=1.225kg/m^3,无人机初始速度u=0,无人机飞行高度h=300m,无人机飞行速度v=300km/h,风速w=5m/s,投放点与无人机的水平距离x=1000m。
2. 计算空气阻力F:$F=\frac{1}{2}k\rho v^2\pi r^2$
3. 计算投放物资的初始速度u:$u=\sqrt{2gh+\frac{2gmx}{F}}$
4. 定义时间间隔dt=0.1s,总时间t=0,无人机和物资的位置分别为x0=0和h+r,竖直方向的速度v0=0。
5. 进行迭代,每次迭代更新速度和位置,直到物资落地为止。
代码实现如下:
```python
import math
# 定义参数
r = 0.2 # 物资半径
m = 50 # 物资重量
g = 9.8 # 重力加速度
k = 0.5 # 空气阻力系数
rho = 1.225 # 空气密度
u = 0 # 无人机初始速度
h = 300 # 无人机飞行高度
v = 300/3.6 # 无人机飞行速度,转换为m/s
w = 5 # 风速
x = 1000 # 投放点与无人机的水平距离
# 计算空气阻力
F = 0.5 * k * rho * v**2 * math.pi * r**2
# 计算物资初始速度
u = math.sqrt(2*g*h+2*g*m*x/F)
# 定义时间间隔和总时间
dt = 0.1
t = 0
# 定义物资和无人机的位置和速度
x0 = 0
y0 = h+r
v0 = 0
while True:
# 计算竖直方向的速度和位移
vy = v0 - g*dt
y = y0 + vy*dt
# 计算水平方向的速度和位移
vx = v + w*math.cos(math.pi/180*0) # 无人机与风向夹角为0
x = x0 + vx*dt
# 判断物资是否落地
if y <= r:
print("物资落地!时间:", t)
print("投放距离:", x)
break
# 更新时间和位置和速度
t += dt
x0 = x
y0 = y
v0 = vy
```
将上述代码中的θ分别改为0度、180度、90度,即可实现对应情况下的求解。
阅读全文