- 在线时间
- 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】
5 w! |( f* P9 y0 z* r" b本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者0 Z- v9 R/ C6 z w
昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:- \/ B1 @: J' M) Q, g# x8 k
7 h7 G9 ~2 B+ W# ]
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
& {8 t; j/ M5 X! [3 I) j 当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。$ j' }+ H& @2 N, E+ T, y
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
; {3 n& o3 a# R4 ]$ } rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
2 v$ m4 F, e: N9 O2 u. ]
+ o% X8 k% s; u1 V5 ~7 j5 e2 ~; j9 Q* ^ m5 n5 N0 {, K
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
O4 S7 Y- x3 v' P. S# z: H" l, @' @* |3 U! X; `
先将两个整数看作是正数,再作除法运算3 I% b# Y$ Y9 ~% l7 B" v
①能整除时,其值为01 N) y& {! m" `4 B9 m
②不能整除时,其值=除数×(整商+1)-被除数
" U# i, c+ J& V) X+ z
8 @! X& y) G, C$ ]( y例:mod(36,-10)=-4
3 w, E0 M1 Q% ^" s即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
- A7 [# A, z+ @. L' T# ~' B例:mod(9,1.2)=0.6
/ s G* A# J" L) h7 ~6 S例:% L. h1 Q5 _% g8 u0 p
>> mod(5,2)7 w1 ]$ e0 r4 T
ans =1 %“除数”是正,“余数”就是正) \; u* o, `: v1 R1 \) ^
>> mod(-5,2)) x9 ?: [" T o4 ^' S
ans =1
5 H! x" |1 D1 u! J7 h+ h; P; }>> mod(5,-2)$ @3 n: ]/ U( B
ans =-1 %“除数”是负,“余数‘就是负: Z% ^2 F; o4 E/ { G
>> mod(-5,-2)& R. L" [" H2 s5 t; k$ o% N1 E+ T
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同5 D( q9 m E ?0 s' |& [
>> rem(5,2)
8 f% x3 |7 R1 n/ A9 M& ?3 Yans =1 %“被除数”是正,“余数”就是正
* M% r% H3 `0 o>> rem(5,-2)
) _( _( \ M a9 u5 u/ l: F A" Zans =17 D) }/ u4 E5 v# g' J
>> rem(-5,2)8 W8 P3 }8 Y$ M) u
ans =-1 %“被除数”是负,“余数”就是负& A; @/ q9 v5 Y4 ]$ S
>> rem(-5,-2), R6 w. X* d5 B) f! E
ans =-1
$ U3 a$ T1 }' Z
6 E6 L' O+ E( q: T" f9 t a6 G( t! ]( T3 m) R X" u
慢慢体会,两者确实不一样
# \* \3 U' E# A6 |3 G* V2 D |
zan
|