数学建模社区-数学中国
标题:
取模(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)=-4
0 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 B
ans =1
+ b( I! w- \4 i; W/ \2 O2 O
>> mod(5,-2)
, _' y2 G9 l. N9 q9 t
ans =-1 %“除数”是负,“余数‘就是负
( l. @3 K( p/ I& }& p8 r* v/ } c
>> mod(-5,-2)
) z8 ]( n% o O1 E
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
& \, _) f+ h% E1 G0 d( l# G, @7 U& R
>> rem(5,2)
" m/ C/ ` [, K* r0 e* M
ans =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 V
ans =-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: E
1 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