目录
while语句是通过判断循环条件是否满足来决定是否要继续循环的一种循环结构,也称条件循环语句。他的特点是先判断循环条件,条件满足时执行循环。
while语句的一般格式如下:
while 条件
循环体语句
end
例1 根据矩阵指数的幂级数展开式求矩阵指数。

思路: 设
是给定的矩阵,E是矩阵指数展开式累次函数值,F是展开式的每一项,n是项数,循环一直进行到F很小,以至于F值加在E上的值影响不大时为止。为了判断F是否很小,可利用求矩阵范数的函数norm(F,1)来计算。当norm(F,1)=0时,认为F很小,可退出循环。
程序如下:
- X=input('Enter X:');
- E=zeros(size(X)); %参生与X同样大小的零矩阵
- F=eye(size(X)); %参生与X同样大小的单位矩阵
- n=1;
- while norm(F,1)>0
- E=E+F; %累加求和
- F=F*X/n; %求累加项
- n=n+1;
- end
- E
- expm(X) %调用MATLAB矩阵指数函数求矩阵指数
运行如下:
- >> Untitled6788
- Enter X:[0.5,2,0;1,-1,-0.5;0.9,1,0.75]
-
- E =
-
- 2.6126 2.0579 -0.6376
- 0.7420 0.7504 -0.5942
- 2.5678 2.3359 1.5549
-
-
- ans =
-
- 2.6126 2.0579 -0.6376
- 0.7420 0.7504 -0.5942
- 2.5678 2.3359 1.5549
运行结果表明,程序运行结果与MATLAB矩阵指数函数expm(X)的结果一致。
与循环结构相关的语句还有break和continue语句,他们一般与if搭配使用。
break语句用于终止循环的执行。当在循环体内运行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。
continue语句控制跳过循环体中的某些语句。当在循环体你执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。
例1 求[100,200]之间第一个能被21整除的整数。
程序如下:
- for n=100:200
- if rem(n,21)~=0
- continue
- end
- n
- break
- end
分析:没有找到第一个数,if语句为真,运行continue语句,continue语句将跳过循环体所有剩下的语句 end n break,然后进行下一次循环;直到找到第一个数,那么if语句为假,跳到n,然后break语句直接结束整个程序。
运行如下:
- >> Untitled2786
- n =
-
- 105
如果一个循环结构的循环体包括了另一个循环结构,就称为循环的嵌套,也称多重循环结构,按嵌套的层数,可分为二重循环、三重循环等。实现多重循环结构仍用前面介绍的循环语句(for、while、continue、break),在设计多次循环时,要特别注意内外循环之间的关系,以及各语句放置的位置。
例1 若一个数等于他的各个真因子之和,则称该数为完数,如6=1+2+3,所有6是完数。求[1,500]之间的全部完数。
程序如下:
- for m=1:500
- s=0;
- for k=1:m/2
- if rem(m,k)==0
- s=s+k;
- end
- end
- if m==s
- disp(m)
- end
- end
运行如下:
- >> Untitled46873
- 6
-
- 28
-
- 496