数学建模社区-数学中国

标题: 取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】 [打印本页]

作者: 木长春    时间: 2009-11-15 19:51
标题: 取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】
昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
, y  L9 y/ c* B) i; H  J
9 V+ J8 g5 |3 o! [# ?通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
, |  b" ^4 m# I$ Y3 N% G9 f% _' ?    当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
/ N9 t/ `! y( |6 @2 }! x    这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
$ \* Y9 j0 M) m. z' X" L    rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
" G1 q/ V; o5 W# x$ B2 `, X3 y- E: P1 N! n% |! a: y7 \# z

. j. v# h2 z+ F两个异号整数取模取值规律            当是小数时也是这个运算规律,这一点好像与C语言的不太一样
" W% t3 B6 p& }+ o, H2 e  M* r6 m' P1 z
先将两个整数看作是正数,再作除法运算+ i) c6 u2 a3 f
①能整除时,其值为0
( c3 w6 @7 `8 n②不能整除时,其值=除数×(整商+1)-被除数4 q2 b) g( Z+ Z/ I* R

5 }" o: z1 u6 s, x例:mod(36,-10)=-4
4 E! d- F6 p1 p& \5 w即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
6 m$ I& [' M$ n0 A例:mod(9,1.2)=0.6
( }6 R. g. E7 f4 u" G
例:' ?' x: }" s+ t" P& j2 N" H
>> mod(5,2)
+ P. l$ O: e/ T% ]ans =1                   %“除数”是正,“余数”就是正
* q8 i- n8 @: P3 T) c! [, Q' X>> mod(-5,2)
7 ?6 o0 y- u3 _ans =1
/ [, t. I' x: }9 i; j>> mod(5,-2)& L# h$ P9 g. \5 K
ans =-1                  %“除数”是负,“余数‘就是负- f: M, ]: t* l7 ], @$ n
>> mod(-5,-2)& A1 I: G* ^# P0 f- V
ans =-1                  %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
  |) Q7 `: A4 A5 U6 R9 ]( ^>> rem(5,2)
1 e$ O1 m! D* F1 Q- U( Oans =1                   %“被除数”是正,“余数”就是正
0 e4 |5 I, X5 n3 `9 _! \# d4 X>> rem(5,-2)
3 f, b* w; w. k' F* ?! Wans =1+ e: _3 b3 W/ X4 \( B% G
>> rem(-5,2)
# H/ O. M) J$ e3 Vans =-1                 %“被除数”是负,“余数”就是负
7 H% A3 d- e2 h>> rem(-5,-2)
: n4 m2 `; }; J: \ans =-1
* g' _- _. ], t0 ^9 G( Z
( _  U+ S2 |6 M5 |
) u# @; G+ \; d$ L% u& K2 P: w$ y慢慢体会,两者确实不一样
作者: 大笨象    时间: 2009-11-15 22:39
不错。自己动手丰衣足食~学习方法很好,兴趣很浓呀。
作者: 惟楚有才    时间: 2010-3-3 21:53
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
作者: high1989    时间: 2010-4-24 14:15
多谢,Matlab自带的帮助看不懂……
作者: 土豆炒豆芽    时间: 2010-10-13 09:03
不过楼主,还是不明白呀~当被除数时负数时比如mod(-5,2),这时取得n=-2吗?
作者: paulci    时间: 2012-8-10 09:47
不错,学习了,楼主仔细




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