1.2 MATLAB语言语法要素 17· (0.6*pi) 与下列语句 A=a^2十b^2+sn(0.6*pi) 的作用是相同的。 1.2.4 MATLAB的常用数学函数 1.初等函数 MATLAB提供了几乎所有的常用的初等函数函数的变量在 MATLAB中被规定为 矩阵变量,运算法则是将函数逐项作用于矩阵的元素上因而运算的结果是一个与自变量同 维数的矩阵。例如: 》A=[123;456] >B= fix(pi A) 》C=cos(pi*B) 这三条语句运算的结果是: B 369 121518 MATLAB提供的三角函数主要包括有 正弦函数 余弦函数 正切函数 asin 反正弦函数 反余弦函数 atan 反正切函数 nh 双曲正弦函数 双曲余弦函数 tan 双曲正切函数 反双曲正弦函数 acosh 反双曲余弦函数 反双曲正切函数 MATLAB提供的初等函数包括有
18 一章 MATLAB系统与语言简介 实数的绝对值、复数的模、字符串的ASC码值 复数的幅角 方根函数 复数的实部 Imag 复数的虚部 复共轭运算 最邻近整数截断(四舍五入 fi: 向零方向截断为整数 不大于自变量的最大整数 不小于自变量的最小整数 符号函数 求余数或模运算 最大公因子 最小公倍数 自然指数函数(以e为底) 自然对数函数(以e为底 以10为底的对数函数 2.特殊函数 为了方便应用 MATLAB还提供了一些特殊的数学函数,主要包括有: bessel Bessel函数 完全与不完全Beta函数 ganma 完全与不完全r函数 rat 有理逼近 误差函数 逆误差函数 ellipk 第一类型、第二类型完全椭圆函数 Jacobi椭圆函数 上述函数基本上按矩阵的元素进行运算 1.3简单程序设计 1.3.1控制语句 大部分的求解问题都要受到一定条件的控制,与其他的程序设计语言一样 MATLAB 语言也提供了条件语句。下面分别加以介绍。 1.or循环语句 MATLAB也有自己的for循环语句。如果要反复执行的一组语句的循环次数是已知或
1.3简单程序设计 ·19 预定义的,就可以使用for循环语句。例如 这条循环语句将向量x的前n个元素赋零值,这里变量n的值必须预先给定。如果变量n的 值小于1,在这种情况下语句仍是合法的但是 MATLAB不执行循环内的语句,即x(i) 0。如果x事先不存在或者其元素的个数少于n,那么 MATLAB将自动分配所需要的空间 for语句可以嵌套使用,例如 J=1:n A(i,j)=1/(i+j-1) 其中分号的作用是避免逐个显示矩阵元素的值,而最后一行表示显示循环语句创建的矩阵 最重要的是每一个for必须与end配对使用。例如输入下列语句 后, MATLAB将继续等待循环体的输入,直至遇到end结束循环体时,才开始执行for语 再看一个例子,设t是一个列向量 0 如果要创建一个 Vandermonde矩阵A,其各列元素正好是t的各次幂,即 A 81279 0135 62512525 那么,最常用的方法是使用下面的循环语句 》n= length(t); Ai,)=t(i)^(n-j);
第一章 MATLAB系统与语言简介 但是,如果要使用 MATLAB提供的矩阵向量运算功能,则用下面基于向量运算的单个 循环语句,其执行速度会更快: >>A(:, n)=ones(n, 1); 》forj=n-1:-1:1 A(:,j)=t.萧A(:,+1); 其中,ones(n,1)的作用是生成一个n行1列的元素全为1的向量。 for循环语句的一般形式如下: forv=表达式 语句组 按照 MATLAB的定义表达式是一个矩阵,上述for循环语句的执行过程是:依次地 将表达式矩阵的各列之值赋给变量v然后执行语句组中的语句。换句话说 MATLAB的 for循环语句的循环变量v可以是一个列向量,在这种情况下该循环语句等价于下面的语 句组 E=表达式; 「m,n]=sie(E); fo V=E(:,j); 语句组 通常,表达式的形式是m:n或m:i:n,即仅为一行的矩阵,因而列向量为单个数量 在这种特殊形式下, MATLAB的for循环语句与其他计算机语言的FOR或DO循环语句 等价。 2. while循环语句 MATLAB提供有whle循环语句,它的作用是在一定的逻辑条件控制下,不断地循环 执行一条或一组语句,直到逻辑条件不再满足时为止。下面给出一个简单的例子来说明 while语句的作用 while prod(l n)<1.e100, n =n+1; end 这组语句的语义是找出使阶乘n!小于10的100次方的最小整数n,其中prod(1:n 是计算向量1:n各元素之积。 hle语句的一般形式是 whle表达式 语句组
1.3简单程序设计 21· 其语义是当表达式矩阵的各个元素都是非零值时,执行语句组并再循环,一般来说,这里的 表达式是1×1的矩阵形式。如果问题涉及到某个非1×1维数的矩阵,那么,可以用函数 any或ll将这个矩阵条件转换成1×1的矩阵表达式。例如,对向量v,当它的所有元素为非 零值时,l!(y)取值为1,否则为零 3f条件语句和 break语句 这里首先通过例子来说明条件话句的使用方法。第一个例子是根据一个整数的符号 和奇偶性,分成三种情况作不同的计算: if n <o A m negative(n) A even(n) A= odd(n) 第二个例子是一个有趣的数论问题:任取一个正整数,如果它是偶数,就除以2;如果它 是奇数就乘3再加1,重复这个过程直至这个整数变成1时为止。问题是:对于任何一个整 数,该过程是否能够终止?结合whle和i语句的 MATLAB语句如下: n= input(Enter n, negative quits: ) if n <=0, break, en if rem(n, 2)== 0 /2 else end 其中,nput函数的作用是等待用户的键盘输入,并将输入的值存入变量n中,而 break语句 则用于退出循环体。f条件语句有两种形式,分别是 f表达式 语句组 语句组2 和 f表达式1 语句组1