数学函数如开方,求膜,阶乘,取整方法的比较

rem(x,y):求整除x/y的余数
mod(x,y):求模

rem(x,y)=x-y.*fix(x./y); (fix()向0取整)
mod(x,y)=x-y.*floor(x./y); (floor()向左取整)
如果x和y的符号相同(同为‘+’,同为‘-’),那么rem(x,y)=mod(x,y)(正数与正数,负数与负数,取整结果两个函数效果一样)
如果x和y的符号相反,那么mod(x,y)=rem(x,y)+y(正数与负数的取整,看你希望得到什么结果就选择用什么函数)
当正数与负数取余时,当得到的余数结果的符号希望跟除数(x)一样,用rem()函数;当得到的余数结果的符号希望跟被除数(y)一样,用mod()函数
例如:
rem(3,2)=1;mod(3,2)=1;
rem(-3,-2)=-1;mod(-3,-2)=-1;
rem(3,-2)=1;mod(3,-2)=-1;
rem(-3,2)=-1;mod(-3,2)=1;

mod(3,2)=rem(3,2)=1;
mod(3,-2)=rem(3,-2)-2=1-2=-1;
mod(-3,2)=rem(-3,2)+2=-1+2=1

开方函数
sqrt(9)=3=nthroot(9,2)=3;

nthroot(8,3)=2;%%8开3次方。


阶乘:

(1)用函数factorial(n)可计算阶乘,例如5!

>> factorial(5)

ans=120

(2)函数prod(1:n)可计算阶乘,例如prod(1:5)和prod(1:0)可计算5和0的阶乘。

>> prod(1:5)

ans =

   120

>> prod(1:0)

ans =

     1

(3)

可利用伽玛函数实现求解阶乘的目的,

例如gamma(6)=5!,gamma(7)=6!

>> gamma(6)

ans =

   120

>> gamma(7)

ans =

   720

(4)利用组合函数可beta和gamma函数组合求解阶乘

n!=(beta(n+1,n+1)*gamma(2*(n+1)))^(1/2)

或者n!=beta(n+1,1)*gamma(n+2)

>> (beta(5+1,5+1)*gamma(2*(5+1)))^(1/2)

ans =

  120.0000

>> (beta(6+1,6+1)*gamma(2*(6+1)))^(1/2)

ans =

  720.0000

>> beta(5+1,1)*gamma(5+2)

ans =

  120.0000

>> beta(6+1,1)*gamma(6+2)

ans =

   720

(5)编写MATLAB命令,实现阶乘

在代码窗口输入

function f=jiecheng(n);

if n==0;

f=1;

elseif n>=1

f=n*jiecheng(n-1);

end

运行上述命令,若想计算5的阶乘可直接输入函数调用命令

>> jiecheng(5) 即可



sqrt(a)  %返回a的算数平方根
log(a)   %自然对数,相当于ln(a)
log10(a) %以10为底的对数
log2(a)  %以2为底的对数
e写作exp(1),e^a写作exp(a);
    fix(x)为x数值取整。
A=randi([10,99],1)   %%fix(99*(rand()*2-1))表示10到99之间的随机数。
Matlab取整函数有: fix, floor, ceil, round.具体应用方法如下:
  fix朝零方向取整,如fix(-1.3)=-1; fix(1.3)=1;
    floor,顾名思义,就是地板,所以是取比它小的整数,即朝负无穷方向取整,如floor(-1.3)=-2; floor(1.3)=1;floor(-1.8)=-2,floor(1.8)=1
    ceil,与floor相反,它的意思是天花板,也就是取比它大的最小整数,即朝正无穷方向取整,如ceil(-1.3)=-1; ceil(1.3)=2;ceil(-1.8)=-1,ceil(1.8)=2
    round四舍五入到最近的整数,如round(-1.3)=-1;round(-1.52)=-2;round(1.3)=1;round(1.52)=2。



posted @ 2017-03-04 12:04  后知、后觉  阅读(626)  评论(0编辑  收藏  举报