Main Content

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)

詳細

すべて折りたたむ

変形ベッセル関数

次の微分方程式 (ν は実定数) は "変形ベッセル方程式" と呼ばれています。

z2d2ydz2+zdydz(z2+ν2)y=0.

その解は "変形ベッセル関数" として知られています。

"第 1 種変形ベッセル関数" は Iν(z) および I–ν(z) で表され、変形ベッセル方程式の基本解を形成します。Iν(z) は次で定義されます。

Iν(z)=(z2)ν(k=0)(z24)kk!Γ(ν+k+1).

第 1 種変形ベッセル関数は besseli を使用して計算できます。

"第 2 種変形ベッセル関数" は Kν(z) で表され、次で与えられる第 2 種の解 (Iν(z) とは独立) を形成します。

Kν(z)=(π2)Iν(z)Iν(z)sin(νπ).

拡張機能

バージョン履歴

R2006a より前に導入