a = airy (z) ¶a = airy (k, z) ¶a = airy (k, z, scale) ¶[a, ierr] = airy (…) ¶计算第一类与第二类艾里函数及其导数。
K 函数 缩放因子(若 scale 为真) --- -------- --------------------------------------- 0 Ai (Z) exp ((2/3) * Z * sqrt (Z)) 1 dAi(Z)/dZ exp ((2/3) * Z * sqrt (Z)) 2 Bi (Z) exp (-abs (real ((2/3) * Z * sqrt (Z)))) 3 dBi(Z)/dZ exp (-abs (real ((2/3) * Z * sqrt (Z))))
函数调用 airy (z) 等价于 airy (0, z)。
可选的第三个输入参数 scale 决定是否应用上述缩放。默认值为 false(不缩放)。
结果 a 的大小与 z 相同。
可选的输出参数 ierr 包含以下状态信息,其大小与结果相同。
NaN。Inf。NaN。J = besselj (alpha, x) ¶J = besselj (alpha, x, opt) ¶[J, ierr] = besselj (…) ¶计算第一类贝塞尔函数。
贝塞尔函数的阶数 alpha 必须为实数。求值点 x 可以是复数。
如果可选参数 opt 为 1 或 true,则结果 J 乘以 exp (-abs (imag (x)))。
如果 alpha 是标量,则结果的大小与 x 相同。如果 x 是标量,则结果的大小与 alpha 相同。如果 alpha 是行向量而 x 是列向量,则结果是一个矩阵,其行数为 length (x),列数为 length (alpha)。否则,alpha 和 x 必须符合维度要求,结果大小与之相同。
如果指定了输出参数,ierr 包含以下状态信息,其大小与结果相同。
NaN。Inf。NaN。Y = bessely (alpha, x) ¶Y = bessely (alpha, x, opt) ¶[Y, ierr] = bessely (…) ¶计算第二类贝塞尔函数。
贝塞尔函数的阶数 alpha 必须为实数。求值点 x 可以是复数。
如果可选参数 opt 为 1 或 true,则结果 Y 乘以 exp (-abs (imag (x)))。
如果 alpha 是标量,则结果的大小与 x 相同。如果 x 是标量,则结果的大小与 alpha 相同。如果 alpha 是行向量而 x 是列向量,则结果是一个矩阵,其行数为 length (x),列数为 length (alpha)。否则,alpha 和 x 必须符合维度要求,结果大小与之相同。
如果指定了输出参数,ierr 包含以下状态信息,其大小与结果相同。
NaN。Inf。NaN。NaN。I = besseli (alpha, x) ¶I = besseli (alpha, x, opt) ¶[I, ierr] = besseli (…) ¶计算第一类修正贝塞尔函数。
贝塞尔函数的阶数 alpha 必须为实数。求值点 x 可以是复数。
如果可选参数 opt 为 1 或 true,则结果 I 乘以 exp (-abs (real (x)))。
如果 alpha 是标量,则结果的大小与 x 相同。如果 x 是标量,则结果的大小与 alpha 相同。如果 alpha 是行向量而 x 是列向量,则结果是一个矩阵,其行数为 length (x),列数为 length (alpha)。否则,alpha 和 x 必须符合维度要求,结果大小与之相同。
如果指定了输出参数,ierr 包含以下状态信息,其大小与结果相同。
NaN。Inf。NaN。NaN。K = besselk (alpha, x) ¶K = besselk (alpha, x, opt) ¶[K, ierr] = besselk (…) ¶计算第二类修正贝塞尔函数。
贝塞尔函数的阶数 alpha 必须为实数。求值点 x 可以是复数。
如果可选参数 opt 为 1 或 true,则结果 K 乘以 exp (x)。
如果 alpha 是标量,则结果的大小与 x 相同。如果 x 是标量,则结果的大小与 alpha 相同。如果 alpha 是行向量而 x 是列向量,则结果是一个矩阵,其行数为 length (x),列数为 length (alpha)。否则,alpha 和 x 必须符合维度要求,结果大小与之相同。
如果指定了输出参数,ierr 包含以下状态信息,其大小与结果相同。
NaN。Inf。NaN。NaN。H = besselh (alpha, x) ¶H = besselh (alpha, k, x) ¶H = besselh (alpha, k, x, opt) ¶[H, ierr] = besselh (…) ¶计算第三类贝塞尔函数(汉克尔函数)。
贝塞尔函数的阶数 alpha 必须为实数。汉克尔函数的类型由 k 指定,可以是第一类(k = 1)或第二类(k = 2)。默认值为第一类汉克尔函数。求值点 x 可以是复数。
如果可选参数 opt 为 1 或 true,则当 k = 1 时结果乘以 exp (-I*x),当 k = 2 时乘以 exp (I*x)。
如果 alpha 是标量,则结果的大小与 x 相同。如果 x 是标量,则结果的大小与 alpha 相同。如果 alpha 是行向量而 x 是列向量,则结果是一个矩阵,其行数为 length (x),列数为 length (alpha)。否则,alpha 和 x 必须符合维度要求,结果大小与之相同。
如果指定了输出参数,ierr 包含以下状态信息,其大小与结果相同。
NaN。Inf。NaN。NaN。y = beta (a, b) ¶计算实数输入 a 和 b 的 Beta 函数。
Beta 函数的定义为:
beta (a, b) = gamma (a) * gamma (b) / gamma (a + b).
Beta 函数的值可能变得非常大,因此使用输出的对数通常比直接使用函数本身更有用。请参阅 betaln,了解如何高效计算 Beta 函数的对数。
另请参阅:betaln、betainc、betaincinv。
I = betainc (x, a, b) ¶I = betainc (x, a, b, tail) ¶计算不完全 Beta 函数。
其定义为:
x
/
1 |
I_x (a, b) = ---------- | t^(a-1) (1-t)^(b-1) dt
beta (a,b) |
/
0
其中实数 x 在区间 [0,1] 内。输入参数 a 和 b 必须为实数且严格为正(> 0)。如果其中一个输入不是标量,则其他输入必须为标量或具有兼容的维度。
默认情况下,tail 为 "lower",计算从 0 到 x 积分的不完全 Beta 函数。如果 tail 为 "upper",则计算从 x 到 1 积分的互补函数。这两种选择的关系为:
betainc (x, a, b, "upper") = 1 - betainc (x, a, b, "lower")。
betainc 使用比简单减法更精密的算法,以确保在 "lower" 值很小时也能获得数值精确的结果。
参考文献:A. Cuyt, V. Brevik Petersen, B. Verdonk, H. Waadeland, W.B. Jones, Handbook of Continued Fractions for Special Functions, 第 18 章。
另请参阅:beta、betaincinv、betaln。
x = betaincinv (y, a, b) ¶x = betaincinv (y, a, b, "lower") ¶x = betaincinv (y, a, b, "upper") ¶计算归一化不完全 Beta 函数的反函数。
归一化不完全 Beta 函数的定义为:
x
/
1 |
I_x (a, b) = ---------- | t^(a-1) (1-t)^(b-1) dt
beta (a,b) |
/
0
如果两个输入是标量,则对另一个输入的每个元素返回 betaincinv (y, a, b) 的结果。
如果两个或更多输入不是标量,则它们的大小必须一致,betaincinv 将逐元素应用。
变量 y 必须在区间 [0,1] 内,而 a 和 b 必须为实数且严格为正。
默认情况下,tail 为 "lower",计算从 0 到 x 积分的不完全 Beta 函数的反函数。如果 tail 为 "upper",则对从 x 到 1 积分的互补函数求逆。
该函数通过标准的牛顿法求解以下方程来计算:
y - betainc (x, a, b) = 0
lnb = betaln (a, b) ¶计算实数输入 a 和 b 的 Beta 函数的自然对数。
betaln 定义为:
betaln (a, b) = log (beta (a, b))
其计算方式旨在减少下溢的发生。
Beta 函数的值可能变得非常大,因此使用输出的对数通常比直接使用函数本身更有用。
另请参阅:beta、betainc、betaincinv、gammaln。
b = bincoeff (n, k) ¶返回 n 和 k 的二项式系数。
二项式系数的定义为:
/ \ | n | n (n-1) (n-2) ... (n-k+1) | | = ------------------------- | k | k! \ /
例如:
bincoeff (5, 2) ⇒ 10
在大多数情况下,对于小的标量整数参数,nchoosek 函数更快。它还会在参数较大时警告精度损失。
另请参阅:nchoosek。
k = commutation_matrix (m, n) ¶返回交换矩阵 K(m,n),它是唯一的 m*n 乘 m*n 矩阵,满足对所有 m 乘 n 矩阵 A 有 K(m,n) * vec(A) = vec(A')。
如果只给一个参数 m,则返回 K(m,m)。
参见 Magnus 和 Neudecker, Matrix Differential Calculus with Applications in Statistics and Econometrics, 1988。
y = cosint (x) ¶计算余弦积分函数:
+oo
/
Ci (x) = - | (cos (t)) / t dt
/
x
其等价定义为:
x
/
| cos (t) - 1
Ci (x) = gamma + log (x) + | ------------- dt
| t
/
0
参考文献:
M. Abramowitz 和 I.A. Stegun, Handbook of Mathematical Functions, 1964。
d = duplication_matrix (n) ¶返回复制矩阵 Dn,它是唯一的 N^2 乘 N*(N+1)/2 矩阵,满足对所有对称 N 乘 N 矩阵 A 有 Dn * vech (A) = vec (A)。
参见 Magnus 和 Neudecker, Matrix Differential Calculus with Applications in Statistics and Econometrics, 1988。
v = dawson (z) ¶计算道森函数(缩放虚误差函数)。
道森函数的定义为:
(sqrt (pi) / 2) * exp (-z^2) * erfi (z)
[sn, cn, dn, err] = ellipj (u, m) ¶[sn, cn, dn, err] = ellipj (u, m, tol) ¶计算复自变量 u 和实参数 m 的雅可比椭圆函数 sn、cn 和 dn。
如果 m 是标量,则结果的大小与 u 相同。如果 u 是标量,则结果的大小与 m 相同。如果 u 是列向量而 m 是行向量,则结果是一个矩阵,其行数为 length (u),列数为 length (m)。否则,u 和 m 的大小必须一致,结果大小与输入相同。
u 的值可以是复数。m 的值必须满足 0 ≤ m ≤ 1。
可选的输入参数 tol 当前被忽略(MATLAB 使用它来实现更快但精度较低的近似)。
如果指定了输出参数,err 包含以下状态信息,其大小与结果相同。
NaN。参考文献:Milton Abramowitz 和 Irene A Stegun, Handbook of Mathematical Functions, 第 16 章(第 16.4、16.13 和 16.15 节), Dover, 1965。
另请参阅:ellipke。
k = ellipke (m) ¶k = ellipke (m, tol) ¶[k, e] = ellipke (…) ¶计算第一类 K(m) 和第二类 E(m) 的完全椭圆积分。
m 必须是标量或实数数组,满足 -Inf ≤ m ≤ 1。
可选的输入参数 tol 控制算法的停止容差,默认为 eps (class (m))。可以增大容差以进行更快但精度较低的近似计算。
当只使用一个输出参数调用时,只返回第一类椭圆积分。
数学说明:
第一类椭圆积分的定义为:
1
/ dt
K (m) = | ------------------------------
/ sqrt ((1 - t^2)*(1 - m*t^2))
0
第二类椭圆积分的定义为:
1
/ sqrt (1 - m*t^2)
E (m) = | ------------------ dt
/ sqrt (1 - t^2)
0
参考文献:Milton Abramowitz 和 Irene A. Stegun, Handbook of Mathematical Functions, 第 17 章, Dover, 1965。
另请参阅:ellipj。
v = erf (z) ¶计算误差函数。
误差函数的定义为:
z
2 /
erf (z) = --------- * | e^(-t^2) dt
sqrt (pi) /
t=0
v = erfcx (z) ¶计算缩放互补误差函数。
缩放互补误差函数的定义为:
exp (z^2) * erfc (z)
y = expint (x) ¶计算指数积分。
指数积分的定义为:
+oo
/
| exp (-t)
E_1 (x) = | -------- dt
| t
/
x
注意:为保持兼容性,此函数使用 MATLAB 对指数积分的定义。大多数其他资料将此特定值称为 E_1 (x),而将指数积分定义为:
+oo
/
| exp (-t)
Ei (x) = - | -------- dt
| t
/
-x
对于 x 的正实数值,这两种定义的关系为 E_1 (-x) = -Ei (x) - i*pi。
参考文献:
M. Abramowitz 和 I.A. Stegun, Handbook of Mathematical Functions, 1964。
N. Bleistein 和 R.A. Handelsman, Asymptotic expansions of integrals, 1986。
v = gamma (z) ¶计算 Gamma 函数。
Gamma 函数的定义为:
infinity
/
gamma (z) = | t^(z-1) exp (-t) dt.
/
t=0
编程说明:即使对于较小的输入值,Gamma 函数的值也可能变得非常大。在许多情况下,使用 Gamma 函数的自然对数(gammaln)进行计算可能更可取,以最大程度减少精度损失。最终结果即为 exp (result_using_gammaln)。
y = gammainc (x, a) ¶y = gammainc (x, a, tail) ¶计算归一化不完全 Gamma 函数。
其定义为:
x
1 /
gammainc (x, a) = --------- | exp (-t) t^(a-1) dt
gamma (a) /
t=0
当 x 趋近于无穷大时,其极限值为 1。标准记号是 P(a,x),参见 Abramowitz 和 Stegun (6.5.1)。
如果 a 是标量,则对 x 的每个元素返回 gammainc (x, a),反之亦然。
如果 x 和 a 都不是标量,则 x 和 a 的大小必须一致,gammainc 将逐元素应用。a 的元素必须为非负。
默认情况下,tail 为 "lower",计算从 0 到 x 积分的不完全 Gamma 函数。如果 tail 为 "upper",则计算从 x 到无穷大积分的互补函数。
如果 tail 为 "scaledlower",则下不完全 Gamma 函数乘以 gamma(a+1)*exp(x)/(x^a)。如果 tail 为 "scaledupper",则上不完全 Gamma 函数乘以相同的量。
参考文献:
M. Abramowitz 和 I.A. Stegun, Handbook of mathematical functions, Dover publications, Inc., 1972。
W. Gautschi, "A computational procedure for incomplete gamma functions", ACM Trans. Math Software, 第 5 卷, 第 4 期, 第 466–481 页, 2012。
W. H. Press, S. A. Teukolsky, W. T. Vetterling, 和 B. P. Flannery, Numerical Recipes in Fortran 77, 第 1 卷, 第 6.2 章, 1992。
另请参阅:gamma、gammaincinv、gammaln。
x = gammaincinv (y, a) ¶x = gammaincinv (y, a, tail) ¶计算归一化不完全 Gamma 函数的反函数。
归一化不完全 Gamma 函数的定义为:
x
1 /
gammainc (x, a) = --------- | exp (-t) t^(a-1) dt
gamma (a) /
t=0
并且对于每个非负 x 值,有 gammaincinv (gammainc (x, a), a) = x。如果 a 是标量,则对 y 的每个元素返回 gammaincinv (y, a),反之亦然。
如果 y 和 a 都不是标量,则 y 和 a 的大小必须一致,gammaincinv 将逐元素应用。变量 y 必须在区间 [0,1] 内,而 a 必须为实数且为正。
默认情况下,tail 为 "lower",计算从 0 到 x 积分的不完全 Gamma 函数的反函数。如果 tail 为 "upper",则对从 x 到无穷大积分的互补函数求逆。
该函数通过牛顿法求解以下方程来计算:
y - gammainc (x, a) = 0
参考文献:A. Gil, J. Segura, 和 N. M. Temme, "Efficient and accurate algorithms for the computation and inversion of the incomplete gamma function ratios", SIAM J. Sci. Computing, 第 34 卷, 第 A2965–A2981 页, 2012。
p = legendre (n, x) ¶p = legendre (n, x, normalization) ¶计算 x 处的连带勒让德函数(勒让德函数)。
自变量 n 是标量整数,指定勒让德函数的次数。x 可以是标量、向量或矩阵,且 x 必须位于 [-1, 1] 区间内。
结果 legendre (n, x) 的大小为 n+1 乘 size (x)。返回值的每一行对应 m 的不同值,其中 m 从 0 到 n。值 legendre (0, x) 是常数 1。
如果提供了可选的第三个参数 normalization,则其必须是以下字符串之一:
"unnorm"无归一化。连带勒让德函数是 n 次和 m 阶的经典勒让德函数。归一化使得 legendre (n, 1) 为负的 delta 函数(当 m 为奇数时)且不等于 1。这对应 Handbook of Mathematical Functions (公式 8.6.1) 中的定义。
"sch"施密特半归一化。连带勒让德函数与 Handbook of Mathematical Functions (公式 8.11.1) 中定义的相关勒让德函数相关,通过以下方式:
对于 n 次和 m 阶的勒让德函数
NP(x) = P(x) * (-1)^m * (2 * (n-m)! / (n+m)!)^0.5
"norm"完全归一化。连带勒让德函数与 Handbook of Mathematical Functions (公式 8.11.2) 中定义的相关勒让德函数相关,通过以下方式:
对于 n 次和 m 阶的勒让德函数
NP(x) = P(x) * (-1)^m * [(n+0.5)*(n-m)!/(n+m)!]^0.5
y = gammaln (x) ¶y = lgamma (x) ¶返回 x 的 Gamma 函数的自然对数。
编程说明:lgamma 是 gammaln 的别名,在 Octave 中可以使用任一名称。
y = psi (z) ¶y = psi (k, z) ¶计算 psi(多伽玛)函数。
多伽玛函数是 Gamma 函数对数的 k 阶导数。如果未指定,k 默认为零。值为零时计算 digamma 函数,值为 1 时计算 trigamma 函数,依此类推。
digamma 函数的定义为:
psi (z) = d (log (gamma (z))) / dx
当计算 digamma 函数(k 等于零)时,z 可以是任意实数或复数值。然而,对于多伽玛函数(k 大于 0),z 必须为实数且非负。
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2