17.6 Special Functions

Last-modified: 2025-03-02 (日) 21:40:23

17.6 特殊な関数

: a = airy (z)
: a = airy (k, z)
: a = airy (k, z, scale)
: [a, ierr] = airy (…)

第一種と第二種のエアリー関数とその導関数を計算します。

K Function Scale factor (if scale is true)

--------------------------------------------------

0 Ai (Z) exp *1

1 dAi(Z)/dZ exp *2

2 Bi (Z) exp (-abs (real *3))

3 dBi(Z)/dZ exp (-abs (real *4))
関数呼び出しはと同等です 。 airy (z)airy (0, z)

オプションの 3 番目の入力スケールは、上記のようにスケーリングを適用するかどうかを決定します。デフォルトでは false です。

結果a はzと同じサイズになります。

オプションの出力ierrには次のステータス情報が含まれており、結果と同じサイズになります。

0.通常の戻り。
1.入力エラーです。戻りますNaN。
2.オーバーフロー、戻りますInf。
3.引数の削減による有意性の損失により、機械の精度は半分以下になります。
4.引数の削減により重要性が失われ、出力が不正確になる可能性があります。
5.エラー - 計算なし、アルゴリズムの終了条件が満たされていない、戻ります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が列ベクトルの場合、結果は 行と列を持つ行列になります。それ以外の場合、alphaとx は一致する必要があり、結果は同じサイズになります。 length (x)length (alpha)

要求された場合、ierr には次のステータス情報が含まれ、結果と同じサイズになります。

0.通常の戻り。
1.入力エラーです。戻りますNaN。
2.オーバーフロー、戻りますInf。
3.引数の削減による有意性の損失により、機械の精度は半分以下になります。
4.引数の削減により重要性が失われ、出力が不正確になる可能性があります。
5.エラー - 計算なし、アルゴリズムの終了条件が満たされていない、戻ります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が列ベクトルの場合、結果は 行と列を持つ行列になります。それ以外の場合、alphaとx は一致する必要があり、結果は同じサイズになります。 length (x)length (alpha)

要求された場合、ierr には次のステータス情報が含まれ、結果と同じサイズになります。

0.通常の戻り。
1.入力エラーです。戻りますNaN。
2.オーバーフロー、戻りますInf。
3.引数の削減による有意性の損失により、機械の精度は半分以下になります。
4.引数の削減により重要性が失われ、出力が不正確になる可能性があります。
5.エラー - 計算なし、アルゴリズムの終了条件が満たされていない、戻りますNaN。

See also: besselj, besseli, besselk, besselh.

: 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が列ベクトルの場合、結果は 行と列を持つ行列になります。それ以外の場合、alphaとx は一致する必要があり、結果は同じサイズになります。 length (x)length (alpha)

要求された場合、ierr には次のステータス情報が含まれ、結果と同じサイズになります。

0.通常の戻り。
1.入力エラーです。戻りますNaN。
2.オーバーフロー、戻りますInf。
3.引数の削減による有意性の損失により、機械の精度は半分以下になります。
4.引数の削減により重要性が失われ、出力が不正確になる可能性があります。
5.エラー - 計算なし、アルゴリズムの終了条件が満たされていない、戻りますNaN。

See also: besselk, besselj, bessely, besselh.

: 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が列ベクトルの場合、結果は 行と列を持つ行列になります。それ以外の場合、alphaとx は一致する必要があり、結果は同じサイズになります。 length (x)length (alpha)

要求された場合、ierr には次のステータス情報が含まれ、結果と同じサイズになります。

0.通常の戻り。
1.入力エラーです。戻りますNaN。
2.オーバーフロー、戻りますInf。
3.引数の削減による有意性の損失により、機械の精度は半分以下になります。
4.引数の削減により重要性が失われ、出力が不正確になる可能性があります。
5.エラー - 計算なし、アルゴリズムの終了条件が満たされていない、戻りますNaN。

See also: besseli, besselj, bessely, besselh.

: H = besselh (alpha, x)
: H = besselh (alpha, k, x)
: H = besselh (alpha, k, x, opt)
: [H, ierr] = besselh (…)

第三種のベッセル関数(ハンケル関数)を計算します。

ベッセル関数alphaの次数は実数でなければなりません。ハンケル関数の種類はkで指定され、第 1 種 ( k = 1) または第 2 種 ( k = 2) のいずれかになります。デフォルトは第 1 種のハンケル関数です。評価点xは複素数でもかまいません。

オプション引数optが 1 または true の場合、結果はk = 1の場合は 、 k = 2の場合は に乗算されます。 exp (-I*x)exp (I*x)

alphaがスカラーの場合、結果はxと同じサイズになります。x がスカラーの場合、結果はalphaと同じサイズになります。alphaが行ベクトルでxが列ベクトルの場合、結果は 行と列を持つ行列になります。それ以外の場合、alphaとx は一致する必要があり、結果は同じサイズになります。 length (x)length (alpha)

要求された場合、ierr には次のステータス情報が含まれ、結果と同じサイズになります。

0.通常の戻り。
1.入力エラーです。戻りますNaN。
2.オーバーフロー、戻りますInf。
3.引数の削減による有意性の損失により、機械の精度は半分以下になります。
4.引数の削減により重要性が失われ、出力が不正確になる可能性があります。
5.エラー - 計算なし、アルゴリズムの終了条件が満たされていない、戻りますNaN。

See also: besselj, bessely, besseli, besselk.

: y = beta (a, b)

実数入力aとbのベータ関数を計算します。

ベータ関数の定義は

ベータ(a, b) = ガンマ(a) * ガンマ(b) / ガンマ(a + b)。
ベータ関数は非常に大きくなる可能性があり、関数を直接操作するよりも出力の対数を扱う方が便利な場合がよくあります。betalnベータ関数の対数を効率的に計算するには、を参照してください。

See also: betaln, betainc, betaincinv.

: I = betainc (x, a, b)
: I = betainc (x, a, b, tail)

不完全ベータ関数を計算します。

これは次のように定義されます

                         x
                        /
                 1     |
I_x (a, b) = ---------- | t^(a-1) (1-t)^(b-1) dt
            beta (a,b) |
                       /
                       0

実数xは範囲 [0,1] です。入力aとb は実数で、厳密に正 (> 0) である必要があります。入力の 1 つがスカラーでない場合は、他の入力はスカラーであるか、互換性のある次元である必要があります。

デフォルトでは、tailは0からx"lower"まで積分された不完全ベータ関数が計算されます。tailがの場合は、x から1まで積分された補完関数が計算されます。2つの選択肢は次のように関連しています 。"upper"

betainc ( x , a , b , "upper") = 1 - betainc ( x , a , b , "lower") です。

betainc"lower"値が小さい 場合に数値的に正確な結果を得るために、減算よりも洗練されたアルゴリズムを使用します。

参考文献: A. Cuyt、V. Brevik Petersen、B. Verdonk、H. Waadeland、WB Jones、「特殊関数の連分数ハンドブック」、第 18 章。

See also: beta, betaincinv, betaln.

: x = betaincinv (y, a, b)
: x = betaincinv (y, a, b, "lower")
: x = betaincinv (y, a, b, "upper")

正規化された不完全ベータ関数の逆関数を計算します。

正規化された不完全ベータ関数は次のように定義される。

                         x
                        /
                     1 |
I_x (a, b) = ---------- | t^(a-1) (1-t)^(b-1) dt
            beta (a,b) |
                      /
                       0

2 つの入力がスカラーの場合、 他の各入力に対して が返されます。 betaincinv (y, a, b)

2 つ以上の入力がスカラーでない場合は、それらのサイズが一致する必要があり、 betaincinv要素ごとに適用されます。

変数y は[0,1] の範囲内にある必要があり、aと b は実数かつ厳密に正の値である必要があります。

デフォルトでは、tailは であり、0 からx"lower"まで積分された不完全ベータ関数の逆関数が計算されます。tailが の 場合、 xから1 まで 積分された補完関数が反転されます。"upper"

この関数は標準的なニュートン法で計算され、

y - betainc ( x , a , b ) = 0

See also: 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関数は小さなスカラー整数引数に対しては高速です。また、大きな引数に対しては精度の低下について警告します。

See also: nchoosek.

: k = commutation_matrix (m, n)

すべての m行n列行列Aに対してK(m,n ) * vec(A) = vec(A') となるような 唯一のm * n行m * n 列行列 である交換行列 K(m,n) を返します。

引数m が1 つだけ指定されている場合は、 K(m,m) が返されます。

Magnus と Neudecker (1988) の「Matrix Differential Calculus with Applications in Statistics and Econometrics」を参照してください。

: y = cosint (x)

余弦積分関数を計算します。

           +oo
           /
Ci (x) = - | (cos (t)) / t dt
          /
         x

同等の定義は

                            x
                           /
                           |  cos (t) - 1
Ci (x) = gamma + log (x) +  | -------------  dt
                           |        t
                           /
                          0

Reference:

M. Abramowitz と IA Stegun、 「数学関数ハンドブック」、1964 年。

See also: sinint, expint, cos.

: d = duplication_matrix (n)

すべての対称 N行N列 行列 Aに対して、唯一のN^2行N*(N+1)/2 列 行列 である 複製行列 Dnを返します。 Dn * vech (A) = vec (A)

Magnus と Neudecker (1988) の「Matrix Differential Calculus with Applications in Statistics and Econometrics」を参照してください。

: v = dawson (z)

ドーソン(スケールされた虚数誤差)関数を計算します。

ドーソン関数は次のように定義される。

(sqrt (pi) / 2) * exp (-z^2) * erfi (z)

See also: erfc, erf, erfcx, erfi, erfinv, erfcinv.

: [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が行ベクトルの場合、結果は行と 列を持つ行列になります。それ以外の場合、uと m のサイズは一致する必要があり、結果は入力と同じサイズになります。 length (u)length (m)

uの値は複素数でもかまいません。mの値は0 ≤ m ≤ 1 でなければなりません。

オプションの入力tolは現在無視されています ( MATLAB はこれを使用して、より高速で精度の低い近似値を可能にします)。

要求された場合、err には次のステータス情報が含まれ、結果と同じサイズになります。

0.Normal return.
1.Error—no computation, algorithm termination condition not met, return NaN.

参考文献: Milton Abramowitz および Irene A Stegun、 「数学関数ハンドブック」、第 16 章 (セクション 16.4、16.13、および 16.15)、Dover、1965 年。

See also: ellipke.

: k = ellipke (m)
: k = ellipke (m, tol)
: [k, e] = ellipke (…)

第1種K( m )と第2種E( m )の完全楕円積分を計算します。

m は、-Inf ≤ m ≤ 1 の スカラー配列または実数配列である必要があります。

オプションの入力tol はアルゴリズムの停止許容値を制御し、デフォルトは です。許容値を大きくすると、より高速で精度の低い近似値を計算できます。 eps (class (m))

1 つの出力で呼び出された場合は、第 1 種の楕円積分のみが返されます。

数学的注釈:

第一種楕円積分は次のように定義される。

        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、 「数学関数ハンドブック」、第 17 章、Dover、1965 年。

See also: ellipj.

: v = erf (z)

誤差関数を計算します。

誤差関数は次のように定義される。

                       z
             2        /
erf (z) = --------- *  | e^(-t^2) dt
         sqrt (pi)    /
                   t=0

See also: erfc, erfcx, erfi, dawson, erfinv, erfcinv.

: v = erfc (z)

相補誤差関数を計算します。

相補誤差関数は次のように定義されます 。 1 - erf (z)

See also: erfcinv, erfcx, erfi, dawson, erf, erfinv.

: v = erfcx (z)

スケールされた相補誤差関数を計算します。

スケール補完誤差関数は次のように定義される。

exp (z^2) * erfc (z)

See also: erfc, erf, erfi, dawson, erfinv, erfcinv.

: v = erfi (z)

虚数誤差関数を計算します。

虚数誤差関数は次のように定義される。

-i * erf (i*z)

See also: erfc, erf, erfcx, dawson, erfinv, erfcinv.

: y = erfinv (x)

逆誤差関数を計算します。

逆誤差関数は次のように定義される。

erf (y) == x

See also: erf, erfc, erfcx, erfi, dawson, erfcinv.

: y = erfcinv (x)

逆相補誤差関数を計算します。

逆相補誤差関数は次のように定義される。

erfc (y) == x

See also: erfc, erf, erfcx, erfi, dawson, erfinv.

: y = expint (x)

指数積分を計算します。

指数積分は次のように定義されます。

          +oo
         /
         | exp (-t)
E_1 (x) = | -------- dt
         |    t
         /
        x

注: 互換性のため、この関数はMATLABの指数積分の定義を使用します。他のほとんどのソースでは、この特定の値をE_1 (x)と呼び、指数積分を次のように 参照します。

           +oo
          /
          | exp (-t)
Ei (x) = - | -------- dt
          |    t
          /
        -x

2 つの定義は、xの正の実数値に対して、 によって 関連していますE_1 (-x) = -Ei (x) - i*pi。

参考文献:
M. Abramowitz と IA Stegun、 「数学関数ハンドブック」、1964 年。
N. Bleistein と RA Handelsman、 「積分の漸近展開」、1986 年。

See also: cosint, sinint, exp.

: v = gamma (z)

ガンマ関数を計算します。

ガンマ関数は次のように定義される。

            infinity
           /
gamma (z) = | t^(z-1) exp (-t) dt.
           /
        t=0

プログラミングノート: ガンマ関数は、入力値が小さい場合でも非常に大きくなる可能性があります。多くの場合、計算ではガンマ関数の自然対数 ( gammaln) を使用して精度の低下を最小限に抑えることが望ましい場合があります。最終結果は次のようになります。 exp (result_using_gammaln).

See also: gammainc, gammaln, factorial.

: y = gammainc (x, a)
: y = gammainc (x, a, tail)

正規化された不完全ガンマ関数を計算します。

これは次のように定義されます

                               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は であり、0 からx"lower"まで積分された不完全ガンマ関数が計算されます。tailが の場合、 xから無限大まで 積分された補完関数が計算されます。"upper"

末尾が の場合"scaledlower"、下側の不完全ガンマ関数に gamma(a+1)*exp(x)/(x^a)が乗算されます。末尾が の場合"scaledupper"、上側の不完全ガンマ関数に同じ量が乗算されます。

参考文献:
M. Abramowitz および IA Stegun、 「数学関数ハンドブック」、Dover Publications、Inc.、1972 年。
W. Gautschi、 「不完全ガンマ関数の計算手順」、ACM Trans. Math Software、pp. 466–481、Vol 5、No. 4、2012年。
WH Press、SA Teukolsky、WT Vetterling、BP Flannery、 「Numerical Recipes in Fortran 77」、第 6.2 章、第 1 巻、1992 年。
See also: gamma, gammaincinv, gammaln.

: x = gammaincinv (y, a)
: x = gammaincinv (y, a, tail)

正規化された不完全ガンマ関数の逆関数を計算します。

正規化された不完全ガンマ関数は次のように定義される。

                               x
                      1       /
gammainc (x, a) = ---------    | exp (-t) t^(a-1) dt
                 gamma (a)    /
                           t=0

x の各非負値に対してが返されます。aがスカラーの 場合、 yの各要素に対して が返され 、その逆も同様です。 gammaincinv (gammainc (x, a), a) = xgammaincinv (y, a)

yもaもスカラーでない場合は、 yと aのサイズが一致し、gammaincinv要素ごとに適用されます。変数y は[0,1] の範囲内にある必要があり、 a は実数かつ正である必要があります 。

デフォルトでは、tailは であり、0 からx"lower"まで積分された不完全ガンマ関数の逆関数が計算されます。tailが の 場合、 xから無限大まで積分された補関数が逆になります。 "upper"

この関数はニュートン法で次のように解くことによって計算される。

y - gammainc (x, a) = 0

参考文献: A. Gil、J. Segura、NM Temme、「不完全ガンマ関数比の計算と逆行列を求めるための効率的で正確なアルゴリズム」、SIAM J. Sci. Computing、pp. A2965–A2981、Vol 34、2012 年。

See also: gammainc, gamma, gammaln.

: l = legendre (n, x)
: l = legendre (n, x, normalization)

n次、 m = 0 … n​​ 次のルジャンドル関数を計算します。

値nは負でない実数の整数でなければなりません。

xは[-1, 1]の範囲の実数値要素を持つベクトルです。

オプションの引数normalization は"unnorm"、、、 "sch"またはのいずれかになります"norm"。正規化が指定されていない場合のデフォルトは です"unnorm"。

オプション引数normalizationが の場合、 n次、m"unnorm"次のルジャンドル関数を計算し、 m = 0 … n​​ のすべての値を返します。戻り値はxより 1 次元大きくなります。

n次、m次のルジャンドル関数:

m         m      2  m/2   d^m
P(x) = (-1) * (1-x  )    * ----  P(x)
n                         dx^m   n

n次のルジャンドル多項式の場合:

         1    d^n   2    n
P(x) = ------ [----(x - 1) ]
n     2^n n!  dx^n

legendre (3, [-1.0, -0.9, -0.8])次の行列を返します:

x | -1.0 | -0.9 | -0.8

------------------------------------

m=0 | -1.00000 | -0.47250 | -0.08000

m=1 | 0.00000 | -1.99420 | -1.98000

m=2 | 0.00000 | -2.56500 | -4.32000

m=3 | 0.00000 | -1.24229 | -3.24000
オプション引数normalizationが の場合"sch"、シュミットの半正規化ルジャンドル関数を計算します。シュミットの半正規化ルジャンドル関数は、次の式によって正規化されていないルジャンドル関数と関連しています。

n次、0次 のルジャンドル関数の場合:

 0      0
SP(x) = P(x)
 n      n

n次、m次のルジャンドル関数の場合:

 m      m         m    2(n-m)! 0.5
SP(x) = P(x) * (-1)  * [-------]
 n      n              (n+m)!

オプション引数normalizationが の場合"norm"、完全に正規化されたルジャンドル陪関数を計算します。完全に正規化されたルジャンドル陪関数は、次のように正規化されていないルジャンドル陪関数と関連しています。

n次、 m次のルジャンドル関数の場合

 m      m         m    (n+0.5)(n-m)! 0.5
NP(x) = P(x) * (-1)  * [-------------]
 n      n                  (n+m)!
: y = gammaln (x)
: y = lgamma (x)

xのガンマ関数の自然対数を返します。

プログラミング ノート:lgammaは のエイリアスでありgammaln、どちらの名前も Octave で使用できます。

See also: gamma, gammainc.

: y = psi (z)
: y = psi (k, z)

psi (ポリガンマ) 関数を計算します。

ポリガンマ関数は、ガンマ関数の対数のk次導関数です。指定しない場合、 k はデフォルトで 0 になります。値が 0 の場合はディガンマ関数が計算され、値が 1 の場合はトリガンマ関数が計算されます。

ディガンマ関数は次のように定義されます。

psi (z) = d (log (gamma (z))) / dx

ディガンマ関数を計算する場合 ( kが 0 の場合)、z は 任意の実数値または複素数値を取ることができます。ただし、ポリガンマ関数 ( kが 0 より大きい) の場合、z は実数値かつ非負値でなければなりません。

See also: gamma, gammainc, gammaln.

: y = sinint (x)

正弦積分関数を計算します。

          x
          /
Si (x) =  | sin (t) / t dt
         /
        0

参考文献: M. Abramowitz および IA Stegun、 「数学関数ハンドブック」 (1964 年)。
See also: cosint, expint, sin.


*1 2/3) * Z * sqrt (Z
*2 2/3) * Z * sqrt (Z
*3 2/3) * Z * sqrt (Z
*4 2/3) * Z * sqrt (Z