(完整版)matlab求解夫妻过河问题毕业设计
- 格式:doc
- 大小:138.00 KB
- 文档页数:22
数学建模常用方法MATLAB求解数学建模是通过数学方法对实际问题进行数学描述、分析和求解的过程。
MATLAB是一款功能强大的数学软件,广泛用于数学建模中的问题求解。
在数学建模中,常用的方法有数值求解、优化求解和符号计算。
下面将介绍MATLAB在数学建模中常用的方法和求解示例。
1.数值求解方法:数值求解是利用数值计算方法来近似求解实际问题的数学模型。
MATLAB提供了许多数值求解函数,如方程求根、解线性方程组、曲线拟合、积分和微分等。
以方程求根为例,可以使用fsolve函数来求解非线性方程。
示例:求解非线性方程sin(x)=0.5```matlabx0=0;%初始点x = fsolve(fun,x0);```2.优化求解方法:优化求解是在给定约束条件下,寻找使目标函数取得最优值的变量值。
MATLAB提供了许多优化求解函数,如线性规划、二次规划、非线性规划、整数规划等。
以线性规划为例,可以使用linprog函数来求解线性规划问题。
示例:求解线性规划问题,目标函数为max(3*x1+4*x2),约束条件为x1>=0、x2>=0和2*x1+3*x2<=6```matlabf=[-3,-4];%目标函数系数A=[2,3];%不等式约束的系数矩阵b=6;%不等式约束的右端向量lb = zeros(2,1); % 变量下界ub = []; % 变量上界x = linprog(f,A,b,[],[],lb,ub);```3.符号计算方法:符号计算是研究数学符号的计算方法,以推导或计算数学表达式为主要任务。
MATLAB提供了符号计算工具箱,可以进行符号计算、微积分、代数运算、求解方程等。
以符号计算为例,可以使用syms函数来定义符号变量,并使用solve函数求解方程。
示例:求解二次方程ax^2+bx+c=0的根。
```matlabsyms x a b c;eqn = a*x^2 + b*x + c == 0;sol = solve(eqn, x);```以上是MATLAB在数学建模中常用的方法和求解示例,通过数值求解、优化求解和符号计算等方法,MATLAB可以高效地解决各种数学建模问题。
求解夫妻过河问题曲靖师范学院本科生毕业论文论文题目: matlab求解夫妻过河问题作者、学号:郭彩虹2010111212学院、年级:数学与信息科学学院2010级学科、专业:数学数学与应用数学指导教师:郭昀完成日期:2013年12月27日曲靖师范学院教务处摘要渡河问题.[]1始于公元8 世纪,至今它仍是一个逻辑难题,许多数学建模教材上已经提到.这个问题指的是:有不同的对象或生物,他们其中一些相互不共存,逐步地让一小群体从河的一岸到另一岸,经过有限步后,该群体全部从一岸达到另一岸,并且要求没有任何损失.在渡河问题的夫妻过河问题中我们发现状态转移问题有时不一定有解,有时的解又不一定有规律,本文对于夫妻过河问题利用图解法和matlab编写程序求解5对、6对夫妻过河是否有解,并推广到n对夫妻与船的运载能力m对于能否安全渡河时它们之间的关系。
关键词:多步决策 matlab 数学模型渡河问题Problem of couples across the riverAbstract: the problem of crossing the river. In the 8th century, it still is a logical problem, many mathematical modeling teaching material has been mentioned. The question is: have different objects or creatures, they lack some mutual coexistence, gradually to a small group from one bank to another bank of the river, after finite steps, the group all from one side to the other shore, and requires no losses. In crossing the river problem of couples across the river, we found that state transition problem sometimes does not necessarily have a solution, sometimes the solution is not necessarily regular, in this paper, using the graphical method for the problem of couples across the river and the matlab program to solve the 5, 6 for couple across a river if there is a solution,And derived to n couple with the ability to run m to safe crossing the river when the relationship between them.Keywords: Multistep decision Matlab Mathematical model Problem of crossing the river目录1 引言 (1)2 文献综述 (1)2.1 国内外研究现状 (1)2.2 国内外研究现状评价 (2)2.3 问题提出 (2)3 模型假设 (2)4 符号说明 (2)5 重述3、4对夫妻过河问题的解 (3)5.1 3对夫妻过河的解 (3)5.2 4对夫妻过河的解 (3)6 五对夫妻过河模型 (4)6.1 模型构成 (4)6.2 模型建立 (4)6.3 模型求解 (4)6.31 Matlab编程求解 (4)6.32 图解法 (7)7 六对夫妻过河模型 (8)7.1 模型构成 (8)7.2 模型求解 (9)8 n对夫妻过河情况 (10)8.1 求解 (10)8.2 验证 (11)9 总结与展望 (12)9.1 总结 (12)9.2后续研究工作展望 (13)参考文献 (14)附录 (15)1 引言这是一个古老的阿拉伯数学问题。
抢渡长江问题提出:“渡江”是武汉城市的一张名片。
1934年9月9日,武汉警备旅官兵与体育界人士联手,在武汉第一次举办横渡长江游泳竞赛活动,起点为武昌汉阳门码头,终点设在汉口三北码头,全程约5000米。
有44人参加横渡,40人达到终点,张学良将军特意向冠军获得者赠送了一块银盾,上书“力挽狂澜”。
2001年,“武汉抢渡长江挑战赛”重现江城。
2002年正式命名为“武汉国际抢渡长江挑战赛”,定于每年的5月1日进行。
由于水情、水性的不可预测性,这种竞赛更富有挑战性和观赏性。
2002年5月1日,抢渡的起点设在武昌汉阳门码头,终点设在汉阳南岸咀,江面宽约 1160米。
当日的平均水温16.8℃,江水的平均流速为1.89米/秒。
参赛的国内外选手共186人(其中专业人员将近一半),仅34人到达终点,第一名的成绩为14分8秒。
除了气象条件外,大部分选手由于路线选择错误,被滚滚的江水冲到下游,而未能准确到达终点。
假设在竞渡区域两岸为平行直线, 两岸的垂直距离为 1160 米, 从武昌汉阳门的正对岸到汉阳南岸咀的距离为 1000米,见图1。
下面借助数学模型解决如下问题: (1)假定在竞渡过程中游泳者的速度大小和方向不变,且竞渡区域每点的流速均为 1.89 米/秒。
如果2002年第一名是按最优路径游泳的,试说明她是沿着怎样的路线前进的,求她游泳速度的大小和方向。
(2)在(1)的假设前提下,试为一个速度能保持在1.5米/秒的人选择最佳的游泳方向,并估计他的成绩。
(3)在(1)的假设下,如果游泳者始终以和岸边垂直的方向游, 他(她)们能否到达终点?并说明为什么 1934年和2002 年能游到终点的人数的百分比有如此大的差别;给出能够成功到达终点的选手的条件。
(4)流速沿离岸边距离的分布为 (设从武昌汉阳门垂直向上为 y 轴正向):⎪⎩⎪⎨⎧=≤≤<<≤≤米米秒,米米米秒,米米米秒,米1160960/47.1960200/11.22000/47.1)(y y y y v (1) 游泳者的速度大小(1.5米/秒)仍全程保持不变,试为他选择游泳方向和路线,估计他的成绩。
渡河问题的Hamming算法的Matlab求解
谢朋;梁西腾;王娜
【期刊名称】《鲁东大学学报(自然科学版)》
【年(卷),期】2007(023)004
【摘要】借助于Matlab软件对渡河问题进行了研究,通过对渡河问题的解析解和数值解进行图像和理论分析,说明了Hamming算法对求解此类数学建模问题的有效性和实用性.
【总页数】5页(P301-305)
【作者】谢朋;梁西腾;王娜
【作者单位】鲁东大学数学与信息学院,山东,烟台,264025;鲁东大学数学与信息学院,山东,烟台,264025;烟台第一职业中专,山东,烟台,264001
【正文语种】中文
【中图分类】O175.1
【相关文献】
1.基于MATLAB的工程项目管理多目标优化问题的解析求解及算法研究 [J], 薛亚宏;王加毅
2.渡河问题阿当姆斯法的Matlab求解 [J], 陈磊
3.求解Hamming距离下单位型单发点树型网络最短路改进问题的算法 [J], 张斌武;王勤
4.求解Hamming距离下的最短路改进问题的一个近似算法 [J], 张斌武;王勤;余
维燕
5.求解信赖域子问题的Milne-Hamming预报校正算法 [J], 范晓宇;王希云
因版权原因,仅展示原文概要,查看原文内容请购买。
题目:夫妻过河三对夫妻要过河,河中只有一条小船,可容两人。
每个个丈夫都不愿让自己的妻子和另一个男人在一起,除非自己也在场。
(1)如何过河?有多少种渡河次数最少的方法?(2)三对夫妻改为四对夫妻,其他条件不变,能过河吗?为什么?若船至多可容三人,能过河吗?怎么过?数学建模论文题目:夫妻过河问题摘要:主要运用状态转移的方法分析类似于夫妻过河等问题。
状态转移矩阵是俄国数学家马尔科夫提出的,他在20世纪初发现:一个系统的某些因素在转移中,第n次结果只受第n-1的结果影响,即只与当前所处状态有关,而与过去状态无关。
在马尔科夫分析中,引入状态转移这个概念。
所谓状态是指客观事物可能出现或存在的状态;状态转移是指客观事物由一种状态转移到另一种状态的概率。
关键词:状态转移,状态集合。
正文:1.建模我们把此岸有M个男人(丈夫),F个女人(妻子)的情形称为一种状态,用一对数组(M,F)表示,注意M、F的顺序不要变,其中M、F 均为不小于0且不大于3的整数.很显然,在我们的问题中,并非所有数组所表示的状态。
(M,F) M,F∈Z,0≤M,F≤3都是被允许的.例如在0<M<F≤3时,状态(M,F)就不允许,因为它表示必有女子在其丈夫不在场的情形下与其他男人在一起了.除去不允许状态后,剩下的就都称为允许状态.于是我们可以把本问题的允许状态集合S写出来:S={(0,0),(0,1),(0,2),(0,3),(1,1),(2,2),(3,3),(3,2),(3,1),(3,0),(2,1)}.有了允许状态集S,还需要知道这些允许状态之间是如何变化的,特别是如何从三对夫妻全在此岸是的状态(3,3)一步步地变为三对夫妻全在彼岸的状态(0,0)的.这就需要讨论所谓运算(或决策),它们也是由一对有序数组表示的.因为小船每次从河的一岸驶向另一岸都使状态发生变化,故我们把小船的一次运送称为一次运算(或决策).我们规定第n次运算dn由第n+1个状态Sn+1减去第n个状态Sn来确定,即dn=Sn+1-Sn.注意到小船由此岸驶向彼岸时,此岸人数由多变少,而船由彼岸驶回此岸时,此岸人数由少变多.又由于小船载乘人数不多于2人,故运算dn必然满足:dn=(-1)n(p,q),p,q≥0且1≤p+q≤2,n∈N,其中p,q分别表示小船离岸时船上男人与女人的数量.当Sn+1,Sn均为允许状态时,称dn为允许运算,我们把方程Sn+1=Sn+dn称为状态转移方程.至此,我们已经把问题完全抽象化了.2.解法我们下面的任务就是利用状态转移方程来求解.实际上是要一步一步地考虑由一个允许状态加上一个允许运算,得出另一个允许状态的过程,试图寻求一条由初始状态(3,3)转为期望状态(0,0)的路径(当然对有些问题这种路径不一定存在),也就是要确定一系列的允许运算dn(n=1,2,…,m),使得(3,3)+d1+d2+…+dm=(0,0).由于本问题涉及的变量不多,约束条件也不多,我们可以凭简单的演算来求解.当某些问题变量较多,约束条件也较复杂时,我们可以借助计算机,以避免十分繁琐的演算.下面是利用状态转移方程直接求解“夫妻过河”问题的一条路径:经过决策经过11次会完成。
function jueche=guohem=input('输入男人数:');w=input('输入女人数:');c=input('船的最大容量:');if m>wm=input('输入男人数:');w=input('输入女人数:');c=input('船的最大容量:');end%%%%%%%第一阶段决策生成结束jc=1; %决策向量放在矩阵d中,jc是插入新元素的行标初始为1;for i=0:cfor j=0:cif (i+j<=c)&&(i+j>0) %满足条件D={(1<=u+v<c,u,v=0,1,2}d(jc,1:3)=[i,j,1];%生成一个决策向量立刻扩充为3维;d(jc+1,1:3)=[-i,-j,-1]; %同时生成他的负向量;jc=jc+2; %由于生成两个决策向量,jc向下移动2个;endj=0;endend%%%%%状态数组的生成kx=1; %状态向量放在A矩阵中,生成方法同矩阵生成;for i=w:-1:0for j=m:-1:0if((i==j)&&(j>=1)&&(j<=1))|| ((i==j)&&(j>=2)&&(j<=2))||((i==0)||i==w)% (i=j)&(j=1))| ((i=j)&(j=2))|((i==0)|i==w)为可以存在的状态的%约束条件%生成状态数组的集合A(kx,1:3)=[i,j,1];A(kx+1,1:3)=[i,j,0];kx=kx+2;endendw=j;end; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 将状态向量生成抽象矩阵k=(1/2)*size(A,1);cx=zeros(2*k,2*k);a=size(d,1);for i=1:2*kfor j=1:ac=A(i,:)+d(j,:) ;x=(A(:,1)==c(1))&(A(:,2)==c(2))&(A(:,3)==c(3)) ;v(i,x)=1; %x为空不会改变v值endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% dijstra 算法x=1; y=size(A,1);m=size(v,1);T=zeros(m,1);T=T.^-1;lmd=T;P=T;S=zeros(m,1);S(x)=1;P(x)=0; lmd(x)=0;k=x;while(1)a=find(S==0);aa=find(S==1);if size(aa,1)==mbreak;endfor j=1:size(a,1)pp=a(j,1);if v(k,pp)~=0if T(pp)>(P(k)+v(k,pp))T(pp)=(P(k)+v(k,pp));lmd(pp)=k;endendendmi=min(T(a));if mi==infbreak;elsed=find(T==mi);d=d(1);P(d)=mi;T(d)=inf; k=d;S(d)=1;endendif lmd(y)==infjueche='can not reach';return;endjueche(1)=y;g=2; h=y;while(1)if h==xbreak;endjueche(g)=lmd(h);g=g+1;h=lmd(h);endjueche=A(jueche,:);jueche(:,3)=[]。
function kexing = f_kexing(a)% ycu sunkanry% 判断一个状态a是否可行状态% 可行状态为(0,i),(i,i),(3,i);0<=i<=3if (a(1) == a(2) && a(1) >= 0 && a(1) <= 3)%可行状态为(i,i), kexing = 1;elseif (a(1) == 0 ) && a(2) >= 0 && a(2) <= 3%可行状态为(0,i) kexing = 1;elseif((a(1) == 3) && a(2) >= 0 && a(2) <= 3)%可行状态为(3,i) kexing = 1;elsekexing = 0;endendendfunction jie = guohe()kaishi = [3,3];%开始状态jieshu = [0,0];%结束状态jie = -ones(2,50) ;jie(:,1) = kaishi;jie(:,2) = [3,1];%第一次移动两个人过去%过去时人尽量多,去多qu = [0 2 1 0 1;2 0 1 1 0];%回来时人尽量少hui = [0 1 0 2 1;1 02 0 1];yd_cishu = 2;%移动次数index = zeros(1,50);%指示第yd_cishu次移动是采用的是那种方式index(1) = 1;index(2) = 1;%注意矩阵是否相等的判断while(jie(1,yd_cishu) ~= jieshu(1) || jie(2,yd_cishu) ~= jieshu(2) ) if( mod(yd_cishu,2) ~= 0 )%奇数次移动while(index(yd_cishu)<=5 )switch(index(yd_cishu))case {1}%左移一位jixu = jie(:,yd_cishu) - qu(:,1);case {2}%左移两位jixu= jie(:,yd_cishu) - qu(:,2);case {3}%向下移一位jixu = jie(:,yd_cishu) - qu(:,3)';case {4}%向下移两位jixu = jie(:,yd_cishu) - qu(:,4)';case {5}%左下移一位jixu = jie(:,yd_cishu) - qu(:,5)';endif(f_kexing(jixu))%当移动状态可行,则保存移动情况yd_cishu = yd_cishu + 1;%继续移动jie(:,yd_cishu) = jixu;index(yd_cishu) = index(yd_cishu) + 1;index(yd_cishu) = 1;%下一次移动选择从新开始break;elseindex(yd_cishu) = index(yd_cishu) + 1;endendif(index(yd_cishu)>5)yd_cishu = yd_cishu - 1;%回退endelse%偶数次移动while(index(yd_cishu)<=5 )switch(index(yd_cishu))case {1}%向上移两位jixu = jie(:,yd_cishu) + hui(:,1);case {2}%向上移一位jixu = jie(:,yd_cishu) + hui(:,2);case {3}%右移两位jixu = jie(:,yd_cishu) + hui(:,3);case {4}%右移一位jixu = jie(:,yd_cishu) + hui(:,4);case {5}%右上移一位jixu = jie(:,yd_cishu) + hui(:,5);end%当移动状态可行,则保存移动情况且回来船上的人员状态不能和上一次的情况完全一样,否则就重复操作无意义了。
摘要:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米,试通过数学建模,运用计算机给出一个安全渡河方案,并使渡河次数尽量少。
一、问题分析:此问题是从状态向量A (1,1,1,1)经过奇数次运算向量B 变为状态向量A (0,0,0,0)的状态。
转移过程为什么是奇数次?我们注意到过河有两种,奇数次的为从左岸到右岸,而偶数的为右岸回到左岸,因此得到下述转移过程,所以最后应该是过河完成时状态转移数为奇数次。
二、模型假设:1.假设船除了载人之外,至多只能载猫、鸡、米三者之一。
2.当人不在场时,猫一定会吃鸡、鸡一定会吃米。
我们将人,猫,鸡,米依次用四维向量中的分量表示,当一物在左岸时,相应的分量记为1,在右岸时记为0.如向量(1,0,1,0)表示人和鸡在左岸,猫和米在右岸,并将这些向量称为状态向量。
例如(1,1,1,1)表示它们都在左岸,(0,1,1,0)表示猫,鸡在左岸,人,米在右岸;由于问题中的限制条件,有些状态是允许的,有些状态是不允许的。
凡问题可以允许存在的状态称为可取状态。
A 向量定义为状态变量。
比如()11,0,1,0A 是一个可取状态向量,但()20,0,1,1A 是一个不可取状态向量。
此外,B 向量定义为运载变量。
把每运载一次也用一个四维向量来表示。
如()11,1,0,0B 表示人和猫在船上,而鸡和米不在船上,这自然是可取的运载,因为船可载两物,而()21,0,1,1B 则是不可取运载,依此规律类推。
三、模型建立:由上可知,可取状态向量A共有10个,即:()0,0,0,01,1,1,1()()0,0,0,11,1,1,0()()0,0,1,01,1,0,1()()0,1,0,01,0,1,1()()1,0,1,0()0,1,0,1可取运载B有4个:(1,1,0,0)、(1,0,1,0)、(1,0,0,1)、(1,0,0,0)。
四、算法设计:1、规定A和B的每一分量相加时按二进制法则进行,这样一次渡河就是一个可取状态和一个可取运载相加,在判断和向量是否属于可取状态即可。
MATLAB解方程经典算法MATLAB是一个非常强大的数学和工程计算软件,其中包含了解方程的经典算法。
解方程是数学中的一个基本问题,它的目标是找到使得方程等式成立的未知数的值。
下面将介绍几种常见的解方程算法,并给出MATLAB代码示例。
1. 二分法(Bisection Method):二分法是一种简单而又有效的解方程算法,它基于连续函数的中间值定理。
算法的思想是不断将方程的解所在的区间一分为二,然后根据中间点处函数值的正负性,决定新的区间,直到得到满足精度要求的解。
该算法只适用于连续函数,并且要求方程有唯一解。
```matlabfunction root = bisectionMethod(f, a, b, epsilon)fa = f(a);fb = f(b);if sign(fa) == sign(fb)error('The function does not cross the x-axis in the given interval');endwhile abs(b - a) > epsilonc=(a+b)/2;fc = f(c);if sign(fa) == sign(fc)a=c;fa = fc;elseb=c;fb = fc;endendroot = (a + b) / 2;end```2. 牛顿法(Newton's Method):牛顿法是一种迭代的解方程算法,它基于函数的局部性质。
算法的思想是在初始点的邻域内通过一条切线来逼近方程的解,然后取切线与x轴的交点作为新的初始点,重复此过程直至满足精度要求。
该算法具有快速收敛的特点,但对初始点的选择比较敏感。
```matlabfunction root = newtonMethod(f, df, x0, epsilon)x=x0;while abs(f(x)) > epsilonx = x - f(x) / df(x);endroot = x;end```3. 试位法(Regula Falsi Method):试位法是一种迭代的解方程算法,它结合了二分法和牛顿法的优点。
实验一 MATLAB 运算基础1.先求下列表达式的值,然后显示 MATLAB 工作空间的使用情 况并保存全部变量解:4.完成下列操作:(1) 求[100,999] 之间能被21整除的数的个数。
(1) z i 2sin 85° 1 e 2Z 2 卯(x L),其中x2 0.45 2i 5Z 3 0.3a 0.3a e e 2sin (a 0.3)3.0, 2.9,L ,2.9, 3.0 Z 4t 2t 2 t 2 1 2t 其中 t=0:0.5:2.5(2) 建立一个字符串向量,删除其中的大写字母。
解: (1)结果:m=100:999;n=fin d(mod(m,21)==0);len gth( n)ans =43(2).建立一个字符串向量例如:ch二'ABC123d4e56Fg9:则要求结果是: ch二'ABC123d4e56Fg9:k=fi nd(ch>='A'&ch<='Z'); ch(k)=[] ch =123d4e56g9 实验二MATLAB 矩阵分析与处理1.设有分块矩阵A E 3 3 °2 3 R 3 2S 2 2 ,其中E 、R 、0、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证A 2 E R RS 0 S 22 3 4 1 1 1 3 4 5 1 1 1 4 5 6 x , 0.95 x 2 0.67 x 3 0.52(1) 求方程的解。
(2) 将方程右边向量元素 b 3改为0.53再求解,并比较 b 3的变化和解的相对变化。
(3)计算系数矩阵A 的条件数并分析结论。
解:M 文件如下: 解:M 文件如下; 5.下面是一个线性方程组:实验三选择结构程序设计1. 求分段函数的值。
x2x 6 x 0且x 3y x2 5x 6 0 x 5且x 2 及x 3x2x 1 其他用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0 时的y值。
function y=boat()m=input('输入夫妻对数: ');k=input('输入船的最大容量: ');for i=1:m+1A=[m,i-1];B{i}=A; %B表示可取状态endfor i=m+2:2*mA=[i-(m+1),i-(m+1)];B{i}=A;endfor i=2*m+1:3*m+1A=[0,i-(2*m+1)];B{i}=A;end%下面的for语句是根据参数k算出所有决策d,用C表示.t=1;for u=0:1:kfor v=0:1:kif u+v>=1&u+v<=kC{t}=[u,v];t=t+1;endendendD{1,1}=[m,m]; % D{1,1}表示初始状态.w=1; % w控制是否能够迭代成功.h=1; % h控制元素的个数.j=2; % j表示迭代的次数.x=0; % x是用来剔除掉不在允许状态集合中的元素.y=0; % y是防止重复剔除同一个元素.l=0; % l使用来标记元素是否被剔除.z(1)=0;z(2)=1; % z(j)表示上一步迭代后所剩下的所有元素.while w>0% p表示可以进行下一步迭代的所有元素.for p=z(j-1)+1:z(j)% q表示每一个元素要经过k*(k+3)/2种决策迭代.for q=1:k*(k+3)/2D{h+1,j}=D{p,j-1}+(-1)^(j-1).*C{q};h=h+1;l=1;%下面的for语句是核查迭代结果是否在允许状态集合B中.for e=1:3*m+1if D{h,j}==B{e}x=1;break;endendif x==0h=h-1;y=1;l=0;end%下面的if语句是剔除掉本次迭代过程中出现的重复元素. if j>2&y==0for i=z(j)+1:h-1if D{h,j}==D{i,j};h=h-1;l=0;break;endendend%下面的if语句是剔除掉以前重复的元素.if j>2&y==0if j==3for i=z(1)+1:z(2)if D{h,j}==D{i,j-2}h=h-1;l=0;break;endendelsefor i=z(j-2)+1:z(j-1)if D{h,j}==D{i,j-2}h=h-1;l=0;break;endendendendif l==1for g=1:j-1D{h,g}=D{p,g};endendif l==1&D{h,j}==[0,0]w=-1;%w=-1表示可以在有限的步骤下安全过河.break;endx=0;y=0;l=0;endif w==-1;%w=-1表示可以在有限的步骤下安全过河.break;endendj=j+1;z(j)=h;if z(j)==z(j-1)w=-2;%w=-2表示不可以在有限的步骤下安全过河.break;endendif w==-1for g=1:j-1D{h,g}endendif w==-2disp('不能按规定过河');end。
夫妻过河问题数学建模
本文将通过数学建模的方式探讨一个经典的夫妻过河问题。
假设一对夫妻要过一座桥,桥只能容纳两人同时过,而且必须有灯光才能行走。
由于这条桥非常危险,过桥时必须有一人持灯引路,因此夫妻需要一只手电筒。
另外,两人的行走速度不同,A走过桥需要1分钟,B走过桥需要2分钟。
夫妻过桥的时间就是指两人中走得比较慢的那个人的时间。
假设夫妻已经在桥的一侧,他们需要想办法尽快过桥。
设计一个数学模型,求出夫妻最短需要多少时间才能过桥。
首先,我们可以列出如下的约束条件:
1. 夫妻需要一只手电筒才能过桥。
2. 桥只能容纳两人同时过,因此在一侧等待的人需要等到另一侧的人走完才能过桥。
3. 每次过桥时,需要有一人持灯引路。
基于以上条件,可以得到如下的模型:
1. 假设A和B分别为夫妻的两个人,t为他们过桥的时间。
2. 如果A先走,那么B需要等待A过完桥后再过桥。
此时,总时间为2t+1。
3. 如果B先走,那么A需要等待B过完桥后再过桥。
此时,总时间为3t+1。
4. 因此,夫妻最短需要时间为2t+1和3t+1中的较小值。
5. 对于这个问题,我们可以通过求解二次函数的极值来得到最
短时间。
通过求解,可以得到最短时间为4分钟。
也就是说,夫妻需要在4分钟内过桥,否则就不能保证安全。
综上所述,通过数学建模的方式,我们可以探讨夫妻过桥问题,进而求解最短时间。
这种数学建模的方法在实际生活中也有很大的应用价值,可以有效地解决一些实际问题。
matlab求解技巧Matlab是一个强大的数值计算及可视化工具,被广泛应用于工程、科学、金融等领域。
在使用Matlab进行求解问题时,有一些技巧可以帮助提高效率和精确度。
下面我将介绍一些常用的Matlab求解技巧。
1. 向量和矩阵运算:Matlab提供了丰富的向量和矩阵运算函数,可以方便地进行矩阵乘法、转置、求逆等操作。
要注意使用正确的运算符和函数来实现所需的运算。
2. 函数优化:Matlab提供了许多函数优化的工具箱,可以通过最小化或最大化目标函数来求解最优解。
常用的函数优化方法包括线性规划、非线性规划、整数规划等,可以选择合适的方法进行求解。
3. 方程求根:Matlab提供了许多方程求根的函数,可以通过求解方程来得到变量的值。
常用的方程求根方法包括二分法、牛顿迭代法、弦切法等,可以根据问题的特点选择合适的方法。
4. 插值和拟合:在一些情况下,我们需要根据已知的数据点来求解未知的数据点。
Matlab提供了插值和拟合的函数,可以根据已知数据点的分布来预测未知数据点的值。
常用的插值和拟合方法包括线性插值、多项式拟合、样条插值等。
5. 数值积分:在一些情况下,我们需要对函数进行积分来求解问题。
Matlab提供了数值积分的函数,可以将积分问题转化为数值计算问题来求解。
常用的数值积分方法包括梯形法则、辛普森法则、龙贝格积分等。
6. 工具箱的使用:Matlab的工具箱可以扩展Matlab 的功能,提供更多的高级算法和方法。
根据具体的问题,可以选择合适的工具箱来进行求解。
常用的工具箱包括信号处理工具箱、优化工具箱、控制系统工具箱等。
7. 向量化:Matlab中的向量化操作可以极大地提高代码的运行效率。
通过使用向量和矩阵运算,可以避免使用循环来逐个处理数据,从而提高程序的执行速度。
要尽量利用Matlab的向量化特性,避免使用循环。
8. 代码调试:在编写Matlab代码时,可能会出现错误或不符合预期的结果。
使用Matlab提供的调试工具可以帮助定位和解决问题。
本科生毕业论文论文题目: matlab求解夫妻过河问题摘要渡河问题.[]1始于公元8 世纪,至今它仍是一个逻辑难题,许多数学建模教材上已经提到.这个问题指的是:有不同的对象或生物,他们其中一些相互不共存,逐步地让一小群体从河的一岸到另一岸,经过有限步后,该群体全部从一岸达到另一岸,并且要求没有任何损失.在渡河问题的夫妻过河问题中我们发现状态转移问题有时不一定有解,有时的解又不一定有规律,本文对于夫妻过河问题利用图解法和matlab编写程序求解5对、6对夫妻过河是否有解,并推广到n对夫妻与船的运载能力m对于能否安全渡河时它们之间的关系。
关键词:多步决策 matlab 数学模型渡河问题Problem of couples across the riverAbstract: the problem of crossing the river. In the 8th century, it stillis a logical problem, many mathematical modeling teaching material has been mentioned. The question is: have different objects or creatures, they lack some mutual coexistence, gradually to a small group from one bank to another bank of the river, after finite steps, the group all from one side to the other shore, and requires no losses. In crossing the river problem of couples across the river, we found that state transition problem sometimes does not necessarily have a solution, sometimes the solution is not necessarily regular, in this paper, using the graphical method for the problem of couples across the river and the matlab program to solve the 5, 6 for couple across a river if there is a solution,And derived to n couple with the ability to run m to safe crossing the river when the relationship between them.Keywords:Multistep decision Matlab Mathematical model Problem of crossing the river目录1 引言12 文献综述12.1 国外研究现状12.2 国外研究现状评价22.3问题提出23 模型假设24符号说明25重述3、4对夫妻过河问题的解35.1 3对夫妻过河的解35.2 4对夫妻过河的解46 五对夫妻过河模型46.1 模型构成46.2 模型建立46.3 模型求解56.31 Matlab编程求解56.32 图解法错误!未定义书签。
曲靖师范学院本科生毕业论文论文题目: matlab求解夫妻过河问题学院、年级:数学与信息科学学院2010级学科、专业:数学数学与应用数学指导教师:郭昀完成日期:2013年12月27日曲靖师范学院教务处摘要渡河问题.始于公元8 世纪,至今它仍是一个逻辑难题,许多数学建模教材上已经提到.这个问题指的是:有不同的对象或生物,他们其中一些相互不共存,逐步地让一小群体从河的一岸到另一岸,经过有限步后,该群体全部从一岸达到另一岸,并且要求没有任何损失.在渡河问题的夫妻过河问题中我们发现状态转移问题有时不一定有解,有时的解又不一定有规律,本文对于夫妻过河问题利用图解法和matlab编写程序求解5对、6对夫妻过河是否有解,并推广到对夫妻与船的运载能力对于能否安全渡河时它们之间的关系。
关键词:多步决策 matlab 数学模型渡河问题Problem of couples across the river Abstract: the problem of crossing the river. In the 8th century, it still is a logical problem, many mathematical modeling teaching material mentioned. The question is: crossing the river problem of couples across the river, we found that state transition problem sometimes does not necessarily , sometimes the solution is not necessarily regular, in this paper, using the graphical method for the problem of couples across the river and the matlab program to solve the 5, 6 for couple across a river if there is a solution,And derived to n couple with the ability to run m to safe crossingthe river when the relationship between them.Keywords: Multistep decision Matlab Mathematical modelProblem of crossing the river目录1 引言 ................................................................2 文献综述 ............................................................2.1 国内外研究现状.......................................................2.2 国内外研究现状评价...................................................2.3 问题提出 ............................................................3 模型假设 ............................................................4 符号说明 ............................................................5 重述3、4对夫妻过河问题的解..........................................5.1 3对夫妻过河的解.....................................................5.2 4对夫妻过河的解.....................................................6 五对夫妻过河模型.....................................................6.1 模型构成 ............................................................6.2 模型建立 ............................................................6.3 模型求解 ............................................................6.31 Matlab编程求解.....................................................6.32 图解法 .............................................................7 六对夫妻过河模型.....................................................7.1 模型构成 ............................................................7.2 模型求解 ............................................................8 n对夫妻过河情况 (1)8.1 求解 (1)8.2 验证 (1)9 总结与展望 (1)9.1 总结 (1)9.2后续研究工作展望 (1)参考文献 (1)附录 (1)1 引言这是一个古老的阿拉伯数学问题。
有3对夫妻要过河,船最多可载2人,约束条件是根据阿拉伯法律,任一女子不得在其丈夫不在场的情况下与其他男子在一起,问此时这3对夫妻能否过河?如果是4对夫妻过河,其他条件不变的情况下,夫妻能否过河?就这一问题我们发现状态转移问题有时不一定有解,有时的解又不一定有规律(当4对夫妻过河,其他条件不变的情况下,夫妻能否过河?我们发现此问题是无解的),但是当我们改变条件船最多可载3人时有解.就其数学建模思想来说, 一般采用将该问题转化为一个多步决策模型, 模型求解的方法大多为图解法然而一旦问题的条件(例如丈夫、妻子或者小船上每次渡河人数等) 发生变化, 图解法求解犹如大海捞针!很难奏效. 因此计算机编程求解模型的方法就显得非常重要了.该题求解编程的难点在于允许状态与决策这两个方面的处理与实现.此问题中利用的多目标决策方法是从20世纪70年代中期发展起来的一种决策分析方法.决策分析是在系统规划、设计和制造等阶段为解决当前或未来可能发生的问题,在若干可选的方案中选择和决定最佳方案的一种分析过程.在社会经济系统的研究控制过程中我们所面临的系统决策问题常常是多目标的,例如我们在研究生产过程的组织决策时,既要考虑生产系统的产量最大,又要使产品质量高,生产成本低等。
这些目标之间相互作用和矛盾,使决策过程相当复杂使决策者常常很难轻易作出决策.这类具有多个目标的决策总是就是多目标决策. 多目标决策方法现已广泛地应用于工艺过程、工艺设计、配方配比、水资源利用、能源、环境、人口、教育、经济管理等领域.2 文献综述2.1国内外研究现状渡河问题有不同的版本,从目前参阅的文献资料中了解的信息来看文献[1]、[5]、[6]的商人和随从渡河问题利用通过遍历状态空间树来搜索可行的渡河方案、建立多步决策模型、计算机编程等方法解决,文献[3]、[4]的传教士和食人族难题仿照整数( 二元) 规划的图示方法、用矩阵表示与迭代算法等方法解决,文献[5]军官渡河问题和人与机器渡河问题利用Dijkstra算法,文献[13]的人、猫、鸡、米过河问题利用计算机C语言编程求解,文献[6]、[15]的人、狼、羊、菜过河问题利用多为向量的方法解决.但是解决方法是类似的,都是要找到允许状态和允许决策.2.2国内外研究现状评价综上所述,渡河问题至今仍是一个逻辑难题.国内外对于过河问题的研究很多,但是不是很全面,由于渡河问题的种类很多,尽管研究方法大体相同,但是他的解却是有很多种,或者有的问题根本无解,就夫妻过河问题而言当4对夫妻过河,船只能载2人时问题无解.本文在夫妻过河问题的基础上从3对、4对夫妻研究至5对、6对,并推至n对夫妻过河情况,利用图解法和matlab编程解决.2.3 问题提出问题1:若船最多能载3人,5对夫妻能否过河?六对夫妻呢?如果不可以那么船最多能载几人才可以?问题2:n对夫妻要过河,船最多能载m人,n和m有怎样的关系?任务:用matlab编写程序求问题1的解,并用已有程序验证问题2.3 模型假设1.不考虑过河环境因素的影响情况;2.夫妻过河只能依靠小船;3.每个男人和女人都会划船;4 符号说明表示渡河的夫妻对数表示第k次渡河前此岸丈夫的人数表示第k次渡河前此岸妻子的人数表示第次过渡船上丈夫的人数表示第次过渡船上妻子的人数表示第几次渡河表示渡河的次数表示允许状态集合表示允许决策集合表示状态表示决策5 重述3、4对夫妻过河问题的解有3对夫妻要过河,船最多可载2人,约束条件是根据阿拉伯法律,任一女子不得在其丈夫不在场的情况下与其他男子在一起,问此时这3对夫妻能否过河?如果是4对夫妻过河,其他条件不变的情况下,夫妻能否过河?记次过河前此岸丈夫的人数为,妻子的人数为.记表示状态, =(),记表示决策, =()。
5.1 3对夫妻过河的解5.2 4对夫妻过河的解可看出问题无法再解下去6 五对夫妻过河模型6.1模型构成记第次过河前此岸丈夫的人数为,妻子的人数为, =1,2,3……由已知条件知可取状态为(0,1)(0,2)(0,3)(0,4)(0,5)(0,0)(5,5)(5,4)(5,3)(5,2)(5,1)(5,0)(1,1)(2,2)(3,3)(4,4)共16种,用表示可取状态集合,成为允许状态集合,不难验证,对此岸和彼岸都是可行的.记第次过渡船上的丈夫的人数为,妻子的人数为,由已知条件知可取状态为(0,1)(0,2)(0,3)(1,0)(2,0)(3,0)(1,1)(2,1),其中(1,1)表示1对夫妻,共五种,用表示可取状态集合,成为允许决策集合. 6.2模型建立我们发现当为奇数时船从此岸驶向彼岸,当为偶数时船从此岸驶向彼岸,记表示状态, =(),记表示决策, =()。