数学建模社区-数学中国

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

作者: parkshinyang    时间: 2012-4-14 16:30
标题: 取模(mod)与取余(rem)的区别——Matlab学习笔记
取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】
8 O( X- I. s% d9 d2 I' Q# [0 P本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者
1 H+ \2 X7 E4 D昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
) K! |2 o8 S4 ~1 Q* `0 o# z% B3 b9 P( `% }
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
! ]7 \; ?. T8 q# B    当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。; c, |7 w1 l, R  X6 K( O  y3 W* v
    这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。! I" F' }  L- F% V4 ?
    rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
( O: ]' y: v! R# ~: O8 s( I6 O4 w# o4 K7 d' w
9 }. `" ~0 C& U6 E! p
两个异号整数取模取值规律            (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
/ ?, U+ @( q/ U
" C, N% i1 V! Q2 u- ]先将两个整数看作是正数,再作除法运算2 @7 C7 i6 C$ R$ Y
①能整除时,其值为0
! }, a/ |7 A8 k& @8 V: Q3 |②不能整除时,其值=除数×(整商+1)-被除数
0 H  I/ z4 D! w1 U" R6 ^" I: l
+ N" M( [. w& T! J+ C例:mod(36,-10)=-4
# Q) g" {8 O6 o即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
- N. y0 R  `% L1 t7 c1 R+ R$ i5 ~例:mod(9,1.2)=0.6! w1 O+ T' g" m
例:
. W* ^! g. M  r" ]9 }3 e- R& j>> mod(5,2)
$ m8 _& @) A5 i' g- vans =1                   %“除数”是正,“余数”就是正
8 d* k. C7 v8 G" g  t, L! x; H9 n>> mod(-5,2)
& F6 p2 V  _6 Q+ T: N: ?) oans =1$ ?; w* W# ^6 x6 J, m4 r
>> mod(5,-2)9 c, c2 u9 @( r- S7 a: J1 ^
ans =-1                  %“除数”是负,“余数‘就是负8 M2 d* F  F# p( b. V9 O8 ~
>> mod(-5,-2)
6 c6 N+ Y! [" z4 `/ }( V3 eans =-1                  %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同1 ^3 J4 j; p: l/ d8 _/ E* }
>> rem(5,2)
' `7 H* x+ t7 E0 V2 k4 V0 aans =1                   %“被除数”是正,“余数”就是正
  ^+ E7 E1 x+ X>> rem(5,-2)' a. Y. L- u# i
ans =1
! s2 e8 Z8 z' ?; o% n2 B  N>> rem(-5,2)* Y) {9 I1 }; g
ans =-1                 %“被除数”是负,“余数”就是负
) H5 F7 x5 w6 o' J# @- O+ ?>> rem(-5,-2)
2 M' K, y$ t1 ?3 X, nans =-1
$ h9 w: x( J: {3 G4 X, G
. {& h- Q2 T3 |* h$ k
" B. d* a' Z$ u慢慢体会,两者确实不一样$ ^9 k! ?' w, U% c2 U8 W

作者: parkshinyang    时间: 2012-4-14 18:11
数据处理的时候用的着
作者: parkshinyang    时间: 2012-4-14 19:17
正在编程mcm04年的题 亚历山大  
作者: parkshinyang    时间: 2012-4-14 19:19
正在编程mcm04年的题 亚历山大  
作者: lyj658    时间: 2012-4-14 21:01
帮你顶一下
作者: parkshinyang    时间: 2012-4-14 21:14
lyj658 发表于 2012-4-14 21:01 3 q( [" }3 W" u
帮你顶一下

+ E! j; t8 ^$ k: v" ^谢谢啦 哈哈
作者: 挣未来    时间: 2012-7-9 02:09
留着,要用的时候再来看好了~~~




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