python仿真——猎狗追兔子

2023-05-16

猎狗追兔子问题

有一只猎狗在原点位置发现了一只兔子在正东方距离它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)绘图结果如下

猎狗追兔子
这一模型中,狗对兔子的追逐模式是固定的,当兔子的移动方式改变时也可以轻松修改。
例如兔子在半径R=10的圆周上以速度3.9米/秒运动,猎狗仍以4米/秒追赶兔子:

'''
兔子绕圆圈跑,狗从圆心起步正对着兔子跑
'''
import numpy as np
from matplotlib.pyplot import *

R=10
Xr=[R];Yr=[0];vr=3.9
Xd=[0];Yd=[0];vd=4
dt=0.1
L=R
n=0
theta=0
xr=dt*vr

while L>0.1:
    Yr.append(xr*np.cos(theta)+Yr[n])
    Xr.append(-xr*np.sin(theta)+Xr[n])
    X=Xr[n]-Xd[n]
    Y=Yr[n]-Yd[n]
    L=np.sqrt(X**2+Y**2)
    Yd.append(Yd[n]+vd*dt*Y/L)
    Xd.append(Xd[n]+vd*dt*X/L)
    n+=1
    theta+=vr/R*dt

print('所用时间:%.2f秒'%(n*dt))
plot(Xr,Yr,Xd,Yd)
axis('equal')
show()

结果则变成:
所用时间: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秒
结果
当N增大时:
N=5
在这里插入图片描述
N=10
在这里插入图片描述
N=20
在这里插入图片描述
可见人越多,运动轨迹越接近圆,人移动到中心所需时间越长。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python仿真——猎狗追兔子 的相关文章

随机推荐

  • 什么是云开发?小程序实例超详细演示~

    学习视频 xff1a 八分钟读懂云开发 哔哩哔哩 bilibili小姐姐带你30分钟创建并上线小程序项目 云开发实战 哔哩哔哩 bilibili 参考资料 xff1a 微信开放文档 qq com 云开发 百度百科 baidu com 推荐阅
  • 通俗易懂的讲讲什么是中间件?

    学习视频 xff1a 学相伴 RabbitMQ最新完整教程IDEA版通俗易懂 KuangStudy 狂神说 学相伴飞哥 哔哩哔哩 bilibili 目录 一 中间件简介1 1 什么是中间件1 2 为什么要使用中间件1 3 中间件特点1 4
  • Gitea——私有git服务器搭建详细教程

    本文将从源代码和docker安装两种方式带大家从0 xff5e 1通过Gitea搭建一个私有git服务器 Gitea 私有git服务器搭建教程 什么是Gitea一 源代码安装方式1 前置环境要求2 下载gitea3 构建运行 二 Docke
  • Golang的交叉编译问题

    参考 xff1a Golang交叉编译各个平台的二进制文件 Go语言中文网 Golang中文社区 studygolang com 也谈Go的可移植性 Tony Bai 今天准备将一个在Mac上开发的Golang项目部署到云服务器上进行部署上
  • Docsify个人网站搭建详细教程

    目录 一 什么是 docsify二 安装 docsify三 多页文档设置四 定制化配置4 1 侧边栏4 2 导航栏4 3 封面4 4 主题 五 部署5 1 部署到Gitee5 2 部署到云服务器 一 什么是 docsify docsify是
  • Hexo集成Algolia实现搜索功能

    2年前搭建的hexo博客好久没有维护了 xff0c 一看 hexo 以及先前使用 butterfly 主题已经更新好几个版本了 xff0c 看介绍在速度性能上有了很大的提高 xff0c 于是打算给 hexo 升个级 xff0c 整理整理翻翻
  • 知识图谱入门——(1)Neo4j基础操作

    1 增 增加一个节点 create n person name 39 我 39 xff0c age 31 带有属性关系 create p Person name 34 我 34 age 34 31 34 包工程 金额 10000 gt n
  • Hexo集成Valine实现评论留言

    2年前搭建的hexo博客好久没有维护了 xff0c 一看 hexo 以及先前使用 butterfly 主题已经更新好几个版本了 xff0c 看介绍在速度性能上有了很大的提高 xff0c 于是打算给 hexo 升个级 xff0c 整理整理翻翻
  • 谷粒商城学习笔记——第一期:项目简介

    一 项目简介 1 项目背景 市面上有5种常见的电商模式 B2B B2C C2B C2C O2O B2B 模式 Business to Business xff0c 是指商家和商家建立的商业关系 如阿里巴巴B2C 模式 Business to
  • 【快速上手mac必备】常用优质mac软件推荐(音视频、办公、软件开发、辅助工具、系统管理、云存储)

    本文章的主要内容是我作为一名大四学生 准程序员 up主这三种身份来给大家推荐一下 mac 上好用的软件以及工具 本人也是从去年9月份开始从windows阵营转移到了mac阵营 xff0c 刚开始使用的时候 xff0c 也曾主观认为mac o
  • 网站徽章shields制作教程

    平时在逛 Gitee Github 等各大代码仓库时 xff0c 往往能看到以下这种徽章式的网页链接 xff0c 美观好看又方便 xff0c 那么这个徽章是如何制作出来的呢 xff1f 本文就带大家制作属于自己的徽章式链接 制作工具 xff
  • Gitee图床无法访问新增防盗链,最新详细解决方案

    目录 一 寻找Gitee图床挂掉的原因二 迁移到腾讯云cos1 创建存储桶2 设置密钥3 配置PicGO4 验证配置是否成功5 迁移Gitee图片6 批量更改url前缀 三 最后想说 一 寻找Gitee图床挂掉的原因 昨天晚上准备整理一下以
  • 假设发生了404错误,都统一跳转到error.html页面,如何在web.xml中配置?

    假设发生了404错误 xff0c 都统一跳转到error html页面 xff0c 如何在web xml中配置 xff1f lt error page gt lt error code gt 404 lt error code gt lt
  • 人工智能研究主要有哪三大学派,其特点是什么?

    人工智能研究主要有哪三大学派 xff0c 其特点是什么 xff1f xff08 1 xff09 符号主义 xff1a 又称为功能模拟学派 xff0c 主要观点认为智能活动的基础是物理符号系统 xff0c 思维过程是符号模式的处理过程 其特点
  • python 绘制graph图——networkx

    span class token keyword import span networkx span class token keyword as span nx span class token keyword import span m
  • MacBookPro M1&M1Pro安装PyQt5

    前言 最近想开发一个GUI图形界面的应用 xff0c 在Mac上面使用Pycharm安装PyQt5怎样都无法安装 xff0c 联想到了可能是当前电脑系统架构导致PyQt5包无法下载或适配 xff0c 所以借鉴了网上大佬的一些方法 xff0c
  • 在普通Maven项目中引入Mybatis

    在普通Maven项目中引入Mybatis 1 引入依赖包 打开项目根目录下的pom xml对dependencies进行配置即引入mybatis和mysql connector java两个依赖包 span class token tag
  • 解决方案|ValueError:The following settings are not supported :{‘username‘: ‘neo4j“}

    此处贴出py2neo官方链接 xff08 2022 06 14 供各位同学参考 https py2neo org 2021 1 问题所在 xff1a 我使用的代码是老版本的 xff0c 而我使用的Neo4j是最新版的 解决方案 xff1a
  • 关于SpringMVC的XML配置步骤

    1 配置前端控制 lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt web app xmlns 61 34 http xmlns jcp org xml ns javaee
  • python仿真——猎狗追兔子

    猎狗追兔子问题 有一只猎狗在原点位置发现了一只兔子在正东方距离它20米的地方 xff0c 此时兔子开始以3米 秒的速度向正北方全速跑去 xff0c 假设猎狗在追赶兔子的时候始终朝着兔子的方向以速度4米 秒全速奔跑 xff0c 用计算机仿真法