メインコンテンツ

besselk

第 2 種変形ベッセル関数

説明

K = besselk(nu,Z) は、配列 Z の各要素について第 2 種変形ベッセル関数 Kν(z) を計算します。

K = besselk(nu,Z,scale) は、アンダーフローまたは精度の低下を防ぐために第 2 種変形ベッセル関数を指数的にスケーリングするかどうかを指定します。scale1 の場合、besselk の出力は係数 exp(Z) でスケーリングされます。

すべて折りたたむ

領域を定義します。

z = 0:0.01:5;

最初の 5 つの第 2 種変形ベッセル関数を計算します。K の各行には、z の各点で評価された関数の 1 つの次数の値が含まれます。

K = zeros(5,501);
for i = 0:4
    K(i+1,:) = besselk(i,z);
end

すべての関数を同じ Figure にプロットします。

plot(z,K)
axis([0 5 0 8])
grid on
legend('K_0','K_1','K_2','K_3','K_4','Location','Best')
title('Modified Bessel Functions of the Second Kind for $\nu \in [0,4]$','interpreter','latex')
xlabel('z','interpreter','latex')
ylabel('$K_\nu(z)$','interpreter','latex')

Figure contains an axes object. The axes object with title Modified Bessel Functions of the Second Kind for nu in bracketleft 0 , 4 bracketright, xlabel z, ylabel K indexOf nu baseline leftParenthesis z rightParenthesis contains 5 objects of type line. These objects represent K_0, K_1, K_2, K_3, K_4.

区間 [0,5]z 値と 0 ~ 3 の ν の次数について、スケーリングされた第 2 種変形ベッセル関数 Kν(z)e z を計算します。

z = linspace(0,5);
scale = 1;
Ks = zeros(4,100);
for nu = 0:3
  Ks(nu+1,:) = besselk(nu,z,scale);
end

すべての関数を同じ Figure にプロットします。z の値が大きい場合、スケーリングされた関数はスケーリングされていない関数ほど急速に倍精度の範囲をアンダーフローしないため、計算可能な範囲が大きくなります。

plot(z,Ks)
ylim([0 3])
legend('K_0','K_1','K_2','K_3')
title('Scaled Mod. Bessel Functions of the Second Kind for $\nu \in \left[0, 3 \right]$','interpreter','latex')
xlabel('z','interpreter','latex')
ylabel('$K_\nu(z) \cdot e^{z}$','interpreter','latex')

Figure contains an axes object. The axes object with title Scaled Mod. Bessel Functions of the Second Kind for nu in bracketleft 0 , 3 bracketright, xlabel z, ylabel K indexOf nu baseline leftParenthesis z rightParenthesis cdot e toThePowerOf z baseline contains 4 objects of type line. These objects represent K_0, K_1, K_2, K_3.

入力引数

すべて折りたたむ

方程式の次数。スカラー、ベクトル、行列または多次元配列として指定します。nu第 2 種変形ベッセル関数の次数を指定する実数です。nuZ は同じサイズでなければなりませんが、いずれかをスカラーにすることもできます。

例: besselk(3,Z)

データ型: single | double

関数の定義域。スカラー、ベクトル、行列または多次元配列として指定します。besselkZ が正の場合に実数になります。nuZ は同じサイズでなければなりませんが、いずれかをスカラーにすることもできます。

例: besselk(nu,0:3)

データ型: single | double
複素数のサポート: あり

スケーリング関数に切り替えるかどうか。次の値のいずれかとして指定します。

  • 0 (既定) — スケーリングなし

  • 1besselk の出力を exp(Z) でスケーリング

besselk の値は、Z の値の増加に伴い急速に減少します。そのため、Z の値が大きい場合、出力の指数的なスケーリングが役立ちます。そうしないと、結果の精度が急速に低下したり、倍精度の範囲をアンダーフローします。

例: besselk(nu,Z,1)

詳細

すべて折りたたむ

参照

[1] Amos, D. E. “Algorithm 644: A Portable Package for Bessel Functions of a Complex Argument and Nonnegative Order.” ACM Transactions on Mathematical Software 12, no. 3 (September 1986): 265–273. https://dl.acm.org/doi/10.1145/7921.214331.

拡張機能

すべて展開する

バージョン履歴

R2006a より前に導入