内部函数是由 MATLAB 系统根据一般用户的需要编制并提供给用户使用的一组程序,也称为系统函数或库函数。
MATLAB提供了许多数学函数,函数的自变量规定为矩阵变量,运算法则是将函数逐项作用于矩阵的元素上,因而运算的结果是一个与自变量具有相同维数和大小的矩阵,即结果矩阵与自变量矩阵同型。
>> A = [4,2;3,6]
A =
4 2
3 6
>> B = sqrt(A)
B =
2.0000 1.4142
1.7321 2.4495
常用的数学函数
函数名 | 功能 | 函数名 | 功能 |
---|---|---|---|
sin/sind | 正弦函数,输入值为弧度/角度 | abs | 绝对值函数 |
cos/cosd | 余弦函数,输入值为弧度/角度 | rem | 求余 |
tan/tand | 正切函数,输入值为弧度/角度 | mod | 求模 |
asin/asind | 反正弦函数,返回值为弧度/角度 | fix | 向零方向取整 |
acos/acosd | 反余弦函数,返回值为弧度/角度 | floor | 不大于自变量的最大整数 |
atan/atand | 反正切函数,返回值为弧度/角度 | ceil | 不小于自变量的最小整数 |
sinh/asinh | 双曲正弦函数/反双曲正弦函数 | round | 四舍五入到最邻近的整数 |
cosh/acosh | 双曲余弦函数/反双曲余弦函数 | sign | 符号函数 |
tanh/atanh | 双曲正切函数/反双曲正切函数 | gcd | 最大公约数 |
sqrt | 平方根函数 | lcm | 最小公倍数 |
log | 自然对数函数 | factorial | 阶乘 |
log10 | 常用对数函数 | isprime | 判断是否为素数 |
log2 | 以2为底的对数函数 | primes | 生成素数列表 |
exp | 自然指数函数 | perms | 生成所有排列 |
pow2 | 2的幂 | randperm | 生成任意排列 |
使用说明:
三角函数有以弧度为单位的函数和以角度为单位的函数,以角度为单位的函数在函数名后面加“d”,以示区别。
abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。例如, abs(-4). abs(3+4i)、abs(‘a’)的值分别为4、5、97。
求余运算和求模运算有相同的地方但又不完全一致,主要的区别在于对负整数进行除法运算时的操作不同。对于整数a、 b来说,求余运算或求模运算的方法都是先求整数商c=a/b,
再求余数或模r=a-c*b。求余运算在取c的值时,向0方向取整(fix函数),而求模运算在计算c的值时,向负无穷方向取整(floor函数)。rem与 mod 函数的区别是,当b≠0时,rem(a,b)=a-b.*fix(a./b),而mod(a,b)=a-b.*floor(a/b);当b=0时,rem(a,0)=NaN 而mod(a,0)=a。
显然,如果a、b符号相同,那么rem(a,b)=mod(a,b)。如果a、b符号相反,那么
mod(a,b)=rem(a,b)+b。rem(a,b)的符号与a相同,而 mod(a,b)的符号与b相同。例如,rem(7,4)=mod(7,4)=3;rem(-7,-4)=mod(-7,-4)=-3;rem(7,-4)=3,而 mod(7,-4)=-1:rem(-7,4)-3,而mod(-7,4)=1 。用于取整的函数有fix、floor、ceil、round,要注意它们的区别。round 函数的作用是四舍五入。设a为最靠近x的正整数(|x|≥a),则其余3个函数的区别:
设x=2.45,则fix(x)、floor(x)、ceil(x)、round(x)的结果分别是2、2、3、2。又设x=-2.65,则fix(x)、floor(x)、 ceil(x)、 round(x)的结果分别是-2、-3、-2、-3。
- 关于符号函数。当x<0时,sign(x)=-1:当x=0时,sign(x)=0:当x>0时,sign(x)=1。
MATLAB还提供了一些直接作用于矩阵的超越函数,这些函数名都在上述内部函数名之后缀以m,并规定输入参数A必须是方阵。
矩阵平方根
sqrtm(A)计算矩阵A的平方根√A。
>> A = [4,2;3,6];
>> B = sqrtm(A)
B =
1.9171 0.4652
0.6978 2.3823
>> B * B
ans =
4.0000 2.0000
3.0000 6.0000
若A为实对称正定矩阵或复埃尔米特(Hermitian)正定阵,则一定能算出它的平方根。但某些矩阵,如 A=[0,1;0,0]就得不到平方根。若矩阵A含有负的特征值,则sqrtm(A)将会得到一个复矩阵。
>> A = [4,9;16,25];
>> eig(A)
ans =
-1.4452
30.4452
>> B = sqrtm(A)
B =
0.9421 + 0.9969i 1.5572 - 0.3393i
2.7683 - 0.6032i 4.5756 + 0.2053i
矩阵对数
logm(A)计算矩阵4 的自然对数。此函数输入参数的条件与输出结果间的关系和函数sqrtm(A)完全一样。
>> A = [4,9;1,5];
>> L = logm(A);
>> L
L =
1.0639 2.4308
0.2701 1.3340
矩阵指数
expm(A)的功能是求矩阵指数e的A次幂。
L =
1.0639 2.4308
0.2701 1.3340
>> B = expm(L)
B =
4.0000 9.0000
1.0000 5.0000
普通矩阵函数
funm(A,@fun)对方阵A计算由 fun定义的函数的矩阵函数值。例如,当fun取exp时,funm(A,@exp)可以计算矩阵A的指数,与 expm(A)的计算结果一样。
>> A = [2,-1;1,0];
>> funm(A,@exp)
ans =
5.4366 -2.7183
2.7183 0
>> expm(A)
ans =
5.4366 -2.7183
2.7183 0
funm函数可以用于 exp、log . sin、cos, sinh和 cosh等函数,但求矩阵的平方根只能用sqrtm函数。