数学建模社区-数学中国

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

作者: parkshinyang    时间: 2012-4-14 16:30
标题: 取模(mod)与取余(rem)的区别——Matlab学习笔记
取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】+ ?1 ?' D7 W+ a/ Q/ G# R
本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者
& n7 d6 j5 R% ]昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
, U- Y0 K- N4 k2 j' a8 Z- R% w, u  U, G. O
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:2 X( l; X, b8 w6 Y. z9 j
    当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
6 k9 U! `+ z$ G3 P5 g    这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
/ X+ i" V9 U, ]( m" J" O    rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)- m* D* R8 W8 F

% N- q% L: J: J1 }
7 R, r$ ]0 R) |$ G两个异号整数取模取值规律            (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
, K0 n9 N. o6 I# U/ E: L* U, M
) i& _' A, R4 [( ]6 }* Q6 |先将两个整数看作是正数,再作除法运算1 k+ s$ I& l8 E0 N; Y9 r
①能整除时,其值为0" a0 f" k% q$ K
②不能整除时,其值=除数×(整商+1)-被除数. X  o- f4 u1 G( `1 A

2 N2 |0 G0 G% a, d# {例:mod(36,-10)=-4
9 a- F2 g) L% S. ]( O" p即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。- G) L$ Z9 _( E" k9 }, a
例:mod(9,1.2)=0.6# W, G7 S/ |" X( j2 }  H
例:
# @  r% {' Q" [  i6 X0 J2 U>> mod(5,2)
2 R0 M" `3 C' D0 i3 H6 ?' kans =1                   %“除数”是正,“余数”就是正* C1 F" ^/ g" e5 ~4 a6 x$ r
>> mod(-5,2)
; C# Y* `( S. V" h+ ^! fans =1
1 F0 p3 P3 ~) P>> mod(5,-2)
0 j* c' _7 P' B3 r  Xans =-1                  %“除数”是负,“余数‘就是负) H- F$ r' j" ^3 N/ [6 N& [
>> mod(-5,-2)4 ]# ]: t% J2 O1 n
ans =-1                  %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同$ S9 l. m3 h% |4 X: A5 t6 V, X
>> rem(5,2)7 ~/ ^/ ^1 p0 M9 {) o, i
ans =1                   %“被除数”是正,“余数”就是正
2 u8 E  s5 y' y5 l/ ~2 ^0 Q>> rem(5,-2)7 y3 P+ S! S0 V4 y0 t. X6 C, i
ans =18 j. c9 O+ J+ G! P* r  c# e! v9 X
>> rem(-5,2)
# ^1 a2 x, f) z4 Vans =-1                 %“被除数”是负,“余数”就是负
$ N  A; F4 U2 I- w; }" K% h- I4 \>> rem(-5,-2)
1 l; F* b/ n( D* E9 i- E- \, t* @ans =-1
6 R: h# W& J. r4 h" L0 l, `; o4 {
( V- Z) c, ~  w6 J: h
% C7 ]( M& h; e% p2 [# I- D慢慢体会,两者确实不一样' d9 l6 d. S+ Z6 C

作者: 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
0 S$ Y" H; X; P3 C/ I/ Q5 M帮你顶一下
: V4 e) G# a0 D# c
谢谢啦 哈哈
作者: 挣未来    时间: 2012-7-9 02:09
留着,要用的时候再来看好了~~~




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