MATLAB循环结构之while语句

本文详细介绍了while语句的使用,包括其基本格式和在矩阵指数计算中的应用。同时,讲解了break和continue语句在循环控制中的作用,举例说明了如何找到[100,200]间第一个能被21整除的整数。此外,还探讨了循环的嵌套,通过示例展示了如何找出[1,500]之间的完数。内容涵盖了循环控制的基本要素和实际问题的解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

while语句

break语句和continue语句

 循环的嵌套


while语句

while语句是通过判断循环条件是否满足来决定是否要继续循环的一种循环结构,也称条件循环语句。他的特点是先判断循环条件,条件满足时执行循环。

while语句的一般格式如下:

while 条件

       循环体语句

end

例1 根据矩阵指数的幂级数展开式求矩阵指数。

e^X=I+X+\frac{X^2}{2!}+\frac{X^3}{3!}+\cdots+\frac{X^n}{n!}+\cdots

思路: 设X是给定的矩阵,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语句

与循环结构相关的语句还有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

### MATLAB `while` 循环概述 在MATLAB中,`while`循环用于重复执行一组命令,直到指定条件不再满足。这种控制流语句允许程序基于特定条件多次运行代码块[^3]。 #### 条件判断与更新语句的重要性 为了有效利用`while`循环,在设计时需特别注意两个方面:一是如何设置初始条件;二是怎样合理安排每次迭代后的状态变更,以确保最终能退出循环并达到预期目标[^2]。 #### 使用逻辑运算符优化条件表达式 当构建复杂的条件测试时,推荐采用短路操作符`&&`和`||`来替代普通的按位逻辑算子`&`和`|`。这样做不仅提高了可读性和安全性,还可能带来性能上的提升[^5]。 ### 实际案例分析 下面给出一个简单的例子说明如何运用上述原则创建高效的`while`循环: 假设有一个函数`myfunction()`接收参数x,并返回一个小于π的结果值。现在希望通过不断调整输入变量x使得输出刚好大于等于圆周率π。可以按照如下方式实现这一过程: ```matlab % 初始化变量 x = 0; % 开始while循环 while ~(exist('myfunction.m', 'file') && myfunction(x) >= pi) % 更新x的值(这里简单加1) x = x + 1; % 打印当前进度 fprintf('Current value of x is %.f\n', x); end disp('Found a solution!'); ``` 这段代码展示了几个重要特性: - 利用了文件存在性的检查作为额外的安全措施; - 运用了短路逻辑运算符提高健壮性; - 添加了必要的调试信息以便追踪进展。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值