数学建模社区-数学中国

标题: Matlab中运算的优先级 [打印本页]

作者: 森之张卫东    时间: 2015-9-2 08:06
标题: Matlab中运算的优先级


                     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运算的优先级

  
优先级
  
运算
  
1
  
括号里的内容先运算,从最里面的括号去运算
  
2
  
幂运算,从左向右
  
3
  
乘除法,从左向右
  
4
  
加减法,从左向右


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)

在执行时将会出现一个错误。










欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5