语句组 end
格式2: if 条件
语句组1 else
语句组2 end
格式3: if 条件1
语句组1 elseif 条件2
语句组2
??
elseif 条件m 语句组m else
语句组m+1 end
对于格式1,若条件成立,则执行语句组,执行完之后继续执行if语句的后续语句,若条件不成立,则直接执行if语句的后续语句。对于格式2,当条件成立时,执行语句组1, 否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后续语句。格式3的执行过程如图3.1所示,可用于实现多分支选择结构。
条件1 不成立 不成立 成立 条件2 ?
成立 条件m 不成立 成立 语句组1 语句组2 语句组m 语句组m+1
图3.1 if语句格式3的执行过程 例如,要定义一个1*10的行向量a,当变量p大于5时,向量的所有元素值为1;当变量p小于或等于5时,向量的所有元素值为0。我们可以用if语句来实现,对应的命令如下: if p>5
24
a=ones(1,10) else
a=zeros(1,10) end
2. switch 语句
switch 语句根据变量或表达式的取值不同,分别执行不同的语句。其格式为: switch 表达式 case 值1 语句组1 case 值2 语句组2 ?? case 值 m
语句组m otherwise
语句组m+1 end
当表达式的值为值1时,执行语句组1,当表达式的值为值2时,执行语句组2,??,当表达式的值为值m时,执行语句组m,当表达式的值不为case所列的值时,执行语句组m+1。当任一分支的语句执行完后,直接执行switch语句的下一句。
例:根据变量num的值来决定显示的内容。当num的值为- 1时,显示:I am a teacher.。当值为0时,显示:I am a student.。当值为1时,显示:You are a teacher.。当为其它值时,显示:You are a student.。
解:程序如下:
num=input('请输入一个数'); switch num case -1
disp('I am a teacher.'); case 0
disp('I am a student.'); case 1
disp('You are a teacher.'); otherwise
disp('You are a student.'); end
25
3.4.2 循环控制语句
1. for 循环语句
for 循环语句的格式为:
for 循环变量=表达式1:表达式2:表达式3 循环体语句 end
在上述格式中,end是必须的,不可默认。其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长是1时,表达式2可省略。
for语句的执行过程是:首先计算三个表达式的值,再将表达式1的值赋给循环变量,如果此时循环变量的值介于表达式1 和表达式3的值之间,则执行循环体语句,否则结束循环的执行。执行完一次循环之后,循环变量自增一个表达式2的值,然后再判断循环变量的值是否介于表达式1和表达式3之间,如果满足仍然执行循环体,直至不满足为止。这时将结束for 语句的执行,而继续执行for后面的语句。 例:已知y=1+1/3+1/5+?+1/(2n-1), 当n=100时,求y 的值。 解:程序如下: y=0;n=100;
for i=1:n
y=y+1/(2*i-1); end y
在实际MATLAB编程中,采用循环语句会降低其执行速度,所以前面的程序通常由下面的程序来代替:
n=100;
i=1:2:2*n-1; y=sun(1./i); y
for语句更一般的形式是: for 循环变量=矩阵表达式 循环体语句 end
执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句。 例:写出下列程序的执行结果: s=[0;0;0;0];
a=[12,13,14;15,16,17;18,19,20;21,22,23]; for k=a s=s+k; end
26
disp(s);
解:执行结果是:
39 48 57 66
for语句也可实现多重循环的嵌套,其格式为: for 循环变量1=表达式1 for 循环变量2=表达式2 语句组 end end
用for语句实现多重循环时,for和end 必须成对出现。
2. while语句
while语句用来实现在某一逻辑关系控制下的循环。While语句的格式为: while 关系表达式 语句组 end
while语句的执行过程是,首先判断关系表达式是否成立,若成立则运行语句组中的语句,否则停止循环。通常是通过在语句组中对关系表达式进行改变来控制循环是否结束。
例如,我们用while语句来实现下列级数求和: s=1+1/2+1/3+1/4+?+1/100 命令如下: s=0; n=1;
while n<=100 s=s+1/n; n=n+1; end s
运行结果为: s=
5.1874
27
第四章 MATLAB的符号运算功能
除了数值计算以外,在数学、工程和其他应用科学中还经常用到符号运算。MATLAB和著名的符号运算语言Maple结合,为用户提供了集符号运算与符号可视化为一体的强大的符号运算功能。
4.1 建立符号对象
建立符号对象的函数是sym和syms,其中函数syms是sym的简捷方式。
4.1.1 定义符号变量
在使用符号变量之前,应先声明哪些变量是符号变量。声明符号变量的语句是: syms 变量名列表
其中各个变量名用空格分隔 syms x a
或者用:sym(‘变量名’)来创建符号变量 x=sym(‘x’) a=sym(‘alpha’)
这里,变量x和a的类型是符号对象,它们被定义后,就可以参与符号运算。
4.1.2 定义符号表达式和符号方程
符号表达式和符号方程的区别在于:符号表达式不包含等号(=),而符号方程必须带等号。但它们的创建方式是相同的。
例如:要考虑二次函数f=ax^2+bx+c。可以创建符号表达式,赋值给符号变量f。 f=sym(‘a*x^2+b*x+c’); 或者,f=’a*x^2+b*x+c’;
这个命令将符号表达式ax^2+bx+c赋值给变量f,由于没有建立对应表达式中a、b、c、x的变量,f中的内容只是一个简单的字符串,为了使f成为一个真正的符号表达式,从而能够执行符号数学运算(例如微积分、解方程等),必需显式的建立这些变量。命令如下:
a=sym(‘a’) b=sym(‘b’) c=sym(‘c’) x=sym(‘x’)
或简单的用命令:
28