当前位置:   article > 正文

【数学建模】趣味数模问题——四人追逐问题

【数学建模】趣味数模问题——四人追逐问题

问题描述

如图所示,在正方形ABCD的四个顶点各有一个人。在初始时刻 t=0 时,四人同时出发,以匀速 v 沿顺时针方向朝下一个人移动。如果他们始终对准下一个人为目标行进,最终结果会如何?需要作出各自的运动轨迹。

模型分析

  • 每个人都沿着正方形的边朝着下一个人移动,直到所有人都相遇为止。
  • 运动的结果是四人的运动轨迹会逐渐收缩,最终相遇于正方形的中心。

模型建立与求解:

Matlab程序实现: 文件中包含了一个Matlab程序 run.m 用于模拟这一过程,核心代码如下:

  1. % 模拟运动
  2. n = 240;
  3. x = zeros(4, n);
  4. y = zeros(4, n);
  5. dt = 0.05; % 时间间隔
  6. v = 10; % 速度
  7. % 初始坐标
  8. x(1,1) = 100; y(1,1) = 0; % 第1个人初始坐标
  9. x(2,1) = 0; y(2,1) = 0; % 第2个人初始坐标
  10. x(3,1) = 0; y(3,1) = 100; % 第3个人初始坐标
  11. x(4,1) = 100; y(4,1) = 100; % 第4个人初始坐标
  12. % 模拟过程
  13. for j = 1:n-1
  14. for i = 1:3
  15. d = sqrt((x(i+1,j)-x(i,j))^2 + (y(i+1,j)-y(i,j))^2);
  16. cosx = (x(i+1,j)-x(i,j))/d; % 计算cos值
  17. sinx = (y(i+1,j)-y(i,j))/d; % 计算sin值
  18. x(i,j+1) = x(i,j) + v*dt*cosx; % 新x坐标
  19. y(i,j+1) = y(i,j) + v*dt*sinx; % 新y坐标
  20. end
  21. d = sqrt((x(1,j)-x(4,j))^2 + (y(1,j)-y(4,j))^2);
  22. cosx = (x(1,j)-x(4,j))/d; % 计算cos值
  23. sinx = (y(1,j)-y(4,j))/d; % 计算sin值
  24. x(4,j+1) = x(4,j) + v*dt*cosx; % 第4点新x坐标
  25. y(4,j+1) = y(4,j) + v*dt*sinx; % 第4点新y坐标
  26. plot(x(1,j), y(1,j), 'ro', x(2,j), y(2,j), 'bo', x(3,j), y(3,j), 'go', x(4,j), y(4,j), 'yo') % 作图
  27. hold on
  28. pause(0.1)
  29. end

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/1002010
推荐阅读
相关标签
  

闽ICP备14008679号