- 在线时间
- 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】
. ~# Q: M: W! H9 D( i1 j6 c本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者
$ `- n8 |3 { d. ^6 [昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:9 D+ Q, J, z0 a% W
! d+ T9 v8 f6 ?- Y: ]
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
* R$ E9 _8 Y6 `, {: n9 u 当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。; m r! C0 ^' H6 S4 F
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
0 P0 |4 d/ K0 p0 i( K! J) j rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)4 D, ?2 }4 G4 @: p4 B! U4 E D* F! T
4 H; M4 Z; ?5 u$ K2 U
/ K ^( Z* \& t- r# F两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
$ D1 }: v4 X6 g q: j- L% M* y* o- [/ e) h- u
先将两个整数看作是正数,再作除法运算
0 e4 A5 }% F# i9 ]8 E) s7 Z* A①能整除时,其值为0
" g$ Y m, N" w, s& T* P' h; @# n; C②不能整除时,其值=除数×(整商+1)-被除数
( t, j! A+ u4 T7 y" t5 z
4 \, `9 }# _+ x& c5 ?3 R. l例:mod(36,-10)=-4
$ V2 M* G- Q& S即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
% T* `# X E& Q# d' _3 Y例:mod(9,1.2)=0.6
2 k, Y2 k3 O: B9 I例:* S2 }- L: c8 D0 a7 l4 d
>> mod(5,2)
( S; F7 _8 Q l; n4 Vans =1 %“除数”是正,“余数”就是正5 b/ a" v* W# D+ G) s& s6 O( P
>> mod(-5,2)- E% h) o6 q6 D7 h; B: z
ans =1
( e2 @/ r& c' u" p( D# F! H0 c+ t>> mod(5,-2)% D. f3 ~! W0 N. |8 k& F) f8 `& P
ans =-1 %“除数”是负,“余数‘就是负+ t0 \; j6 h2 m5 H
>> mod(-5,-2)% H3 \# M8 h. ]% t" x+ g3 _+ G
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同! a b! |, G" X8 B* r
>> rem(5,2)+ s4 @/ B% G$ H/ g# W: `
ans =1 %“被除数”是正,“余数”就是正
R3 s7 _; K. J>> rem(5,-2)
9 R M! W3 Y/ ^2 ~5 uans =1
0 R! y |3 Q8 c9 G- x+ O>> rem(-5,2)3 t8 o5 G% }# K8 G) n. O/ R# A. C; D
ans =-1 %“被除数”是负,“余数”就是负# X2 X, j3 ?9 {% M& Z+ H
>> rem(-5,-2)
# c* `1 q( W8 Q- ^) g" wans =-1
; B1 l/ D% i2 e
$ p' H# p4 d1 h! R
2 q+ q) z0 q& g2 {7 K. W慢慢体会,两者确实不一样
. e. b6 D. k* J0 ?9 {7 \; G |
zan
|