- 在线时间
- 57 小时
- 最后登录
- 2013-10-20
- 注册时间
- 2012-3-19
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 1080 点
- 威望
- 0 点
- 阅读权限
- 40
- 积分
- 433
- 相册
- 0
- 日志
- 0
- 记录
- 7
- 帖子
- 196
- 主题
- 13
- 精华
- 0
- 分享
- 82
- 好友
- 20
升级   44.33% TA的每日心情 | 开心 2013-10-20 20:29 |
|---|
签到天数: 103 天 [LV.6]常住居民II
- 自我介绍
- 建模编程方向
 群组: 学术交流A |
取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】% J: b+ B# E D1 N+ U
本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者
6 c, B f! d" o$ f1 f5 U5 A) j4 N昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:' z1 i% J- W: \2 o
" W% J7 @7 i% P7 _; V" }+ S6 T通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
8 v- _! X& Z3 T 当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
. H3 J# X7 _" _' n5 Y0 t+ r 这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
7 w7 B2 i; {+ ^$ M: `$ } rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)9 S+ Y" q e6 p( d" S0 d3 {
9 n- ]' l7 ]- V3 j4 E8 q5 }! m" L e
+ d9 b! j9 m, s2 a6 Y/ }8 p两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样). @& `) R) Z) G7 r6 \
/ { f+ A7 C" C! t7 n6 N
先将两个整数看作是正数,再作除法运算
% K; M* R/ r6 o0 j' c①能整除时,其值为0
0 q1 @7 d& k) @②不能整除时,其值=除数×(整商+1)-被除数, d, D5 t! k& ~) m
- ?" L, U% Q/ `7 A& H% w
例:mod(36,-10)=-4
/ t" ~; h7 A/ @即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
. F$ f) @/ P2 B" B; _* f% d/ f例:mod(9,1.2)=0.6
. f$ V! l9 o2 i! Z例:
8 U3 ^' N" L. _8 W7 t>> mod(5,2)8 ~2 @+ [" h5 |) T. h4 n
ans =1 %“除数”是正,“余数”就是正
5 `$ }' o0 H2 `) ^. U: I+ @>> mod(-5,2)
8 W$ R1 N* D6 w$ Zans =10 i" p. c9 c9 R/ p* H0 K' q
>> mod(5,-2)
9 W5 @/ X. K1 r6 X% t$ ^2 Tans =-1 %“除数”是负,“余数‘就是负* G% F/ s6 M/ R# G. s/ a- h& d
>> mod(-5,-2); F& s7 h; p" Y0 N5 D# P3 Z4 u
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
" q1 r0 S' D. M2 z2 F8 B>> rem(5,2)
3 Z& s2 b- h% I0 ]' zans =1 %“被除数”是正,“余数”就是正
& N+ \% ]% q' N) a' R o1 @>> rem(5,-2)4 w$ n5 X" t, ^1 w/ Y4 I; c# T9 d' D2 A
ans =1+ ?& v: Z. M2 ]) G; F. g2 K
>> rem(-5,2)$ P4 q, ~; y- j; {
ans =-1 %“被除数”是负,“余数”就是负
/ Q$ \5 V* F' o9 A& V$ h) f+ @* {>> rem(-5,-2)! ~9 j O+ l/ D. V8 T$ Y' {- x
ans =-1
! I2 P% W, e/ Z
) c2 j$ A3 T" k+ R; I2 @9 S# Z2 d8 w
慢慢体会,两者确实不一样. k( F D/ N {% Q0 W5 w
|
zan
|