第4章 程序流程控制.doc_第1页
第4章 程序流程控制.doc_第2页
第4章 程序流程控制.doc_第3页
第4章 程序流程控制.doc_第4页
第4章 程序流程控制.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

第4章 程序流程控制4.1 概述程序表达式的运算顺序有4种结构控制命令:while、if、for和switch。每当这些命令出现时,在程序中的稍后部分都必须要跟一个end语句。只有当所有条件满足时,控制结构命令与end命令之间的语句才会被执行。每一种控制结构命令可以随意相互之间嵌套或自身嵌套,称为嵌套结构。控制结构通常把关系运算或逻辑运算的结果作为判定条件。当条件满足时,控制语句将程序转向特定部分执行相应的语句。MATLAB的部分关系运算符和逻辑运算符如下表:部分关系运算符及逻辑运算符条件 数学符号 MATLAB符号 关系运算符 等于 = = = 不等于 = 小于 小于等于 =逻辑运算符 与 AND & 或 OR | 非 NOT 4.2 程序流程控制4.2.1 while 循环while循环无限次执行一条或多条语句,当条件满足时停止循环,其语法为: while 条件 语句 end其中,定义“条件”的表达式中可包含由“语句”计算得出的一个或多个变量。例1: 正确输入数据编一程序,要求用户连续输入1到8之间的数,若所输入的数值超出范围,则程序终止。MATLAB程序如下:nfnum=0;while(nfnum8) nfnum=input(Enter a number from 1 to 8:);end例:级数收敛性判定计算并显示级数Sn的项数N , Sn如下:当收敛到终值的0.01%以内时,项数N为多少。MATLAB程序如下: eries=1;k=2;exact=pi2/6;while abs(series-exact)/exact)=1e-4 series=series+1/k2; k=k+1;enddisp(# terms=,num2str(k-1)4.2.2 if语句if语句的常见形式如下: if 条件#1 表达式#1elseif 条件#2 表达式#2else 表达式#3end 例4.3 疲劳强度计算根据给定的校正系数计算金属的疲劳强度。因素 范围 校正系数受力方式 弯曲 Cload=1 轴向 Cload=0.70尺寸 d8 mm Csize=1 8d250 mm Csize=1.189d-0.097温度 T450OC Ctemp=1 450TOC Ctemp=1-0.0032(T-840)判断这些因素的程序如下:if lode=bending cload=1;else cload=0.7;endif d=8 csize=1;else csize=1.189*d(-0.097);endif tempn)这里a是由用户指定的一个值。本例中a=4,向量g=4,4,7,10,-6,42,1,0。程序如下:learg=4 4 7 10 -6 42 1 0;a=4;k=0;indx= % 给indx 赋空for n=1:length(g)if g(n)aindx=indx n;endenddisp(Element loacations for g(n),num2str(a),:,num2str(indx)执行上述程序后,MATLAB命令窗口显示:Element locations for g(n)4:3 4 6例4.6 cumsum函数的实现给定任意长度的向量c,用程序实现: Csum=cumsum(c)用向量c=4 4 7 10 -6 42 1 0来检验该程序。程序如下: clearc=4 4 7 10 -6 42 1 0;Csum(1)=c(1);for k=2:length(c) Csum=Csum Csum(k-1)+c(k); % 或 Csum(k)=Csum(k-1)+c(k);end disp(Cumsum of c=,num2str(Csum)执行上述程序后,MATLAB命令窗口显示:Comsum of c=4 8 15 19 61 62 62例7:diag函数的实现给定,程序第一步实现: 第二步实现: 这里v是第一步得到的结果。用矩阵检验程序,并假设不使用冒号和zeros函数。程序如下:b=magic(4);r,c=size(b);for k=1:r v(k)=b(k,k);enddisp(Diagonal elements of b=)disp(num2str(v)for n=1:r for m=1:r if n=m d(n,m)=v(n);end endenddisp(Diagonal matrix d=)disp(num2str(d)4.2.4 for循环或while循环的提前终止break函数可实现for循环或while循环的提前终止。若break函数嵌套于for循环或while循环的内部,则返回到上一级的for循环或while循环。考虑下列程序段: for j=1:14 b=1 while b25 if ntolerance if s1=sign(cos(a*(x+dx) dx=dx/2; else x=x+dx; end end route(m)=x; dx=increment; x=1.05*x;enddisp(route) 练习4.1 编写程序完成逻辑运算,即给定任意长度的向量h ,判定其元素值大于a和小于b时的结果是否为1,并将结果用向量v表示出来。设h=1,3,6,-7,-45,12,17,9,a=3,b=13,检验所设计的程序。答案:v=0,0,1,0,0,1,0,1。 4.2 估计由下式描述的n个采样值xj的方差:这是平均值。方差由var决定。编写计算n1,x=45,38,47,41,35,43时样本方差的程序。答案:24.5000,22.3333,16.2500,24.2000,19.9000. 4.3 给定a 0,假设任意初值xO 0,下面的关系式将限定数a在容限tO以内:其中xn+1a(当xO 7时,在|xn-xn+1|10-6条件下确定a在(a) xO=3 和(b) xO=100时,计算将重复多少次。第一次重复是确定x1 。提示:上述关系式不是n的显式函数。这里下标n标明下一值xn+1是当前值xn的函数。因此,每次循环后新旧值都被保存,n纪录循环次数。4.4 考虑下式:对xO =0,编写两段程序求n =0,5,10,200时xn的值。第一段程序采用for循环结构;第二段程序采用while循环结构。

温馨提示

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

评论

0/150

提交评论