- 在线时间
- 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】
2 Q* G0 {$ T8 U: [本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者5 o. L, [9 C" d6 T- ~* P
昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
2 B5 t( O9 f h" _9 }! k
0 ^# g1 Q: O7 T% G$ ^* `通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
6 D/ {& `. l5 O) \8 z( U2 ]9 D 当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
& A3 V6 K8 _& L/ J+ z 这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。* `" z' V7 z) Q
rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)5 w4 R3 ?6 g4 N- s
. A* F% B3 U3 e: U1 y A
# d* P' u' w' B, l6 e9 _, }4 h9 x
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
; i' P& e/ M+ \, Y! @) ]/ E4 P" p% U9 Z4 w* P
先将两个整数看作是正数,再作除法运算
. V3 C% d( r4 K6 @4 _! \①能整除时,其值为0
, {/ U+ }" e/ H( {②不能整除时,其值=除数×(整商+1)-被除数$ r! f& ?9 A% ^4 S( f6 x, U
* ?7 j# {/ ~& @0 W ^
例:mod(36,-10)=-42 a4 H' d% Y8 y9 l, W+ l4 ?
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
, a! r" ]2 k* D例:mod(9,1.2)=0.6
) K3 w( ~1 d& Z, q例:
; R) k S- s8 R& |' m>> mod(5,2)
/ ^9 h! m! N9 Xans =1 %“除数”是正,“余数”就是正
7 Y' u% H8 j3 X& j- N9 O6 ~" |9 V>> mod(-5,2)6 W) u1 ?! W$ s1 o8 J) @7 k- b; g
ans =1& S- l* C4 m8 I: R- I9 z
>> mod(5,-2)+ D/ Y, U. d- o; O! `
ans =-1 %“除数”是负,“余数‘就是负0 p% T* O2 L L6 L6 Q$ I
>> mod(-5,-2)
9 e' ] U( F! v! J/ ~ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
1 {3 ]' v; w* F0 P& ]' Y+ O4 c! Z>> rem(5,2)
: K) S3 k! R3 {: t& B. |' b8 S/ Eans =1 %“被除数”是正,“余数”就是正
7 v3 j% y9 U0 X( L: |>> rem(5,-2)
/ u7 n& k& P s S7 Y$ P2 y) t9 ^ans =1
! i3 j" F1 n; @9 x5 H>> rem(-5,2)9 s! b/ G+ B. U5 m f3 U
ans =-1 %“被除数”是负,“余数”就是负% w3 w! V+ [1 h2 i3 i
>> rem(-5,-2)
8 Z c# R p9 {4 E% Rans =-18 r% e6 B4 O3 w, e) \
5 s6 x) @) v' \; E9 A/ r# x
$ E4 [/ U9 U, x p0 ?
慢慢体会,两者确实不一样
$ G9 K1 p/ g6 t6 A: G |
zan
|