第8章 数学函数通览
第8章 数学函数通览
8.1 初等数学函数运算
8.1.1 三角函数
| 函数名 | 功能描述 | 函数名 | 功能描述 |
|---|---|---|---|
| sin | 正弦 | sec | 正割 |
| sind | 正弦,输入值以“°”为单位 | secd | 正割,输入值以“°”为单位 |
| sinpi | 准确计算sin(X*pi) | sech | 双曲正割 |
| sinh | 双曲正弦 | asec | 反正割 |
| asin | 反正弦 | asecd | 反正割,输出值以“°”为单位 |
| asind | 反正弦,输出值以“°”为单位 | asech | 反双曲正割 |
| asinh | 反双曲正弦 | csc | 余割 |
| cos | 余弦 | cscd | 余割,输入值以“°”为单位 |
| cosd | 余弦,输入值以“°”为单位 | csch | 双曲余割 |
| cospi | 准确计算cos(X*pi) | acsc | 反余割 |
| cosh | 双曲余弦 | acscd | 反余割,输出值以“°”为单位 |
| acos | 反余弦 | acsch | 反双曲余割 |
| acosd | 反余弦,输出值以“°”为单位 | cot | 余切 |
| acosh | 反双曲余弦 | cotd | 余切,输入值以“°”为单位 |
| tan | 正切 | coth | 双曲余切 |
| tand | 正切,输入值以“°”为单位 | acot | 反余切 |
| tanh | 双曲正切 | acotd | 反余切,输出值以“°”为单位 |
| atan | 反正切 | acoth | 反双曲余切 |
| atand | 反正切,输出值以“°”为单位 | hypot | 平方和的平方根(斜边) |
| atan2 | 四象限反正切 | deg2rad | 将角以“°”为单位转换为以弧度为单位 |
| atan2d | 四象限反正切(以“°”为单位) | rad2deg | 将角的单位从弧度转换为“°” |
| atanh | 反双曲正切 | ... | ... |
>> x=0:0.05*pi:2*pi;
>> y1=sin(x);
>> y2=cos(x);
>> plot(x,y1,'b-',x,y2,'ro-')
>> xlabel('X取值'); ylabel('函数值');
>> legend('正弦函数','余弦函数')
8.1.2 指数和对数函数
| 函数名 | 功能描述 | 函数名 | 功能描述 |
|---|---|---|---|
| exp | 指数 | realpow | 幂,若结果是复数则报错 |
| expm1 | 准确计算exp(x)减去1的值 | reallog | 自然对数,若输入不是正数则报错 |
| log | 自然对数(以e为底) | realsqrt | 开平方根,若输入不是正数则报错 |
| log1p | 准确计算log(1+x)的值 | sqrt | 开平方根 |
| log10 | 常用对数(以10为底) | nthroot | 求x的n次方根 |
| log2 | 以2为底的对数 | nextpow2 | 返回满足2^P>=abs(N)的最小正整数P,N为输入 |
>> x1=-1:0.2:6; x2=0.1:0.3:6;
>> y1=exp(x1); y2=log(x2);
>> subplot(1,2,1); plot(x1,y1,'b-')
>> xlabel('自变量取值'); ylabel('函数值');
>> legend('e^x');
>> subplot(1,2,2); plot(x2,y2,'ro-')
>> xlabel('自变量取值'); ylabel('函数值');
>> legend('logx');
8.1.3 复数函数
| 函数名 | 功能描述 | 函数名 | 功能描述 |
|---|---|---|---|
| abs | 绝对值(复数的模) | imag | 复数的虚部 |
| angle | 复数的相角 | isreal | 是否为实数矩阵 |
| complex | 用实部和虚部构造一个复数 | real | 复数的实部 |
| conj | 复数的共轭 | sign | 符号函数 |
| cplxpair | 把复数矩阵排列成复共轭对 | unwrap | 调整矩阵元素的相位 |
| i | 虚数单位 | j | 虚数单位 |
Q=unwrap(P) % 当相位大于默认值π时,校正相位
Q=unwrap(P,tol) % 用tol设定值
Q=unwrap(P,[],dim) % 用默认阈值π在给定维dim上做相位校正
Q=unwrap(P,tol,dim) % 用阈值tol在给定维dim上做相位校正
B=cplxpair(A) % 对沿复数数组不同维度的元素排序,并将复共轭对组组合在一起
B=cplxpair(A,tol) % 覆盖默认容差
B=cplxpair(A,[],dim) % 沿着标量dim指定的维度对A排序
B=cplxpair(A,tol,dim) % 沿着指定维度对A排序并覆盖默认容差
>> t=linspace(0,6*pi,201);
>> x=t/pi.*cos(t);
>> y=t/pi.*sin(t);
>> plot(x,y) % 绘制螺旋线
>> P=atan2(y,x); % 基于螺旋线x、y坐标求其相位角,返回函数在[-n,n]区间的角度值
>> plot(t,P) % 相位角有不连续性
>> Q=unwrap(P); % 使用unwrap函数消除不连续性
>> plot(t,Q) % 平移后的相位角
8.1.4 截断和求余函数
| 函数名 | 功能描述 | 函数名 | 功能描述 |
|---|---|---|---|
| fix | 向零取整 | mod | 除法求余(与除数同号) |
| floor | 向负无穷方向取整 | rem | 除法求余(与被除数同号) |
| ceil | 向正无穷方向取整 | sign | 符号函数 |
| round | 四舍五入 | idivide | 带有舍入选项的整除 |
>> A=[-2.88 -2.35 2.35 2.88];
>> fix_A=fix(A)
fix_A =
-2 -2 2 2
>> floor_A=floor(A)
floor_A =
-3 -3 2 2
>> ceil_A=ceil(A)
ceil_A =
-2 -2 3 3
>> round_A=round(A)
round_A =
-3 -2 2 3
>> A=[12 -12 12 -12];
>> B=[7 -7 -7 7];
>> rem_C=rem(A,B)
rem_C =
5 -5 5 -5
>> mod_C=mod(A,B)
mod_C =
5 -5 -2 2
8.2 特殊数学函数运算
8.2.1 特殊函数
| 函数名 | 功能描述 | 函数名 | 功能描述 |
|---|---|---|---|
| airy | Airy函数 | erfc | 补余误差函数:erfc(x)=1-erf(x) |
| besseli | 第一类修正Bessel函数 | erfcinv | 逆补余误差函数 |
| besselj | 第一类Bessel函数 | erfcx | 换算补余误差函数erfcx(x)=exp(x^2)*erfc(x) |
| besselk | 第二类修正Bessel函数 | erfinv | 误差函数的逆函数 |
| bessely | 第二类Bessel函数 | expint | 指数积分函数 |
| besselh | 第三类Bessel函数(Hankel函数) | gamma | Gamma函数 |
| beta | Beta函数 | gammainc | 不完全Gamma函数 |
| betainc | 不完全Beta函数 | gammaincinv | 逆不完全Gamma函数 |
| betaincinv | Beta逆累积分布函数 | gammaln | 对数Gamma函数 |
| betaln | Beta函数的对数 | psi | 多Γ函数 |
| ellipj | Jacobi椭圆函数 | legendre | 连带勒让德函数 |
| ellipke | 第一类和第二类完全椭圆积分 | cross | 矢量叉乘 |
| erf | 误差函数 | dot | 矢量点乘 |
8.2.1.1 Airy函数
Airy函数是微分方程 \(\dfrac{\mathrm{d}^2 W}{\mathrm{d} Z^2} - ZW = 0\) 的解。有两类Airy函数:第一类Airy函数 \(A_i(Z)\) 和第二类Airy函数 \(B_i(Z)\)。它们可以用改进的第一类Bessel函数 \(I_v(Z)\) 和改进的第二类Bessel函数 \(K_v(Z)\) 定义,表达式如下:
W=airy(Z) % 为Z的每个元素返回第一类Airy函数Aᵢ(Z)
W=airy(k,Z) % 根据k值返回Airy函数,k=0返回Aᵢ(Z),k=1返回Aᵢ'(Z),k=2返回Bᵢ(Z),k=3返回Bᵢ'(Z)
W=airy(k,Z,scale) % 根据选择的k和scale缩放生成Airy函数
8.2.1.2 Bessel函数
Bessel函数是微分方程 \(Z^2 \dfrac{\mathrm{d}^2 y}{\mathrm{d} Z^2} + Z \dfrac{\mathrm{d} y}{\mathrm{d} Z} + (Z^2 - v^2)y = 0\)(Bessel方程)的解,其中 \(v\) 是常量。该方程有两个线性无关的解,第一类Bessel函数 \(J_v(Z)\) 和第二类Bessel函数 \(Y_v(Z)\),它们的表达式如下:
有时也采用Hankel函数来表示Bessel方程,它们是第一类Bessel函数和第二类Bessel函数的线性组合,即
Hankel函数 \(H_v^{(k)}(Z)\) 称为第三类Bessel函数。
J=besselj(nu,Z) % 为数组Z中的每个元素计算第一类Besse1函数Jᵥ(Z)
J=besselj(nu,Z,scale) % 指定是否呈指数缩放第一类Bessel函数以避免溢出或精度损失
Y=bessely(nu,Z) % 返回第二类Bessel函数Yᵥ(Z)
Y=bessely(nu,Z,scale) % 指定是否呈指数缩放第二类Bessel函数以避免溢出或精度损失
H=besselh(nu,Z) % 为数组Z中的每个元素计算第一类Hankel函数
H=besselh(nu,K,Z) % 为数组Z中的每个元素计算第一类或第二类Hankel函数,K为1或2
H=besselh(nu,K,Z,scale) % 指定是否缩放Hankel函数以避免溢出或精度损失
说明:如果scale为1,函数besselj、bessely输出按因子exp(-abs(imag(Z)))进行缩放;函数besselh输出时,第一类Hankel函数 \(H_v^{(1)}(Z)\) 按 \(\mathrm{e}^{-\mathrm{i}Z}\) 进行缩放,第二类Hankel函数 \(H_v^{(2)}(Z)\) 按 \(\mathrm{e}^{+\mathrm{i}Z}\) 进行缩放。
改进的Bessel函数是微分方程 \(Z^2 \dfrac{\mathrm{d}^2 y}{\mathrm{d} Z^2} + Z \dfrac{\mathrm{d} y}{\mathrm{d} Z} + (Z^2 - v^2)y = 0\) 的解,其中 \(v\) 是常量。该方程有两个线性无关的解,第一类改进的Bessel函数 \(I_v(Z)\) 和第二类改进的Bessel函数 \(K_v(Z)\),它们的表达式如下:
I=besseli(nu,Z) % 返回第一类改进的Bessel函数Iᵥ(Z)
I=besseli(nu,Z,1) % 返回besseli(nu,Z).*exp(-abs(real(Z)))
K=besselk(nu,Z) % 返回第二类改进的Bessel函数Kᵥ(Z)
K=besselk(nu,Z,1) % 返回besselk(nu,Z).*exp(Z)
8.2.1.3 Gamma函数和Beta函数
Gamma函数:\(\displaystyle \Gamma(a) = \int_0^{\infty} \mathrm{e}^{-t} t^{a-1} \,\mathrm{d}t\)。
不完全Gamma函数:\(\displaystyle P(x,a) = \dfrac{1}{\Gamma(a)} \int_0^x \mathrm{e}^{-t} t^{a-1} \,\mathrm{d}t\)。
多 \(\Gamma\) 函数:\(\displaystyle \varPsi_n(x) = \dfrac{\mathrm{d}^{n-1} \varPsi(x)}{\mathrm{d} x^{n-1}}\),其中 \(\displaystyle \varPsi(x) = \dfrac{\Gamma'(x)}{\Gamma(x)} = \dfrac{\mathrm{d} \ln(\Gamma(x))}{\mathrm{d} x}\),\(\displaystyle \varPsi_n(x)\) 称为 \((n+1) \Gamma\) 函数,如\(\displaystyle \varPsi_3(x)\) 称为 \(\displaystyle 4 \Gamma\) 函数。
Beta函数:\(\displaystyle B(z,w) = \int_0^1 t^{z-1} (1-t)^{w-1} \,\mathrm{d}t = \dfrac{\Gamma(z) \Gamma(w)}{\Gamma(z+w)}\)。
不完全Beta函数:\(\displaystyle I(z,w) = \dfrac{1}{B(z,w)} \int_0^x t^{z-1} (1-t)^{w-1} \,\mathrm{d}t\)。
Y=gamma(a) % 返回Γ(a)
Y=gammainc(x,a) % 返回不完全Gamma函数P(x,a)
Y=gammainc(X,A,tail) % 当tail='lower'时返回P(x,a),tail='upper'时返回1-P(x,a)
Y=gammaln(A) % 返回Gamma函数的对数,避免采用1og(gamma(a))造成的溢出情况
Y=psi(x) % 返回双Γ函数Ψ₁(x)
Y=psi(k,x) % 返回k+2Γ函数Ψₖ₊₁(x)
B=beta(z,w) % 返回Beta函数B(z,w)
I=betainc(x,z,w) % 返回不完全Beta函数Iₓ(z,w)
L=betaln(z,w) % 返回ln(B(z,w)),可以避免采用log(beta(a))造成的溢出情况
8.2.1.4 Jacobi椭圆函数和完全椭圆积分
Jacobi椭圆函数sn(u)、cn(u)和dn(u)是定义在勒让德第一类椭圆积分基础上的。其中,勒让德第一类椭圆积分表达式如下:
第一类完全椭圆积分 \(K(m)\) 也是定义在勒让德第一类椭圆积分基础上的( \(\phi = \dfrac{\pi}{2}\) ),其表达式如下:
[SN,CN,DN]=el1ipj(U,M) % 返回Jacobi椭圆函数sn(u)、cn(u)和dn(u)
[SN,CN,DN]=ellipj(U,M,tol) % 以指定精度tol计算Jacobi椭圆函数,默认精度是eps
K=ellipke(M) % 返回第一类完全椭圆积分K(m)
[K,E]=ellipke(M) % 返回第一类完全椭圆积分K(m)和第二类完全椭圆积分E(m)
[K,E]=ellipke(M,tol) % 以指定精度tol计算完全椭圆积分
8.2.1.5 误差函数
误差函数:\(\displaystyle \mathrm{erf}(x) = \dfrac{2}{\sqrt{\pi}} \int_0^x \mathrm{e}^{-t^2} \,\mathrm{d} t\)。
补余误差函数:\(\displaystyle \mathrm{erfc}(x) = \dfrac{2}{\sqrt{\pi}} \int_x^{\infty} \mathrm{e}^{-t^2} \,\mathrm{d} t = 1 - \mathrm{erf}(x)\)。
Y=erf(X) % 返回误差函数
Y=erfc(X) % 返回补余误差函数1-erf(x),当erf(x)接近1时,使用erfc函数替换1-erf(x)以提高准确性
Y=erfcx(X) % 返回换算补余误差函数exp(x^2)*erfc(x)的值,避免下溢或溢出错误
X=erfinv(Y) % 返回误差函数的逆函数,对于[-1 1]区间之外的输入,erfinv返回NaN
X=erfcinv(Y) % 返回补余误差函数的反函数
>> erf(0.66) % 求值的误差函数
ans =
0.6494
>> V=[-0.8 0 3 0.82];
>> erf(V) % 求向量元素的误差函数
ans =
-0.7421 0 1.0000 0.7538
>> M=[0.59 -0.41; 6.1 -1.9];
>> erf(M) % 求矩阵元素的误差函数
ans =
0.5959 -0.4380
1.0000 -0.9928
8.2.1.6 指数积分函数
指数积分表达式为\(\displaystyle E_1(x) = \int_x^{\infty} \dfrac{\mathrm{e}^{-t}}{t} \,\mathrm{d} t\)。
Y = expint(X) % 计算X中每个元素的指数积分
8.2.2 坐标变换函数
| 函数名 | 功能描述 | 函数名 | 功能描述 |
|---|---|---|---|
| cart2sph | 将笛卡儿坐标系转换为球坐标系 | sph2cart | 将球坐标系转换为笛卡儿坐标系 |
| cart2pol | 将笛卡儿坐标系转换为极坐标系 | hsv2rgb | 将灰度饱和度颜色空间转换为RGB颜色空间 |
| pol2cart | 将极坐标系转换为笛卡儿坐标系 | rgb2hsv | 将RGB颜色空间转换为灰度饱和度颜色空间 |
>> [a,b,c]=pol2cart(1,1,1)
a =
0.5403
b =
0.8415
c =
1
>> [d,e,f]=sph2cart(1,1,1)
d =
0.2919
e =
0.4546
f =
0.8415
8.2.3 数论函数
| 函数名 | 功能描述 | 函数名 | 功能描述 | 函数名 | 功能描述 |
|---|---|---|---|---|---|
| factor | 分解质因子 | lcm | 最小公倍数 | primes | 小于或等于输入值的素数 |
| factorial | 阶乘 | nchoosek | 二项式系数或所有组合 | rat | 把实数近似为有理数 |
| gcd | 最大公因数 | perms | 给出向量的所有置换(可能的排列) | rats | 利用rat函数显示输出 |
| isprime | 判断是否为素数 | matchpairs | 求解线性分配问题 | ... | ... |
>> f=factor(686) % 求质因数
f =
2 7 7 7
>> f=factorial(5) % 求阶乘
f =
120
>> A=[-5 17; 10 0];
>> B=[-15 3; 100 0];
>> G=gcd(A,B) % 求A和B元素的最大公因数,gcd(0,0)返回0
G =
5 1
10 0

浙公网安备 33010602011771号