- 在线时间
- 57 小时
- 最后登录
- 2013-10-20
- 注册时间
- 2012-3-19
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 1080 点
- 威望
- 0 点
- 阅读权限
- 40
- 积分
- 433
- 相册
- 0
- 日志
- 0
- 记录
- 7
- 帖子
- 196
- 主题
- 13
- 精华
- 0
- 分享
- 82
- 好友
- 20
升级   44.33% TA的每日心情 | 开心 2013-10-20 20:29 |
|---|
签到天数: 103 天 [LV.6]常住居民II
- 自我介绍
- 建模编程方向
 群组: 学术交流A |
取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】
/ Y n' G, Z% M0 l本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者
& c" e* a1 ]3 O& }' `昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:& T o4 e9 K* s6 i
/ M* _8 T% o$ R% |
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:9 E. Q/ I& @' M0 x; t @& M
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。- V1 X- d7 [1 O2 ` ]
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。9 i! E/ x% M( y1 E+ E! g o
rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
$ P" Y, l; r, E
j5 L! y2 B! D2 x7 z
) t+ \9 Y u2 \; @8 D两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
* q( X4 A. z7 B& Y# l1 Y+ C% x: O% \0 f2 }; i ~! ?
先将两个整数看作是正数,再作除法运算
. Q. X( R% S; o8 m①能整除时,其值为02 p' V Z* t& O I1 X# L, I
②不能整除时,其值=除数×(整商+1)-被除数
/ m6 |% e/ |! }! M9 t m% V. G6 f: {6 c9 ^. P4 c
例:mod(36,-10)=-4* B1 z2 X. T7 R& u+ I% R$ ?& W3 @: q. z
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
6 P" h% e7 O, @ J, s3 y1 q例:mod(9,1.2)=0.6
8 T; m Y* ]3 w) ^& h例:
8 m, `6 m* j# A+ e' a( v# D>> mod(5,2), K2 i! W* h" S" l% H
ans =1 %“除数”是正,“余数”就是正! U; u; Z7 ] o2 k, H
>> mod(-5,2)
# F8 o8 q5 E3 U0 F- hans =1
0 P9 y9 G! j! _! O8 K9 l>> mod(5,-2)
7 q( s# n0 ~; V$ Z( N8 z) B4 S/ Uans =-1 %“除数”是负,“余数‘就是负
9 v4 m% t; R+ n/ N9 H1 _>> mod(-5,-2)3 E- V5 v0 {5 N4 Y Z2 i
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同5 V/ q1 q- v; f
>> rem(5,2)0 t. }5 X5 V2 s( }) \7 m
ans =1 %“被除数”是正,“余数”就是正
3 Q3 V2 q0 w% H. f: c>> rem(5,-2); @7 t' V8 a1 P. r
ans =1
7 G9 _. Z) T4 L- f9 P. X# t9 v>> rem(-5,2)
. P2 e( m- M* K7 Vans =-1 %“被除数”是负,“余数”就是负1 t- Z R* r, M
>> rem(-5,-2)& V. F' \1 W; I
ans =-1
3 L! T4 [* X9 C$ h: P4 u
( F4 V( m4 ^( E6 L: g9 L! l1 V7 k8 F0 ^( t7 n6 b2 c# k) X
慢慢体会,两者确实不一样; u7 Z) ^0 w/ B+ z6 q5 q
|
zan
|