python仿真 |
您所在的位置:网站首页 › 猎狗追兔问题怎么做 › python仿真 |
猎狗追兔子问题
有一只猎狗在原点位置发现了一只兔子在正东方距离它20米的地方,此时兔子开始以3米/秒的速度向正北方全速跑去,假设猎狗在追赶兔子的时候始终朝着兔子的方向以速度4米/秒全速奔跑,用计算机仿真法完成下题 (1)求猎狗追上兔子所需时间 (2)在猎狗能追上兔子的情况下,猎狗跑过的路程是多少? (3)画出猎狗追赶兔子奔跑的曲线图 python代码如下: import numpy as np from matplotlib.pyplot import * Xr=[20];Yr=[0];vr=3#兔子的水平、竖直位置及速度 Xd=[0];Yd=[0];vd=4#猎狗的水平、竖直位置及速度 dt=0.1 L=20 n=0 while L>0.1: Yr.append(dt*vr+Yr[n]) Xr.append(20) X=Xr[n]-Xd[n] Y=Yr[n]-Yd[n] L=np.sqrt(X**2+Y**2) ''' X:水平相对位置 Y:竖直相对位置 L:相对位置 ''' Yd.append(Yd[n]+vd*dt*Y/L) Xd.append(Xd[n]+vd*dt*X/L) n+=1 print('所用时间:%.2f秒'%(n*dt)) plot(Xr,Yr,Xd,Yd) show()运行结果: (1)所用时间:11.60秒 (2)猎狗跑过路程显然是t*vd=46.4米 (3)绘图结果如下
结果则变成: 所用时间:20.80秒 甲、乙、丙、丁四人分别位于正方形的四个顶点,顶点与中心距离为200m,并且以恒定的速率1米/秒行走。在行走过程中,甲始终朝向乙的当前位置;同样,乙朝向丙、丙朝向丁、丁朝向甲。试绘制四人行走过程的轨迹。 代码如下: import numpy as np import matplotlib.pyplot as plt N=4 V=1 d=200 dt=1 #把N人安排到正N边形的顶点,对于不同人数有更好普适性 LX=[[d*np.cos(2*i*np.pi/N)] for i in range(N)] LY=[[d*np.sin(2*i*np.pi/N)] for i in range(N)] n=0 D=2*d*np.sin(np.pi/N) while D>1: for i in range(N): ''' 四人轮流走。如果因为对称,每轮只算一个人, 会因为一开始甲相对乙直行,使得四人均直线行走 ''' j=(i+1)%N #被第i号追随的人 D_x=LX[j][n]-LX[i][n] D_y=LY[j][n]-LY[i][n] D=np.sqrt(D_x**2+D_y**2) cos_t,sin_t=D_x/D,D_y/D LX[i].append(LX[i][n]+V*cos_t*dt) LY[i].append(LY[i][n]+V*sin_t*dt) n+=1 print('所用时间:%.2f秒'%(n*dt)) for i in range(N) : plt.plot(LX[i],LY[i]) plt.axis('equal') plt.show()所用时间:291.00秒
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |