- 在线时间
- 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】
' v; ]( V, B# y, L本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者# q% Q' B( ]' R3 F$ r, f
昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下: r$ a6 A/ r8 e4 p9 M9 [- z7 ~+ K( c
# n; o4 W+ I1 E$ Q+ ?
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
+ I) @- n1 ?4 x) [5 e* y& M 当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
; q+ [" ]$ O) U$ u s# E 这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。) D* ]: k& G4 S) a
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 `3 h! G# ]7 I5 z/ ]: m( d
/ a! J2 o: c Y, P* r' @$ {9 h9 {+ V; O, I6 W/ g6 ~5 s
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
- K% S! Y8 E8 s, o* g( N0 z+ P7 ~' X: Z) ~
先将两个整数看作是正数,再作除法运算
) G: Z$ s, P: z/ t! |! }5 r①能整除时,其值为0
1 `2 F# n0 L9 a* `0 H' m②不能整除时,其值=除数×(整商+1)-被除数
7 B+ w# K y' |* U/ T) ^+ c# Q4 Y' V+ `7 |5 i0 K: i* Q) C" P
例:mod(36,-10)=-4
. v, \: [' g$ z' F6 H/ Q4 Z即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。/ @3 f) q5 J2 J v/ f
例:mod(9,1.2)=0.62 R( k9 W1 h8 ^* d
例:* I( X" a" |' M5 _/ T
>> mod(5,2)
7 J: F9 [8 u6 `, Cans =1 %“除数”是正,“余数”就是正
' m4 z4 y5 O- s6 w; C% O0 L/ X>> mod(-5,2)
+ s* l; l7 }4 j/ J; O, \' Yans =1
4 r' p/ Q. w j>> mod(5,-2)0 E# I2 u8 z. _
ans =-1 %“除数”是负,“余数‘就是负
$ {5 S. r m& |4 d3 _' I>> mod(-5,-2)* i8 q" w7 x6 V8 y' F t
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同( E- ~3 v' `! X
>> rem(5,2)
; U% m) R. u# V2 ?/ w) \9 H# F2 ?ans =1 %“被除数”是正,“余数”就是正
% q9 h' q( K! E+ J9 F$ R/ L" |>> rem(5,-2)
6 V- m6 ~" F6 p) c- O! Cans =1
J# x {' L: O6 ~>> rem(-5,2)
( T1 C ^. t$ \+ t8 oans =-1 %“被除数”是负,“余数”就是负
( ?- D( \/ X6 _, t4 K4 y/ Z4 g>> rem(-5,-2)
) I4 d5 {$ u' i4 Dans =-1
- n, k9 M7 Z& B0 U2 w8 s
0 r! H9 b. I3 P: s: i; `
, v7 w0 |4 r" E. M/ Z慢慢体会,两者确实不一样
" K, j$ V7 D# [ |
zan
|