数学建模社区-数学中国

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

作者: parkshinyang    时间: 2012-4-14 16:30
标题: 取模(mod)与取余(rem)的区别——Matlab学习笔记
取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】, {" W* f7 ?( t* S: ]
本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者' x$ c( b/ {: L* H" q* m/ f
昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
/ i# ]- _. S3 u& L3 q3 _
0 x% j  S/ a0 w1 J* g: \" I* i' G+ ~通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
& v3 m* I9 f, T0 c( a, _    当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
8 E" I2 {% y8 N& ]4 h& Z3 ]    这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
8 H5 J+ Y; D5 Y' Z    rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
1 G1 Q5 S5 w/ @! m' t9 T" L$ b  F) S0 Z% i) y6 o
8 s+ \1 }9 m) A5 i8 v
两个异号整数取模取值规律            (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)3 z6 Z* Y" n! A0 h3 H9 V6 z

# s2 L4 l" R' d$ `# p6 @先将两个整数看作是正数,再作除法运算3 T, I0 z. k+ _% y3 T2 j* L
①能整除时,其值为0; g/ ~& B3 F+ x2 z& D
②不能整除时,其值=除数×(整商+1)-被除数
+ o) |/ |* \' _$ U  _0 r6 v% B" ]" L5 v3 Z) z
例:mod(36,-10)=-40 Q# e' Z6 N8 Y$ J' N, g9 j1 D
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。% j: _: ~3 l$ }
例:mod(9,1.2)=0.6# i6 w7 @3 V# I
例:/ V. i: T# p- Y1 i" @0 ^
>> mod(5,2)' v& ]2 l( i* u8 C# b" w! G
ans =1                   %“除数”是正,“余数”就是正0 D* a' l1 G6 q0 S$ x) X4 m
>> mod(-5,2)
; u+ o6 c) _8 Bans =1
+ b( I! w- \4 i; W/ \2 O2 O>> mod(5,-2)
, _' y2 G9 l. N9 q9 tans =-1                  %“除数”是负,“余数‘就是负
( l. @3 K( p/ I& }& p8 r* v/ }  c>> mod(-5,-2)
) z8 ]( n% o  O1 Eans =-1                  %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
& \, _) f+ h% E1 G0 d( l# G, @7 U& R>> rem(5,2)
" m/ C/ `  [, K* r0 e* Mans =1                   %“被除数”是正,“余数”就是正
0 M% {$ V9 h6 F8 Y>> rem(5,-2)$ K* @: o) o1 p0 t6 z; ~# B% \1 g
ans =1
  x! v- H8 n( }0 n& l. b>> rem(-5,2)
1 h/ j( d( ~8 a# h& t9 Vans =-1                 %“被除数”是负,“余数”就是负2 R5 F0 E6 p0 i/ {
>> rem(-5,-2)- j' c0 I9 v. ?7 Q1 c/ @
ans =-1
1 ?2 _! B  P( J7 K
  b4 \+ A/ `. g: E1 Q" [  T5 M7 m
慢慢体会,两者确实不一样
8 ^5 m: F" Q# a; u
作者: 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
* m( k1 P: u* Q- l8 B8 E$ I帮你顶一下

( ^1 x/ N- j% n, B& Q. j0 @谢谢啦 哈哈
作者: 挣未来    时间: 2012-7-9 02:09
留着,要用的时候再来看好了~~~




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