QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3853|回复: 0
打印 上一主题 下一主题

Matlab中运算的优先级

[复制链接]
字体大小: 正常 放大

413

主题

36

听众

1854

积分

升级  85.4%

  • TA的每日心情
    开心
    2019-9-18 21:55
  • 签到天数: 258 天

    [LV.8]以坛为家I

    社区QQ达人

    群组2015国赛冲刺

    群组2016美赛公益课程

    群组国赛讨论

    群组第三届数模基础实训

    群组Matlab讨论组

    跳转到指定楼层
    1#
    发表于 2015-9-2 08:06 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta


                         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)

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





    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    数学中国版主团队!
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-8-1 18:45 , Processed in 0.389606 second(s), 54 queries .

    回顶部