文档详情

第4章-matlab程序设计2.ppt

发布:2024-03-13约3.99千字共27页下载文档
文本预览下载声明

第4章程序设计和M文件(二)4.5循环结构4.6程序的调试4.5循环控制语句1.for循环(形式一) 语句格式为:for循环变量=表达式1:表达式2:表达式3循环体语句end首先计算三个表达式的值,再将表达式1的值赋给循环变量,如果此时循环变量的值介于表达式1和表达式3的值之间,则执行循环体语句,否则结束循环的执行。执行完一次循环之后,循环变量自增一个表达式2的值,然后再判断循环变量的值是否介于表达式1和表达式3之间,如果满足仍然执行循环体,直至不满足为止。例4.7已知y=1/12+1/22+1/32+…+1/n2表达式,当n=1000^2时,求y的值。程序如下:y=0;n=1000^2;fori=1:ny=y+1/i^2;endy在实际MATLAB编程中,为提高程序的执行速度,常用向量运算来代替循环操作:n=1000^2;i=1:n;f=1./i.^2;y=sum(f)在这一程序中,首先生成一个向量i,然后用i生成向量f,f各元素值对应于y的各累加项,再用matlab提供的sum函数求f各元素之和。后一种方法比前一种运行要快得多。程序1如下:a=0;b=3*pi;n=1000;h=(b-a)/n;x=a,s=0;f0=exp(-0.5*x).*sin(x+pi/6)fori=1:nx=x+h;f1=exp(-0.5*x)*sin(x+pi/6);s=s+(f0+f1)*h/2;f0=f1;ends例4.8程序2如下:a=0;b=3*pi;n=1000;h=(b-a)/n;x=a:h:b;f=exp(-0.5*x).*sin(x+pi/6);fori=1:ns(i)=(f(i)+f(i+1))*h/2;ends=sum(s)for循环(一般形式) for循环变量=array 循环体 end说明:array可以是向量也可以是矩阵,循环执行的次数就是array的列数,每次循环中循环变量依次取array的各列并执行循环体,直到array所有列取完。实际上,“表达式1:表达式2:表达式3”是一个仅为一行的矩阵(行向量),因而列向量是单个数据。判断下列循环语句的循环次数forn=1:5 forn=-1:0.1:1 forn=linspace(-2*pi,2*pi,5) a=eye(2,3);forn=a 例4.9已知5个学生4门功课的成绩,求每名学生的总成绩。程序如下:s=0;a=[65,76,56,78;98,83,74,85;76,67,78,79;98,58,42,73;67,89,76,87];fork=as=s+k;enddisp(s‘);%将s以行向量表示,用到了矩阵转置2.while循环 while条件表达式 循环体 end当表达式为TRUE时,就执行循环体,否则结束循环。表达式可以是向量也可以是矩阵,如果表达式为矩阵,则其全部元素均为TRUE时才执行循环体,否则不执行。例4.10使用while循环计算f(x)=sin(x),x5且每次x递增ln(x)。x=0.1;whilex5f=sin(x)x=x+log(x) endTips:由于matlab执行循环的效率较低,为了提高程序执行效率最好不要多使用循环,而应该使用matlab擅长的数组运算。3.break和continue语句(1)break语句break语句终止本层for或while循环,并立即跳出该循环结构,执行end后面的命令,break一般与if语句结合使用。例4.11已知y=1/12+1/22+1/32+…+1/n2,当n=100时,求y的值。用while语句实现.y=0;i=1;while1f=1/i^2;y=y+f;ifi==100break;endi=i+1;endy(2)continue语句continue语句与break不同

显示全部
相似文档