数学模型狼追击兔子的问题

合集下载

《数学建模实验》

《数学建模实验》

《数学建模》上机作业信科05-3韩亚0511010305实验1 线性规划模型一、实验名称:线性规划模型—设备的最优配备问题。

二、实验目的:掌握线性规划模型的建模方法,并能用数值算法或MATLAB 库函数求解。

三、实验题目:某商店拟制定某种商品7—12月的进货、售货计划,已知商店仓库最大容量为1500件,6月底已存货300件,年底的库存以不少于300件为宜,以后每月初进货一次,假设各月份该商品买进、售出单价如下表。

四、实验要求:1、若每件每月的库存费用为0.5元,问各月进货、售货各为多少件,才能使净收益最多?建立数学模型。

2、利用相应的数值方法求解此问题的数学模型。

3、谈一谈你对这类线性规划问题的理解。

4、举一个简单的二维线性规划问题,并针对此问题将你所了解的线性规划的求解方法作出总结。

5、用软件lindo 或lingo 求解上述问题。

(选做题)6、编写单纯形算法的MATLAB 程序。

(选做题) 五、实验内容:解:设第i 个月进货xi 件,销售yi 件,则下半年总收益为销售收入减去进货费和仓库储存费之和,所以目标函数为:1211109871211109711109871211109875.232427252628252528262729)2345(5.0)2345)300(6(5.07x x x x x x y y y y y y y y y y y x x x x x x z y ------+++++++++++++++++-=整理后得:90024255.28275.2831255.25295.27295.31121110987121110987-------+++++=x x x x x x y y y y y y z由于仓库的容量为1500件,每个月的库存量大于0,小于1500,所以有如下约束条件150030001500300015003000150030001500300015003000111210119108978710119108978791089787897877877≤-+-+-+-+-++≤≤-+-+-+-++≤≤-+-+-++≤≤-+-++≤≤-++≤≤+≤y x y x y x y x y x x y x y x y x y x x y x y x y x x y x y x x y x x x又有年底库存量不少于300则:300300121112101191089787≥--+-+-+-+-++y y x y x y x y x y x x化为抽象的线性规划模型为:90024255.28275.2831255.25295.27295.31max 121110987121110987-------+++++=x x x x x x y y y y y y z ,;12,,8,7;0,0120030012003001200300120030012003001200300121112101191089787111210119108978710119108978791089787897877877 =≥≥--+-+-+-+-+≤-+-+-+-+-+≤-≤-+-+-+-+≤-≤-+-+-+≤-≤-+-+≤-≤-+≤-≤≤-i y x y y x y x y x y x y x x y x y x y x y x y x x y x y x y x y x x y x y x y x x y x y x x y x x x STi i线性规划目标函数的系数:f = [31; 28.5; 27; 28.5;25;24;-31.5;-29;-27.5;-29;-25.5;-25]; 约束方程的系数及右端项: A=[1,0,0,0,0,0,0,0,0,0,0,0 1,1,0,0,0,0,-1,0,0,0,0,0 1,1,1,0,0,0,-1,-1,0,0,0,0 1,1,1,1,0,0,-1,-1,-1,0,0,0 1,1,1,1,1,0,-1,-1,-1,-1,0,0 1,1,1,1,1,1,-1,-1,-1,-1,-1,0 -1,0,0,0,0,0,0,0,0,0,0,0 -1,-1,0,0,0,0,1,0,0,0,0,0 -1,-1,-1,0,0,0,1,1,0,0,0,0 -1,-1,-1,-1,0,0,1,1,1,0,0,0 -1,-1,-1,-1,-1,0,1,1,1,1,0,0 -1,-1,-1,-1,-1,-1,1,1,1,1,1,0 -1,-1,-1,-1,-1,-1,1,1,1,1,1,1];b=[1200;1200;1200;1200;1200;1200; 300; 300; 300; 300; 300; 300;0]; lb=zeros(12,1);[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb);实验2 非线性规划模型一、实验名称:非线性规划模型。

算法分析与设计狼找兔子

算法分析与设计狼找兔子

链表法的具体实现
#include <stdio.h> #include <stdlib.h> #include <windows.h> typedef struct shandong { int num; int state; struct shandong *next; }cave;
void createlist(cave *head,int n) {//创建链表并初始化, p->state =0代表狼未进山洞 cave *p,*q; int i; p=head; for(i=0;i<n-1;i++) { p->num=i; p->state=0; q=(cave *)malloc(sizeof(cave)); p->next=q; p=q; } p->num=n-1; p->state =0; p->next=head; }
公约数法
#include <stdio.h> int check(int n,int m) { int i,temp,k; k=m<n?m:n; for(i=1;i<=k;i++) { if(m%i==0&&n%i==0) { temp=i; } } return temp; }
void main() { int n,m,result; scanf("%d",&n); scanf("%d",&m); result=check(n,m); if(result==1) printf(“该兔子死定了!\n"); else printf(“有安全山洞!\n"); }

数学建模例题题

数学建模例题题

数学建模试题一、传染病模型医学科学的发展已经能够有效地预防和控制许多传染病,但是仍然有一些传染病暴发或流行,危害人们的健康和生命。

社会、经济、文化、风俗习惯等因素都会影响传染病的传播,而最直接的因素是:传染者的数量及其在人群中的分布、被传染者的数量、传播形式、传播能力、免疫能力等。

一般把传染病流行范围内的人群分成三类:S类,易感者(Susceptible),指未得病者,但缺乏免疫能力,与感染者接触后容易受到感染;I类,感病者(Infective),指染上传染病的人,它可以传播给S类成员;R类,移出者(Removal),指被隔离或因病愈而具有免疫力的人。

要求:请建立传染病模型,并分析被传染的人数与哪些因素有关?如何预报传染病高潮的到来?为什么同一地区一种传染病每次流行时,被传染的人数大致不变?二、线性规划模型—销售计划问题某商店拟制定某种商品7—12月的进货、售货计划,已知商店仓库最大容量为1500件,6月底已存货300件,年底的库存以不少于300件为宜,以后每月初进货一次,假设各月份该商品买进、售出单价如下表。

要求:若每件每月的库存费用为0.5元,问各月进货、售货各为多少件,才能使净收益最多?建立数学模型,并用软件求解。

【注】线性规划在MATLAB的库函数为:linprog。

语法为:x = linprog(f,A,b)x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)[x,fval,exitflag,output,lambda] = linprog(...)例如:线性规划目标函数的系数:f = [-5; -4; -6]约束方程的系数及右端项:A = [1 -1 13 2 43 2 0];b = [20; 42; 30];lb = zeros(3,1);调用线性规划程序linprog求解,得:[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb);x= 0.000015.00003.0000三、一阶常微分方程模型—人口模型与预测 下表列出了中国1982-1998年的人口统计数据,取1982年为起始年(0=t ),1016540=N 万人,200000=m N 万人。

数学模型--狼追击兔子的问题

数学模型--狼追击兔子的问题

数学模型--狼追击兔子的问题一、问题重述与分析(一)问题描述神秘的大自然里,处处暗藏杀机,捕猎和逃生对动物的生存起着至关重要的作用,而奔跑速度和路线是能否追上和逃生的关键因素。

狼追击兔子问题是欧洲文艺复兴时代的著名人物达•芬奇提出的一个数学问题。

当一个兔子正在它的洞穴南面60码处觅食时,一只恶狼出现在兔子正东的100码处。

当两只动物同时发现对方以后,兔子奔向自己的洞穴,狼以快于兔子一倍的速度紧追兔子不放。

狼在追赶过程中所形成的轨迹就是追击曲线。

狼是否会在兔子跑回洞穴之前追赶上兔子?为了研究狼是否能够追上兔子,可以先考虑求出狼追兔子形成的追击曲线,然后根据曲线来确定狼是否能够追上兔子。

(二)问题分析1、本题目是在限定条件下求极值的问题,可以通过建立有约束条件的微分方程加以模拟。

2、通过运用欧拉公式及改进欧拉公式的原理,结合高等数学的有关知识,对微分方程进行求解。

3、将数学求解用Matlab程序语言进行实现得出方程的近似解。

4、最后解方程的解结合实际问题转化为具体问题的实际结果。

二、变量说明V1 :兔子的速度(单位:码/秒)r :狼与兔子速度的倍数;V2:狼的速度(单位:码/秒),显然有v rv it:狼追击兔子的时刻(t=0时,表示狼开始追兔子的时刻)◎:在时刻t,兔子跑过的路程(单位:码),$ s(t)S2 :在时刻t,狼跑过的路程(单位:码),S2 S2(t)Q(x i,yj :表示在时刻t时,兔子的坐标P(x,y):表示在时刻t时,狼子的坐标三、模型假设1、狼在追击过程中始终朝向兔子;2、狼追击兔子的轨迹看作是一条光滑的曲线,即将动点P(x, y)的轨迹看作一条曲线,曲线方程表示为y y(x)。

3、当猎狗与兔子之间的距离相当小时认为猎狗已经追上了兔子。

四、模型建立(一)建模准备以t = 0时,兔子的位置作为直角坐标原点,兔子朝向狼的方向为x轴正向;则显然有兔子位置的横坐标x i 0。

对狼来说,当x = 100 , y= 0,即y x 1000在t = 0刚开始追击时,狼的奔跑方向朝向兔子,此时即x轴负方向, 则有y xi00 0(二)建立模型1、追击方向的讨论由于狼始终朝向兔子,则在狼所在位置P(x,y)点过狼的轨迹处的切线方向在y轴上的截距为y i。

小学奥数猎追兔问题及解析

小学奥数猎追兔问题及解析

小学奥数猎*追兔问题及解析
猎*追赶前方30米处的野兔.猎*步子大,它跑4步的路程兔子要跑7步,但是兔子动作快,猎*跑3步的时间兔子能跑4步。

*至少跑出多远才能追上野兔?(思考:此时兔子跑了多少米?)
【解析一】猎*跑12步的路程兔子要跑21步,猎*跑12步的时间兔子要跑16步,在猎*跑12步这个单位时间内,两者的速度差为兔子的5步,所以猎*追击距离为:30÷5×21=126(米).
【解析二,推荐】此处求*跑了多少米,所以统一兔子。

题目条件统一兔子
距离兔7步,*4步兔28步,*16步
时间兔4步,*3步兔28步,*21步
所以兔子跑28步时间内,*比兔子多跑*步长的21-16=5步。

*要跑30÷5×21=126米才能追上兔子。

思考:如果要求兔子跑了多少米,就得统一*。

题目条件统一兔子
距离兔7步,*4步兔21步,*12步
时间兔4步,*3步兔16步,*12步
所以*跑12步时间内,*比兔子多跑兔步长的21-16=5步。

兔要跑30÷5×16=96米才能追上兔子。

当然也可以用126米-30米=96米。

饿狼追兔问题数学建模

饿狼追兔问题数学建模

饿狼追兔问题数学建模数学建模饿狼追兔问题摘要本文研究饿狼追兔问题,是在给定狼兔相对位置,以及兔子巢穴位置的情况下求解的,狼的速度是兔子速度两倍,在不考虑其他任何因素的情况下研究狼能否追上兔子的问题。

首先,我们对问题进行了适当的分析,然后根据已知条件建立了狼的运动轨迹微分模型。

其次,根据建好的模型,运用MATLAB编程,然后仿真画出了饿狼和野兔的运动轨迹图。

再次,用解析方法将建立的模型求解,并给出该问题的结论,准确的回答题目。

最后,用数值方法求解,将所求与前面所求进行对比,也给出结论,回答题目。

并将两种方法做相应比较。

结论:野兔可以安全回巢关键词:算法高阶常微分方程§1.1问题的提出在自然界中,各种生物都有它的生活规律,它们钩心斗角,各项神通,在饿狼追野兔的工程中,饿狼的速度是野兔的二倍,但是野兔有自己的洞穴,野兔在跑到自己洞穴之前被狼捉住,野兔就将会成为饿狼的囊中之物;如果野兔在饿狼捉住自己之前跑回到自己的洞穴,那么野兔就保住小命,得以生还。

图1-1-1为饿狼追野兔的两条曲线,其中绿线表示野兔,图中的箭头表示的是野兔的奔跑方向,野兔从远点开始沿y轴正方向运动,其洞穴在坐标为(0,60)的位置;红线为饿狼的运动轨迹,,图中的剪头表示饿狼追逐野兔的方向,饿狼从坐标为(100,0)的方向追逐野兔,饿狼的速度是野兔速度的二倍。

建立数学模型需研究一下几个问题:(1)设野兔的速度我v0,饿狼的速度为v1,野兔的奔跑方向是沿y轴正方向奔跑,而饿狼的方向是一直指向野兔的方向,即饿狼的运动的轨迹某一时候的切线指向同一时刻的野兔的位置。

建立饿狼追野兔的运动轨迹微分模型。

(2)根据建立的饿狼运动轨迹得微分模型,作出饿狼与野兔的运动轨迹图形。

(3)用解析方法求解,即根据第二步作出的饿狼渔业突地运动轨迹图形,分析兔子能否安全回到巢穴,即野兔的运动曲线与饿狼的运动曲线的交点是在点(0,60)-野兔巢穴的上面还是下面。

狼追兔子数据结构课程方案

狼追兔子数据结构课程方案

个人资料整理仅限学习使用青岛大学软件技术学院游戏算法实践报告姓名曹宁专业数字媒体艺术班级10级4班指导教师刘春秋2018年1 月 16 日目录个人资料整理仅限学习使用1问题定义与描述 31.1问题定义 31.2问题描述 32关键技术 33数据的组织 33.1数据类型定义 33.2数据存储结构 44总体设计 44.1系统模块图 44.2栈的基本操作 44.3顺序表的基本操作 45详细设计 55.1顺序存储的线性表 56测试结果及分析 77心得体会 8附录:程序代码91问题定义与描述1.1问题定义现实中很多利用顺序表,栈解决一些数学模型问题1.2问题描述围绕着山顶有10 个圆形排列的洞,狐狸要吃兔子,兔子说:“可以,但必须找到我,我就藏身于这十个洞中,你可以先到 1 号洞找我,第二次隔一个洞<即 3 号洞)找,第三次隔两个洞 <即 6 号洞)找,以后如此类推,次数不限。

”但狐狸从早到晚进进出出1000 次,但仍没有找到兔子,问兔子究竟藏身于哪个洞里2.关键技术顺序表一次申请多个空间,包括结构体定义的。

N 为整数,这样得到的就是N 个连续的空间。

顺序表可以利用类似于数组的形式访问,即通过下标访问。

当然定义的变量类型必须是指针类型的,很方便,当然也可以通过像链表一样的访问。

单链表只是将空间分散开了,这样的优点就是动态申请,需要多少就申请多少,一般一次申请一个空间结点,即 N=1。

3数据的组织3.1 数据类型定义数据结构,顺序表,栈,单链表,数组。

在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。

这些按序排列的同类数据元素的集合称为数组。

在 C 语言中,数组属于构造数据类型。

一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。

因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

3.2 数据存储结构栈以顺序结构实现,队列以链表结构实现。

一只狼追逐一只兔子,狼追兔问题解读及练习题

一只狼追逐一只兔子,狼追兔问题解读及练习题

一只狼追逐一只兔子,狼追兔问题解读及练习题简介一只狼追逐一只兔子是一个常见的问题,用于解释追及一点的概念。

该问题基于以下背景:一只兔子以恒定速度向前跑动,而一只狼以更快的速度开始追逐兔子。

问题是,狼是否能追上兔子,并且若能追上,则需要多长时间。

解读该问题可以用简单的数学模型来解决。

假设兔子的速度为v1,狼的速度为v2,并且兔子与狼的初始距离为d。

根据这些条件,可以得出以下结论:- 如果v2大于v1,则狼能追上兔子并且需要的时间为d / (v2 - v1)。

- 如果v2小于或等于v1,则狼永远无法追上兔子。

练题下面是一些练题,帮助你巩固对狼追兔问题的理解。

问题一一只兔子以10 m/s的速度向前跑动,而一只狼以15 m/s的速度开始追逐兔子。

兔子与狼的初始距离为1000米。

狼需要多长时间才能追上兔子?解答一根据公式,狼需要的时间为1000米 / (15 m/s - 10 m/s) = 200秒。

问题二一只兔子以20 km/h的速度向前跑动,而一只狼以18 km/h的速度开始追逐兔子。

兔子与狼的初始距离为5公里。

狼能否追上兔子?解答二根据公式,狼需要的时间为5公里 / (18 km/h - 20 km/h) = -5公里 / 2 km/h = -2.5小时。

由于时间为负值,狼无法追上兔子。

总结一只狼追逐一只兔子是一个简单而有趣的问题,通过数学模型可以确定是否狼能追上兔子以及需要的时间。

记住,狼只有在速度比兔子快时才能追及兔子,否则狼将永远无法追上。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数学模型--狼追击兔子的问题
一、问题重述与分析
(一)问题描述
神秘的大自然里,处处暗藏杀机,捕猎和逃生对动物的生存起着至关重要的作用,而奔跑速度和路线是能否追上和逃生的关键因素。

狼追击兔子问题是欧洲文艺复兴时代的著名人物达.芬奇提出的一个数学问题。

当一个兔子正在它的洞穴南面60码处觅食时,一只恶狼出现在兔子正东的100码处。

当两只动物同时发现对方以后,兔子奔向自己的洞穴,狼以快于兔子一倍的速度紧追兔子不放。

狼在追赶过程中所形成的轨迹就是追击曲线。

狼是否会在兔子跑回洞穴之前追赶上兔子?
为了研究狼是否能够追上兔子,可以先考虑求出狼追兔子形成的追击曲线,然后根据曲线来确定狼是否能够追上兔子。

(二)
1、本题目是在限定条件下求极值的问题,可以通过建立有约束条件的微分方程加以模拟。

2、通过运用欧拉公式及改进欧拉公式的原理,结合高等数学的有关知识,对微分方程进行求解。

3、将数学求解用Matlab
4、最后解方程的解结合实际问题转化为具体问题的实际结果。

二、变量说明
v:兔子的速度(单位:码/秒)
1
r :狼与兔子速度的倍数;
2v :狼的速度(单位:码/秒),显然有12rv v =
t :狼追击兔子的时刻(t =0时,表示狼开始追兔子的时刻) 1s :在时刻t ,兔子跑过的路程(单位:码),)(11t s s =
2s :在时刻t ,狼跑过的路程(单位:码),)(22t s s =
Q ),(11y x :表示在时刻t 时,兔子的坐标
P ),(y x :表示在时刻t 时,狼子的坐标
三、 模型假设
1、狼在追击过程中始终朝向兔子;
2、狼追击兔子的轨迹看作是一条光滑的曲线,即将动点P ),(y x 的轨迹看作一条曲线,曲线方程表示为)(x y y =。

3、
四、 模型建立
(一)建模准备
以t =0时,兔子的位置作为直角坐标原点,兔子朝向狼的方向为x 轴正向;
则显然有兔子位置的横坐标01=x 。

对狼来说,当x =100,y =0,即0100==x y
在t =0刚开始追击时,狼的奔跑方向朝向兔子,此时即x 轴负方向, 则有 0100='=x y
(二)建立模型
1、追击方向的讨论
由于狼始终朝向兔子,则在狼所在位置P ),(y x 点过狼的轨迹处的切线方向在y 轴上的截距为1y 。

设切线上的动点坐标为(X ,Y ),则切线方程为
)(x X y y Y -'=- (1)
在(1)中,令X =0,则截距x y y Y '-=。

此时t v y 11=。

则此时截距等于兔子所跑过的路程,即:
1y Y =,
从而可得
x y y y Y '-==1 (2)
2、狼与兔子速度关系的建模
在t 时刻,兔子跑过的路程为
t v y s 111==
(3) 由于狼的速度是兔子的r 倍,则狼跑的路程为
1
12ry rs s == (4)
狼跑过的路程可以用对弧长的曲线积分知识得到,如下。

dx y s x ⎰'+=100
221
(5) 联立(2)、(4)、(5)得
)(11100
2x y y r ry dx y x '-=='+⎰
(6) 对(6)两边求对x 的导数,化简得
rx
y y 2
1'+='' (7) 微分方程(7)式的初始条件有:
0100==x y
0100='=x y
3、是否追上的判断
要判定狼是否追上兔子,
可以通过(7)式判定。

对(7)式,
当x =0,如果计算求解得到60≥y ,则视为没有追上;
当x =0,如果计算求解得到60<y ,则视为兔子被追上;
五、 模型求解
由微分方程得到其Matlab 函数
function yy=odefunlt(x,y)
%以狼在追击过程中的横坐标为自变量
yy(1,1)=y(2);
yy(2,1)=sqrt(1+y(2).^2)./(2.*x);
主程序:
tspan=100:-0.1:0.1;%以狼的x 坐标为自变量
y0=[0 0];
%下面只知道狼是否追上兔子,但是不易推得兔子刚刚到达窝边时,
狼与兔之间的距离
[T,Y] = ode45('odefunlt',tspan,y0);
n=size(Y,1);
disp('狼的坐标(x=0.1)')
disp(Y(n,1))%通过追击曲线计算当狼的横坐标为0.1(即tspan=0.1)时,狼的纵坐标
六、模型结果与分析
运行结果:
狼的坐标(x=0.1)
62.1932
通过上面运行结果可知,狼并没有追上兔子。

七、思考题
通过上面的结果已经知道狼并没有追上兔子。

那么兔子跑回窝边时,狼与兔子之间的距离是多少?上面的程序不能解决此问题,那么用什么办法解决呢?
(一)解决思路
可以对狼与兔子的追击过程通过计算机进行模拟,然后从模拟结果获取。

模拟程序如下,程序文件名sim_langtu.m:
function sim_langtu
%《狼兔追击问题》
%(离散模拟)
%这里没有具体考虑狼、兔的具体速度
%主要通过二者的速度倍速关系及方向向量奔跑过程
Q=[0 0];%兔子坐标
P=[100 0];%狼坐标
PQ=Q-P;%狼兔方向向量
step =1;%模拟步长:兔子奔跑的距离,step越小就越精确
count = 60/step;%以兔子的奔跑距离划分
PQ=PQ/norm(PQ)*step;%归一化,单位向量
trackP=P;
trackQ=Q;
for k=1:count;
P = P + 2*PQ;%2倍速度
Q = Q + step*[0 1];%[0 1]为兔子奔跑方向的单位方向向量
PQ = Q - P;
trackP(1+k,:)=P;
trackQ(1+k,:)=Q;
PQ=PQ/norm(PQ)*step;%归一化,单位向量
dis= sqrt(sum((P-Q).^2));
plot(trackP(:,1),trackP(:,2),'*',Q(1),Q(2),'rp',0,60,'r+'); pause(0.5)
end%for
dis%兔子到达窝边时,狼兔之间的距离
P %兔子到达窝边时,狼的坐标
Q %兔子到达窝边时,兔子的坐标
(二)模拟程序运行结果
dis =
7.0619
P =
1.6805 53.1410
Q =
0 60
注:如果修改程序中的step赋值,则结果稍有不同。

程序结束后,输出狼兔的位置图如下。

通过下图可以直观的看到,当兔子回到窝边时,狼还与兔子有一段距离,这表示兔子成功逃脱。

010
203040
5060708090100010
20
30
40
50
60
八、
九、模型评价
1
可以熟练的运用Matlab 解决一些问题,对用Matlab 编程有了更加深刻的了解。

懂得了使用数学软件求解极限,积分等问题的方法。

对于追击问题的数学模型有了一定的了解,并能简单的运用。

对遇到的一
2、
许多数学公式的符号十分难输入,致使数学理论表述十分困难。

需要输入的数据太多,容易出现输入错误,特别是容易遗漏标点符号。

3、 应考虑向简单模型优化,现有的模型还是很复杂,尤其是一些数学的
计算要能非常熟练的运用微积分知识。

所以应考虑更加简便易懂的模型。

相关文档
最新文档