数学建模社区-数学中国
标题:
取模(mod)与取余(rem)的区别——Matlab学习笔记
[打印本页]
作者:
parkshinyang
时间:
2012-4-14 16:30
标题:
取模(mod)与取余(rem)的区别——Matlab学习笔记
取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】
: O" f: u! y3 F! P
本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者
+ p$ _0 T2 l6 @8 z
昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
. A3 @. G ~' }9 W8 f
6 O1 o7 J. S( d) r7 b
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
& p4 B9 O# ?$ s9 [
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
( R! t* u3 V3 M* i
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
6 Q& U' ?9 l# f' k4 T5 b' D$ C
rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
( }- _# K) t1 X
9 G5 l) E6 U! ~: V
! N' K- K/ u# l$ w& f j$ d! x
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
, \. _$ T/ J$ ]1 H* k, K
6 t+ p9 c9 k4 e% c5 e
先将两个整数看作是正数,再作除法运算
7 P# E& T- Z; S" x9 B
①能整除时,其值为0
7 R, F6 W; p3 y2 B9 @
②不能整除时,其值=除数×(整商+1)-被除数
. d% p. D% u/ A" q+ J0 W5 E2 ^ @, b
$ r/ I, q7 e# u' }* \2 f) Z
例:mod(36,-10)=-4
- Z- ~6 s, A1 `+ P% y) T2 `
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
( O( H) E1 ], c" m) o: q
例:mod(9,1.2)=0.6
7 _0 [9 M i2 h# H2 c& F
例:
5 k& R. `( r/ p" f+ p
>> mod(5,2)
c. {$ O- t& h, t; ?
ans =1 %“除数”是正,“余数”就是正
) a3 c9 }9 @% T7 S; L6 b* _
>> mod(-5,2)
5 S# W, d3 U1 \; |
ans =1
% v; D" ^4 T/ O/ Y4 w
>> mod(5,-2)
' R% B$ |" f7 n, n% S* C( c
ans =-1 %“除数”是负,“余数‘就是负
( i& P+ L9 D6 V9 p2 q4 r
>> mod(-5,-2)
6 j! e4 ?. u% r
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
& O: U6 w9 P# H; Q& H# w2 g; A
>> rem(5,2)
; c I" a) J% u* D( P
ans =1 %“被除数”是正,“余数”就是正
4 C( L# X% l7 e: B7 v
>> rem(5,-2)
6 E0 O" h- V; O: g+ z$ s
ans =1
* J# V8 K: K8 I9 \) Q( V
>> rem(-5,2)
( J7 i2 d4 `4 `4 A* w
ans =-1 %“被除数”是负,“余数”就是负
2 \# w0 h4 B; I0 w0 B# R
>> rem(-5,-2)
& s: {6 w8 Q- f- h! ]8 [
ans =-1
+ a! }) G# j5 O( { t% N) x& L
8 v; n7 s0 ?4 g! g- {% b, a( {: x
1 c3 |# j! E* z& Z' e
慢慢体会,两者确实不一样
/ u. ~) H5 A |$ {' U8 r @% ?
作者:
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
4 T; o* V6 d8 \: D- I
帮你顶一下
6 V; ]( Q- u; Y' z) x0 _+ R* [
谢谢啦 哈哈
作者:
挣未来
时间:
2012-7-9 02:09
留着,要用的时候再来看好了~~~
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5