讲解视频:可以在bilibili搜索“MATLAB教程新手入门篇——数学建模清风主讲”。
除了for-end语句之外,MATLAB还提供了另一种强大的循环语句:while-end语句(简称while循环)。与for循环不同,while循环的特点在于它允许我们在不知道具体循环次数的情况下执行循环体,这种灵活性使得while循环在某些情境下非常有用,尤其是当我们需要满足某些某些条件时才执行循环操作。
while-end循环语句的语法如下:
在这里,表达式通常是一个判断条件,当这个条件为true时,循环会不断的迭代执行下去;一旦表达式的值变为false,循环就会被终止,程序将跳出循环体。
下面我们来看一个具体的例子:已知 ,当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))
这段代码的计算思路如下:
注意:对于循环次数已知的题目,也可以使用while循环进行求解,但求解过程没有for循环那么直观。例如要计算等于100时,的值,可以使用下面的代码进行求解:
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
下一篇文章:
更多文章可点击下方合辑: