第4章 4.2.2 while-end语句 (MATLAB入门课程)

 讲解视频:可以在bilibili搜索“MATLAB教程新手入门篇——数学建模清风主讲”。

MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili

除了for-end语句之外,MATLAB还提供了另一种强大的循环语句:while-end语句(简称while循环)。与for循环不同,while循环的特点在于它允许我们在不知道具体循环次数的情况下执行循环体,这种灵活性使得while循环在某些情境下非常有用,尤其是当我们需要满足某些某些条件时才执行循环操作。

while-end循环语句的语法如下:

在这里,表达式通常是一个判断条件,当这个条件为true时,循环会不断的迭代执行下去;一旦表达式的值变为false,循环就会被终止,程序将跳出循环体。

下面我们来看一个具体的例子:已知y\left( n \right) \,\,=\,\,1+\frac{1}{2}+\frac{1}{3}+\cdots +\frac{1}{n} ,当n最小取多少时, y的计算结果大于10?

y = 1;  n = 1;
while y <= 10
    n = n + 1;
    y = y + 1/n; 
end
disp(n)

y和n的初始值都是1,while后面的表达式是y<=10,即只要当前的y值小于等于10,循环就会继续执行。在循环体内,会更新n和y的值,直到满足y>10才会退出循环,此时的n就是最小的满足y>10的n.

再来看个例子:斐波那契数列的递推公式为:

 求数列中第一个大于99999的元素.

a(1) = 1;
a(2) = 1;
n = 2;
while a(n) <= 99999
    n = n + 1;
    a(n) = a(n-1) + a(n-2);
end
disp(a(end))

这段代码的计算思路如下:

  • 首先,我们初始化斐波那契数列的前两个元素a(1) 和 a(2),它们都被初始化为1。

  • 我们引入了一个索引变量 n,用于表示当前计算的斐波那契数列的第 n 项。初始时,n 被设置为2,因为我们已经知道了前两项。

  • 进入while 循环,条件是 a(n) 小于等于 99999。这表示代码将持续计算斐波那契数列,直到找到第一个大于 99999 的元素为止。

  • 在循环中,首先将索引变量n变成n+1,准备计算下一个斐波那契数。

  • 接着,我们使用递推关系 a(n) = a(n-1) + a(n-2) 计算下一个斐波那契数,并将其存储在向量a 中的索引变量n 的位置。

  • 循环会继续,不断计算下一个斐波那契数,直到条件 a(n) <= 99999 不再满足。

  • 一旦找到第一个大于 99999 的斐波那契数,循环结束。

  • 最后,输出向量a中的最后一个元素,它就是第一个大于99999的元素。

注意:对于循环次数已知的题目,也可以使用while循环进行求解,但求解过程没有for循环那么直观。例如要计算等于100时,y\left( n \right) \,\,=\,\,1+\frac{1}{2}+\frac{1}{3}+\cdots +\frac{1}{n}的值,可以使用下面的代码进行求解:

y = 1;  n = 1;
while n < 100
    n = n + 1;
    y = y + 1/n; 
end
disp(y)

请大家思考:为什么while后面的条件表达式是n < 100,而不是n <= 100?

如果将条件改为n <= 100,则循环到n等于100时还会继续执行,此时n等于101,然后才会退出循环,这会导致y多计算一次。


在使用while循环时,需要注意以下事项:

(1)    如果不小心执行了一个无限循环(即永远不会自行结束的循环,又称死循环),可以在脚本编辑器或命令行窗口中按下快捷键 Ctrl+C来中断程序的运行。

MATLAB的左下角会一直显示正忙:

x = 1;
while x < 10
    disp(x)
end

(2)while后面表达式的计算结果不一定非得是逻辑值1或0。如果表达式的计算结果是一个数值常数,则只有当这个常数为非零值时循环才会进行;若表达式的计算结果是一个数值向量或者矩阵,则仅当该向量或矩阵中的所有元素都是非零数时循环才会进行。

ii = 5;
while ii
    disp(ii)
    ii = ii - 1;
end

x = [1 2; 3 4];
while x
  x(1) = 0;
  disp(x)
end


点击下方的CSDN专栏阅读下一篇文章:

MATLAB入门课程专栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值