数学建模~~追逐仿真问题

news2024/11/24 6:40:52

目录

1.前景介绍

2.题目描述

3.核心思路

4.思路分析

5.代码分析

5.1准备工作

5.2设置循环

5.3终止循环

5.4绘制图形

5.5完整代码


1.前景介绍

今天上午的数学建模培训王老师介绍的这个数学建模相关的经验真的是让我受益匪浅,让我对于数学建模有了更加清晰的认识,数学建模除了优化类,评价类,预测类问题,还有就是今天的追逐仿真问题,就是在一个坐标系里面去解决问题,下面就是一个简单的案例;

2.题目描述

正方形的四个顶点上面都有一个人,四个人之间相互追逐,这个题目就是想要我们画出来这个追逐的轨迹;(下面可能会使用1,2,3,4分别代表ABCD四个顶点)

3.核心思路

追逐仿真问题核心思路就是把这个连续的问题离散成为一系列的特定的状态;

就是每一次追逐的过程,都会产生一个状态的画面:下面就是一系列的特定的状态(部分截图,方便大家的理解);

就是A向上边走一个步长,B向左边走一个步长,C向下D向右,这个样经过一轮之后就组成了一个下面的新的正方形,然后按照这个逻辑继续进行下去;

4.思路分析

我们可以假设这个边长是1,每一次走0.05,也就是步长为0.05,每次经过一个步长之后重新去计算这个点的坐标和对应的方向向量;

我们首先要确定这4个顶点的坐标,每次更新之后还有去确定这4个顶点的新的坐标,实际上确定的是这4个直线的方向向量;

这个实际上是一个循环,当这4个点里面的某两个之间的距离小于我们的步长的时候,这个循环实际上就会停止,因为这个时候我们再走一步就会相遇了,所以这个时候就需要停止运行了;

最后我们使用plot函数进行绘制动图,绘制出来整个过程的动画,并且使用pause把这个过程逐个展示出来;

5.代码分析

5.1准备工作

我们首先确定这四个点的坐标以及之间的方向向量,设置步长为0.05,DD为记录这个过程中的4个点的坐标的变化情况,并且把这个坐标的相关数据放置在DD矩阵里面去;

DD是一个2*4的矩阵,这个矩阵的每一列代表一个坐标,第一类10就是A点的坐标,11就是B点的坐标,以此类推,相当于这个矩阵的第一行就是横坐标,第二行就是纵坐标;

V表示的就是方向向量,这个后面的投影也是使用的方向向量进行计算的,我们的这个V实际上是有拼接得到的,2-1求解两个点之间的方向向量,3-2,4-3同样可以求解,这个时候没有办法去求解1-4就是1,4这两个点之间的

这个就是第一次计算得到的方向向量结果展示:

5.2设置循环

我们假设这个循环次数是1000次,实际上肯定是不会进行这么多次的循环,我们中间满足某一个条件的时候会终止这个循环;

dx就是每走一步在x方向上面的变化量L就是步长,后面乘以的相当于就是cos角,就是这个步长在x方向上面的投影,cos的计算就是△x/(△x^2+△y^2)^0.5,这个实际上就是我们的cos的计算过程,就是利用的向量的知识,同理这个dy就是计算的在y方向上面的投影长度;

计算出来这个dx,dy之后,我们要更新这个位置坐标,我们原来的位置坐标是放置在D这个矩阵里面的,我们把这个D+dxy实际上得到的就是走一步之后得到的新的位置坐标;

得到新的坐标,我们的这个新的方向向量也是需要进行更新的,V就是更新的新的方向向量,DD记录每一次这个里面的4个顶点的坐标的具体数值;

5.3终止循环

上面也介绍到了,两个顶点之间的距离小于步长L的时候这个循环就会停止,我们计算两个顶点之间的距离,可以自己去写一个式子(我下面的注释就是的),也可以调用norm函数,参数使用减号进行连接,两个方式是等效的,选择合适的即可;

5.4绘制图形

plot的第一个参数就是x坐标,第二个参数就是y坐标,但是我们的D(1,:)和D(2,:)只能关联上12,23,34,这个14没有建立联系,所以我们使用矩阵的拼接把两个点额外的搞上去;

hold就是新的图形不会覆盖原来的图形;

pause就是每一次绘制完成之后停顿时间为0.1秒,方便我们观察这个过程;

5.5完整代码

clear;
clc;
D=[1 1 0 0
    0 1 1 0];

%%计算方向向量
V=[D(:,2:end)-D(:,1:end-1) D(:,1)-D(:,end)];

%%设定步长大小
L=0.05;
DD=[];


for i=1:1000

    %%分别计算xy方向上的投影长度
    dx=L*V(1,:)./((V(1,:).^2+V(2,:).^2).^0.5);
    dy=L*V(2,:)./((V(1,:).^2+V(2,:).^2).^0.5);
    dxy=[dx;
        dy];
    D=D+dxy;
    DD=[DD;D];

    %%计算新的方向向量
    V=[D(:,2:end)-D(:,1:end-1) D(:,1)-D(:,end)];

    %%循环结束条件
    if norm(D(:,2)-D(:,1))<=L
        break;
    end
    % if ((D(1,2)-D(1,1)).^2+(D(2,2)-D(2,1)).^2).^0.5<=L
    %     break;
    % end

    %%绘制图形
    plot([D(1,:) D(1,1)],[D(2,:) D(2,1)],'r');
    hold on;
    pause(0.1);
end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1995512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据增强库albumentations使用指南

数据增强技术就是人为地生成真实数据集的不同版本以增加其数据大小。计算机视觉(CV)和自然语言处理 (NLP) 在模型训练过程中经常使用数据增强策略来处理数据稀缺和数据多样性不足的问题&#xff0c;避免模型因数据量而导致的过拟合、泛化性不足等问题。计算机视觉中常见的数据增…

Node.JS - 基础

目录 A. 简介 B. 安装和配置 C. npm A. 简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 一、运行原理 事件驱动和非阻塞 I/O 模型&#xff1a; Node.js 采用事件驱动、异步编程的方式。这意味着它不会在等待一个操作&#xff08;如读取文件或网络请求&a…

spfa算法判断是否存在负权回路

spfa算法判断是否存在负权回路 题目 当一个图中存在一个负权回路时&#xff0c;是无法利用spfa 算法去求最短路问题的&#xff0c;但是可以利用spfa 算法判断有没有负权回路 题目 给定一个 n n n 个点 m m m 条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c; 边…

VisionPro二次开发学习笔记11-使用 Caliper和Fixture定位Blob工具检测方块

该示例演示了如何使用卡尺工具和夹具工具来固定 Blob 工具。示例代码将检测图像上部区域中小方块的存在。当点击“运行”按钮时&#xff0c;将读取一张新图像。卡尺工具将被运行&#xff0c;卡尺工具的输出 Y 信息将传递给夹具工具。夹具工具使用来自卡尺工具的 Y 信息和新图像…

新手养猫怎么选智能猫砂盆?不踩雷平价实用攻略测评分享!

众所周知&#xff0c;猫咪是非常爱干净的动物&#xff0c;一旦猫砂盆满了&#xff0c;它们就可能会选择其他角落“解决”&#xff0c;这不仅会让家里充满异味&#xff0c;还可能影响猫咪的健康。而长期堆积的猫砂&#xff0c;也容易滋生细菌&#xff0c;对猫咪的爪子也是一种伤…

[CISCN2019 华东南赛区]Web111

打开题目&#xff0c;看到题目 注意最下面的Build With Smarty! , 猜测是smarty模板注入。smart是php的模板引擎&#xff0c;模板引擎的作用就是分离前端页面和数据的&#xff0c;题目中显示API的URL由于环境的原因无法使用&#xff0c;但我们的IP依旧显示在了页面的右上角&…

python-约瑟夫环(赛氪OJ)

[题目描述] n 个人&#xff08; 0,1,2,3,4...n−1 &#xff09;&#xff0c;围成一圈&#xff0c;从编号为 k 的人开始报数&#xff0c;报数报到 m 的人出队。 下次从出队的人之后开始重新报数&#xff0c;循环往复&#xff0c;当队伍中只剩最后一个人的时候&#xff0c;那个人…

【Material-UI】Checkbox 组件中的 Label Placement 设置详解

文章目录 一、Checkbox 组件简介1. 组件概述2. labelPlacement 属性 二、labelPlacement 属性的使用方法三、各标签位置的效果与应用场景1. Top&#xff08;顶部&#xff09;2. Start&#xff08;左侧&#xff09;3. Bottom&#xff08;底部&#xff09;4. End&#xff08;右侧…

【文献精读】LOCA 图4

&#xff08;1&#xff09;数据流动 QKV的选取

Compass Arena 上新啦!新增双多模态模型匿名对战

2024 年 5 月&#xff0c;上海人工智能实验室司南 OpenCompass 团队 与魔搭 ModelScope 联合推出了大模型评测平台——Compass Arena&#xff08;大模型竞技场&#xff09;&#xff0c;为国内的大语言模型领域引入了一种全新的竞技模式。 今天&#xff0c;Compass Arena 迎来重…

JVM知识总结(G1收集器)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ G1收集器 G1**&#xff08;Garbage First&#xff09;是一款面向服…

Mocaverse「Enter MOCALAND」上线!

我们很高兴宣布 Mocaverse 和 The Sandbox 将开展一项新合作——「Enter MOCALAND&#xff01;」 继 “Into the Unknow” Game Jam 成功举办之后&#xff0c;我们的创作者们在此基础上创作出了近 50 款未来派多人游戏&#xff0c;我们很高兴能继续与社区一起庆祝共同创作&…

Redis与DataBase保持数据一致性

文章目录 1. 读取数据2. 写数据2.1 先操作缓存2.2 先操作数据库 在我们系统中缓存最常用的策略是&#xff1a;服务端需要同时维系DB和Cache&#xff0c;并且是以DB的结果为准&#xff0c; Cache-Aside Pattern&#xff08;缓存分离模式、旁路缓存&#xff09;。 1. 读取数据 当…

高质量翻译对中国移动应用在国外市场推广的影响

在移动应用的竞争格局中&#xff0c;打入国外市场对中国开发商来说既是机遇也是挑战。决定中国移动应用程序在海外成功的最关键因素之一是其翻译质量。高质量的翻译在有效推广该应用程序、确保其与当地用户产生共鸣&#xff0c;并最终推动新市场的采用和增长方面发挥着关键作用…

嵌入式全栈开发学习笔记---数据结构(广度优先算法)

目录 过程分析 代码实现 queue_maze.c 上节我们讲完了队列&#xff0c;本节开始学习广度优先算法&#xff01; 之前我们用深度优先算法找出从迷宫出来的所有路径&#xff0c;本次我们要用广度优先算法找出最短路径。 过程分析 广度优先算法也叫广度优先搜索。 这种算法就相当…

Qwen2-Math 开源 AI 模型发布;阿里云推出首个域名 AI 大模型应用丨 RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思…

vscode用快捷键一键生成vue模板

项目中有些代码模块是固定的&#xff0c;如下面的代码所示&#xff0c;为了不重复写这些相同的代码&#xff0c;我们可以使用快键键一键生成模板。 流程&#xff1a; 中文&#xff1a;首选项-> 用户代码片段 -> 输入框中输入vue,找到vue.json文件&#xff08;没有vue.j…

如意AI健康管理开放域自然对话算法分析报告

一、算法全周期行为分析 1. 算法安全 信息内容安全&#xff1a;通过意图识别和实体抽取技术&#xff0c;确保生成的内容不涉及违法或不当信息。 信息源安全&#xff1a;数据采集环节采用安全措施&#xff0c;保护数据不被非法访问。 2. 算法监测 信息安全监测&#xff1a;实施实…

国产芯上运行TinyMaxi轻量级的神经网络推理库-米尔基于芯驰D9国产商显板

本篇测评由优秀测评者“短笛君”提供。 本文将介绍基于米尔电子MYD-YD9360商显板&#xff08;米尔基于芯驰D9360国产开发板&#xff09;的TinyMaxi轻量级的神经网络推理库方案测试。 算力测试 TinyMaix 是面向单片机的超轻量级的神经网络推理库&#xff0c;即 TinyML 推理库&a…

重头开始嵌入式第十六天(结构体,共用体)

目录 结构体 结构体定义 结构体初始化 结构体赋值 结构体调用 结构体大小 在 C 语言中&#xff0c;结构体内存对齐规则主要遵循以下原则&#xff1a; 共用体 共用体定义 共同体赋值&#xff0c;初始化 共用体大小 结构体与共用体的区别 结构体 在 C 语言中&#xff0c;…