Matlab中运算的优先级
许多的数学运算写入一个表达式是非常平常的事。例如,考虑初速度为0的匀加速运动的位移表达式
distance = 0.5 * accel * time ^ 2
这个表达式有二个乘法运算和一个幂运算。在这样的表达式中,知道运算的先后顺序是十分重要的。如果幂运算先于乘法运算执行,这个表达式等价于
distance = 0.5 * accel * (time ^ 2)
如果乘法运算先于幂运算执行,这个表达式等价于
distance = (0.5 * accel * time) ^ 2
这两个式子将产生不同的结果,所以我们必须清楚它们中那个是正确的。
为了使表达的值精确,MATLAB建立了一系列的规则控制运算的层次或顺序。这些规则一般情况下遵循代数的运算法则。数学运算的顺序如表2.7。
表2.7运算的优先级
例2.2
变量a,b,c,d初始化如下
a = 3; b = 2; c = 5; d = 3;
计算如下的MATLAB的赋值语句
(a)output = a*b+c*d;
(b)output = a*(b+c)*d;
(c)output = (a*b)+(c*d);
(d)output = a^b^d;
(e)output = a^(b^d);
正如我们看到的,运算的顺序对一个代数表达式的最终值产生重大的影响。
将程序中的每个表达式尽量写清楚,这是十分重要的。编写的程序不仅要能够计算出所要求的值的来,在需要的时侯,还要考虑它的可维护性。你应当经常问自己“六个月后我能看得懂我现在编得程序吗?其他的程序员看到我的代码,他能迅速的理解吗?”。如果在你的心中有所疑虑,那就用更多的括号使之更加清晰。
好的编程习惯
在需要的时侯用括号使用表达式更加清晰和易于理解。
如果在一个表达式中用到括号,那么括号必须平衡。也就是说,左括号数与右括号数相等。如果两者数目不相同,那么将会导致错误的产生。这种错误经常在输入过程中发生,当MATLAB编译器在执行这个命令时被发现。例如
(2+4) /2)
在执行时将会出现一个错误。
|