数学函数如开方,求膜,阶乘,取整方法的比较
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 =
>> prod(1:0)
ans =
(3)
可利用伽玛函数实现求解阶乘的目的,
例如gamma(6)=5!,gamma(7)=6!
>> gamma(6)
ans =
>> gamma(7)
ans =
(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 =
>> (beta(6+1,6+1)*gamma(2*(6+1)))^(1/2)
ans =
>> beta(5+1,1)*gamma(5+2)
ans =
>> beta(6+1,1)*gamma(6+2)
ans =
(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。