数量模型与算法基础:第二章 兔口模型 for循环_第1页
数量模型与算法基础:第二章 兔口模型 for循环_第2页
数量模型与算法基础:第二章 兔口模型 for循环_第3页
数量模型与算法基础:第二章 兔口模型 for循环_第4页
数量模型与算法基础:第二章 兔口模型 for循环_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Ch2.兔口模型,for循环1.复习2.for循环3.兔口模型4.菲波拉契数,黄金分割率作业2:5个程序,1个模型9/2512:00前交班长转shumoke@

1.学会编辑,调试,运行5个小程序,交sy1.m,sy2.m,sy3.m,sy4.m,sy5.m源程序和运行结果。请解释结果。2.注释程序sy6.m。3.加分题:调试,运行sy6.m,解释结果。帮助:碰到陌生的命令,可以百度搜索:matlabrand,Matlabfor循环,Matlabif语句… …

也可以查百度云上分享的参考书。如《Octave入门》等。变量/变量名/=赋值语句作者:文闻

链接:/question/20116757/answer/14029909

来源:知乎

变量是一段有名字(即变量名)的连续存储空间。我们通过变量的名字来使用这段存储空间。

变量是程序中临时存放数据的场所,变量中可以存放例如单词、数值、日期等类型的数据。在sy1.m,F=rand(1,30)是赋值语句,其中,等号左侧是一个变量,F是变量名。赋值语句里”=“的作用是把等号右边的计算结果存放在左侧的变量里。程序程序(program)是可以递交给计算机执行的,用计算机语言编写的命令的有序集合。程序也就是指令的集合,它告诉计算机如何执行特殊的任务。打个比方说,它好比指导你烹调菜品的菜谱或指挥行驶一路到达目的地的GPS指令)。没有这些特殊的指令,就不能执行预期的任务。计算机也一样,当你想让计算机为你做一件事情的时候,计算机本身并不能主动为我们工作,因此我们必须对它下达指令,而它根本不会也不可能听懂人类自然语言对事情的描述,因此我们必须使用程序来告诉计算机做什么事情以及如何去做。for循环语句(for-loop)for语句作用是按照预先设定的循环步骤重复执行某语句段,

其语法:for

循环控制变量=存储着该变量依次所取值的一个向量

循环语句块,本块重复执行的次数由上方向量的长度决定,每次执行,循环控制变量依次取该向量中的值.endfor兔口模型假设:

在出生后第二个月起,一对兔子每个月能生出一对小兔子来。

如果所有兔都不死,那么一年以后可以繁殖多少对兔子?

兔口问题第一个月一对;两个月后,生下一对小兔总数共有两对;三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对;.。。12月后,一共有多少对?兔口增长表依次类推可以列出下表:经过月数0123456789101112幼仔对数101123581321345589成兔对数01123581321345589144总体对数1123581321345589144233兔口模型数据经过月数0123456789101112总体对数01123581321345589144不用for循环完成兔口模型%Fibonacci斐波那契数列1:12clc;clearall;closeall;F(1)=1;F(2)=1;F(3)=F(2)+F(1);F(4)=F(3)+F(2);F(5)=F(4)+F(3);F(6)=F(7)=F(8)=

….F(12)=F(?)+F(?);F用for循环完成了兔口模型%Fibonacci斐波那契数列1:12clc;clearall;closeall;F(1)=1;F(2)=1;fori=3:12F(i)=F(i-1)+F(i-2);endforFF(1)=1;F(2)=1;F(3)=F(2)+F(1);F(4)=F(3)+F(2);F(5)=F(4)+F(3);F(6)=F(5)+F(4);F(7)=F(8)=

….F(12)=F(?)+F(?);FIf语句有条件性地执行语句语法If表达式

一条或者多条

MATLAB

命令语句

end描述MATLAB

计算表达式,如果if后面表达式产生一个逻辑真或者非零结果,然后就执行一条或者多条

MATLAB

命令语句。当有一个或多个if时,每一个if必须和一个相应的end匹配。Fori=1:12并画图的兔口程序(有错纠错)clcfori=1:12ifi==1endififi==2endififi>=3EndifEndforPlot(f)930/14034如何显示变量内容呼叫变量名,不用分号结尾,如FF(i)i用disp()函数Disp(F);disp(F(i));disp(i);printf()函数>>printf("%9.3f\n",pi);

3.142disp()例子fora=[15346]disp(['第',num2str(find(a==[15346])),'次循环,a的取值为:',num2str(a)]);Endoctave:3>log(10)ans=2.3026octave:4>disp(log(10))2.3026注释:%注释是编写程序时,写程序的人给一个语句、程序段、函数等的解释或提示。注释能提高程序代码的可读性,以便于以后的参考、修改。注释是解释给人看的,在运行程序时,%后面的部分会被机器跳过,不做处理。From:/q/1365361848060096例子:ifF(i)>=fqzd%如果这个人的得分大于等于前15中最高分环比增长率环比增长率,一般是指本期数据和上期相比较的增长率。

环比增长率=(本期值-上一期值)/上一期值*100%。比如,2008年5月与2008年4月的环比增长是指

上一期为基期:2008年4月数值F(200804)

本期:2008年5月数值 =(F(200805)-F(200804))/F(200804)*100%

=F(200805)/F(200804)-1如:98年净利环比增长量=98年净利-97年净利。98年净利环比增长率=(98年净利/97年净利)-1=(98年净利-97年净利)/97年净利。兔口模型(家谱,树)M=1m=231,12,13,24,35,56,87,13/post-71-538026-1.shtml兔口模型经过月数123456789101112总体对数1123581321345589144/link?url=OAOzcTwGxB659IjFz--D5HC2DvQ9_vCKo-SFmB3oOAt_MRyI8ylTF9sJtiQJwkwq5YuyFne9CE_sb0dcYheqe_兔口月环比增长率:等比兔口月环比增长率zzl

zzl=f(i)/f(i-1)-1,i>=289/55=1.618,144/89=1.618,zzl1.618-1,i很大已知本月兔口,求上月兔口用到比值f(i-1)/f(i):55/89=0.618,89/144=0.618f(i-1)/f(i)0.618,i很大金字塔的神秘数金字塔和上列兔口奇异数字息息相关。金字塔的几何形状有五个面,八个边,总数为十三个层面。由任何一边看入去,都可以看到三个层面。金字塔的长度为5813寸(5-8-13),而高底和底面百分比率是0.618,那即是上述神秘数字的任何两个连续的比率,譬如55/89=0.618,89/144=0.618,144/233=0.618。另外,一个金字塔五角塔的任何一边长度都等于这个五角型对角线(Diagonal)的0.618。还有,底部四个边的总数是36524.22寸,这个数字等于光年的一百倍!/link?url=AwxP-fTsBDEgPHJxmUnZGZk5Nxt4cWvDvQ4nLvmLZ3jr5SXfnu_oiEkFWl5NnFTuMQRr8sRlC08S3mxAi9hj6q黄金分割率0.6180.618的倒数是1.618。譬如144/89=1.618、233/144=1.618,而 0.618×1.618=1向日葵花有89个花辫,55个朝一方,34个朝向另一方。神秘?不错,这组数字就叫做神秘数字。而0.618,1.618就叫做黄金分割率(GoldenSection)。/link?url=AwxP-fTsBDEgPHJxmUnZGZk5Nxt4cWvDvQ4nLvmLZ3jr5SXfnu_oiEkFWl5NnFTuMQRr8sRlC08S3mxAi9hj6q练习1:求兔口模型2至18月环比增长率clc;clearallf(1)=1;f(2)=1;fori=3:24f(i)=f(i-1)+f(i-2);

endforffori=2:18

hb(i)=(f(i)/f(i-1))-1;

endfor

hbplot(hb,"or-.")

xlabel("month")

ylabel("hb

zzl")

练习2:求兔口模型13至24个月同比增长率clc;clearallf(1)=1;f(2)=1;fori=3:24f(i)=f(i-1)+f(i-2);

endforffori=2:18

hb(i)=(f(i)/f(i-1))-1;

endfor

hbplot(hb,"or-.")

xlabel("month")

ylabel("hb

zzl")

fori=13:24i;tb(i)=(f(i)/f(i-12))-1;endfor

画图函数plot()句法:plot(X,Y,“格式”,...)应用:x=[12345];y=[1491625];plot(y) %以y的分量为纵坐标,以元素序号为横坐标,绘制连线图plot(x,y)%以x为横坐标,y为纵坐标绘制连线图plot(x,y,”--”)%虚线plot(x,y,”or”)%红色圆点plot(x,y,”o--r”)%红色圆点虚线图复习题兔口模型:什么是斐波那契数列?举例说明。什么是环比月增长率?举例说明。什么是同比增长率?举例说明。复习题用matlab画X-Y点线图用什么函数? APlot(X,Y,“o”) BPlot(X,Y,“-o”):CPlot(X,Y,“-o”) D以上全不对什么是赋值语句?举例说明。什么是循环语句?举例说明。延伸阅读:秘书问题CSP秘书问题CSP:见第一章Ch1“非诚勿扰问题”的数学模型1. 代表性:把生活中问题抽象成一个简单的易记数学过程。2. 数字化:总数n:时间限制,女生

必须确定将会遇到的男生个数,比如说15个、30个或者50个。不妨把男生的总人数设为n。

分数F(1)...F(n):这n个男生将会以一个随机的顺序排着队依次前来表白后而得相对分。

IDI=1,…,30:每次被表白后,女生都只有两种选择:接受这个男生i,结束这场“征婚游戏”;或者拒绝这个男生,继续考虑下一个表白者i+1。

简化:不考虑被拒男生返回的可能。

“秘书问题”的变身代表性:把现实中问题抽象成一个简单的易记数学过程。秘书问题未婚妻问题,波斯公主择婿问题,电梯捡钻石问题,。。。升学选校毕业择业(offers)非诚勿扰停机放贷集市一条街选摊位(被动方换位思考)运动竞技选出场位文娱明星赛选出场位非诚勿扰男方选出场位

经济活动中:生产,消费,商业,买卖,金融,分配,管理过程中的选优博彩业其他:你有何补充?2. 数字化:总数n:时间限制,女生

必须确定将会遇到的男生个数,比如说15个、30个或者50个。不妨把男生的总人数设为n。

分数F(1)...F(n):这n个男生将会以一个随机的顺序排着队依次前来表白后而得相对分。

IDI=1,…,30:每次被表白后,女生都只有两种选择:接受这个男生i,结束这场“征婚游戏”;或者拒绝这个男生,继续考虑下一个表白者i+1。

简化:不考虑被拒男生返回的可能。

算法(解决问题的办法)---亲友的建言,格言3.算法(n=30):*选第一个

(i=1)*最后一个

(i=n)*中间一个

(i=int(n/2))**见好就收,差不多就行F(i)>0.5?*扔骰子决定o尽早决定,等最后不保险–不是可行算法o尽晚决定,风险与收益成正比–不是可行算法o当断不断,必受其乱;免得肠子都悔青了;*****放弃前11个(37%法则),只记住前11个其中最好的ib,果断选其后第一个比ib还好的“秘书问题”的模型化代表性:把现实中问题抽象成一个简单的易记数学过程。纸模型:纸团(有随机数),黑袋竹模型:竹签(有随机数),摇桶乒乓球贝壳教室:同学,序号,ID号(有随机数F=rand(1,10);)其他:你有何补充?计算机模型:Octave,软件+命令工具:Octave软件Octave编程语言案列1餐街选店模型实现算法实现/翻译成Octave语言的过程模拟出一个候选方队列:F=rand(30,1)挑出前11个最好的,放到Fcz:Fcz=max(F(1:11))从12到第30个,比较F-数值

和Fcz

(ifa>b,,end)fori=12:30.。。……endfor如果发现。。。,那么就。。。如果没有发现。。。,那么就。。。直至第30个,结束

练习:写第一个程序(编/存/运行)插入自己的U盘启动OCTAVE点击“Editor”,转到编辑器窗口键入一行程序:F=rand(1,30)%是赋值语句,其中,等号左侧是一个变量,F是变量名。赋值语句里”=“的作用%是把等号右边的计算结果(30个数)存放在左侧的变量F里以备后用。文件|文件另存为|U盘下某个文件夹|文件名=sy1运行|保存文件并运行|添加路径到载入路径|点击“命令窗口”查看结果。如果程序只有一行命令,回到3.加下一行程序:Fqzd=max(F(1:15))如果Sy1.m结果没问题,结束sy1.m。你已经完成了第一个程序sy1.m练习:写第二个程序:for循环打开sy1.m:点击Editor|文件|编辑器最近文件|。。。sy1.m光标移到最后的空行键入一程序块:fori=[16:30]%for循环开始,从i=第16个数开始到i=第30个数F(1,i)%显示第i个数endfor%for循环结束,文件|文件另存为|U盘下某个文件夹|文件名=sy2运行|保存文件并运行|添加路径到载入路径|点击“命令窗口”查看结果。如果出错,回到3.查错。直到结果正确。至此Sy2.m调试成功。练:第三个程序:

if语句(如果。。。则。。。)打开sy2.m:点击Editor|文件|编辑器最近文件|。。。sy2.m光标移到最后的空行,键入一程序块:fori=[16:30]%从第16个人开始到30ifF(1,i)>0.5%如果这个人的得分大于0.5fzd=F(i)%则找到了。显示这个人的得分break%退出for循环endif %if语句结束,执行下一行endfor%for循环结束符,回到for语句头去检查循环变量i文件|文件另存为|U盘下某个文件夹|文件名:sy3.m运行|保存文件并运行|添加路径到载入路径|点击“命令窗口”查看结果。如果出错,回到Editor去.查错,存文件,并运行。直到结果正确。至此Sy3.m调试成功。理解各个语句的作用。自创一个for-loop或if语句练习一下。练:第4个程序:

if语句(如果。。。则。。。)打开sy3.m:点击Editor|文件|编辑器最近文件|。。。sy3.m,光标移到最后的空行键入一程序块:fzd=0;fqzd=max(F(1:15));%fqzd是F前15个数中最大值fori=[16:30]%从第16个人开始到30ifF(1,i)>=fqzd%如果这个人的得分大于等于前15中最大fzd=F(1,i)%则给fzd赋值,显示这个人的得分, break%退出for循环endif %if结束语句endfor%for循环结束语句文件|文件另存为|U盘下某个文件夹|文件名=sy4运行|保存文件并运行|添加路径到载入路径|点击“命令窗口”查看结果。如果出错,回到Editor去.查错,存文件,并运行。直到结果正确。至此Sy4.m调试成功。理解各个语句的作用。自创一个for-loop或if语句练习一下。练:第5个程序:

显示结果,模型一完成了打开sy4.m:点击Editor|文件|编辑器最近文件|。。。sy4.m,光标移到最后的空行键入一程序块:n=30 %设定并显示候选人序列人数nqg=15 %设定并显示候选人序列切割位置fqzd %设定并显示候选人序列切割位置前部最大值fzd %显示候选人序列被选到的人得分文件|文件另存为|U盘下某个文件夹|文件名=sy5运行|保存文件并运行|添加路径到载入路径|点击“命令窗口”查看结果。如果出错,回到Editor去.查错,存文件,并运行。直到结果正确。至此Sy5.m调试成功。理解各个语句的作用。“通用秘书问题GSP”的数学模型1. 代表性:数学模型是现实问题抽象成的一个数学表达。2.

数字化:候选人总数n:必须确定将会遇到的候选人总个数,比如说15个、30个或者50个。不妨把候选人总人数设为n。

分数F(i)...F(n):这n个候选人将会以一个随机的顺序排着队依次前来面试而得分(0-1)。假设F(i)在0,1之间并均匀分布。

IDi=1,…,30:每次被表白后,只有两种选择:接受i,结束;或者拒绝,继续考虑下一个表白者i+1。

简化:不考虑被拒候选人重返的可能。

算法算法(n=30),解决问题的办法:如,亲友的建言,自己的想法等1.选第一个2.选最后一个3.选中间一个4.排序算法5.扔骰子决定6.尽早决定,等最后最好的出现的概率会降低7.尽晚决定,风险

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论