- 在线时间
- 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】
/ l: D, l z, c8 r, J. L本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者
+ w' S; x) m, N. s昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
" R* r9 i% P. S- l$ K
+ e! _$ Y! R, V/ S5 Y通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:0 l3 |2 e- P9 G( x, }
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。5 l4 G9 j( S5 b7 S) e' Q: Y* F8 e
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
' F0 Q( ]1 S& @0 ]# D rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y): l6 k2 c8 I/ W. z+ b6 R" ]8 f6 o
: h2 {: ~; w, y9 V" |
+ p2 T; y* q4 l两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
4 E' c" T' e7 r' o% M
) K, F! G L# V) e先将两个整数看作是正数,再作除法运算
9 [* J& o) x$ g- M& c5 o①能整除时,其值为09 V" Z% L9 G3 {
②不能整除时,其值=除数×(整商+1)-被除数
# T4 f. O, X+ ^/ t; L1 o& A6 F. s3 L& X3 _5 R. t9 }( a
例:mod(36,-10)=-4
0 n" j! X( `$ s( Y9 V$ H" M即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
, ]. M; q. B% u4 \例:mod(9,1.2)=0.6
! c& J/ c/ W+ @7 U7 X0 B例:
S# e8 F F7 w+ |8 P$ m% E>> mod(5,2)
9 C: }* d: X! H+ c7 d& [& t8 Z+ S+ Ians =1 %“除数”是正,“余数”就是正
& t& ]& Q m' f s0 Q! Z1 h>> mod(-5,2)0 i& d; l6 B2 Q* n
ans =1
5 Y( H& [! ~1 I" b7 A: @, A& {- M>> mod(5,-2)! i, U' Y4 ^2 c
ans =-1 %“除数”是负,“余数‘就是负
# S' a9 H# N. n" g: A>> mod(-5,-2)* u' X- i2 g; d
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
+ v: D5 r. x. S# r: C# e: i) b6 E+ c" R>> rem(5,2)
% q& A/ i! a. `ans =1 %“被除数”是正,“余数”就是正
n' L) F2 P2 k) L8 m>> rem(5,-2)
% L0 w) J& K& U5 dans =1; n5 j0 k# l: @, V' }+ p; \% L7 e
>> rem(-5,2)9 w% N/ h- {6 L4 y! B
ans =-1 %“被除数”是负,“余数”就是负
( y; c8 `1 u, [* c! E* N>> rem(-5,-2)) u; C6 }( ^- N/ c8 q% t4 z
ans =-1
, s' a# Q4 _3 [ y- o+ {; k
?4 H5 h z6 l0 ]. E: D4 y$ e$ b# R/ |, l2 z
慢慢体会,两者确实不一样
" F) z4 K+ q% c1 P4 y |
zan
|