Main Content

besseli

第 1 種変形ベッセル関数

説明

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

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

すべて折りたたむ

領域を定義します。

z = 0:0.01:5;

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

I = zeros(5,501);
for nu = 0:4
    I(nu+1,:) = besseli(nu,z);
end

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

plot(z,I)
axis([0 5 0 8])
grid on
legend('I_0','I_1','I_2','I_3','I_4','Location','NorthWest')
title('Modified Bessel Functions of the First Kind for $\nu \in [0,4]$','interpreter','latex')
xlabel('z','interpreter','latex')
ylabel('$I_\nu(z)$','interpreter','latex')

Figure contains an axes object. The axes object with title Modified Bessel Functions of the First Kind for nu in bracketleft 0 , 4 bracketright, xlabel z, ylabel I indexOf nu baseline leftParenthesis z rightParenthesis contains 5 objects of type line. These objects represent I_0, I_1, I_2, I_3, I_4.

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

z = linspace(0,20);
scale = 1;
Is = zeros(4,100);
for nu = 0:3
  Is(nu+1,:) = besseli(nu,z,scale);
end

すべての関数を同じ Figure にプロットします。z の値が大きい場合、スケーリングされた関数は倍精度の範囲からオーバーフローせず、スケーリングされていない関数と比べて計算可能な範囲が大きくなります。

plot(z,Is)
legend('I_0','I_1','I_2','I_3')
title('Scaled Mod. Bessel Functions of the First Kind for $\nu \in \left[0, 3 \right]$','interpreter','latex')
xlabel('z','interpreter','latex')
ylabel('$e^{-|{z}|} \cdot I_\nu(z)$','interpreter','latex')

Figure contains an axes object. The axes object with title Scaled Mod. Bessel Functions of the First Kind for nu in bracketleft 0 , 3 bracketright, xlabel z, ylabel e toThePowerOf minus verticalbar z verticalbar baseline cdot I indexOf nu baseline leftParenthesis z rightParenthesis contains 4 objects of type line. These objects represent I_0, I_1, I_2, I_3.

入力引数

すべて折りたたむ

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

例: besseli(3,Z)

データ型: single | double

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

例: besseli(nu,[1-1i 1+0i 1+1i])

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

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

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

  • 1besseli の出力を exp(-abs(real(Z))) でスケーリング

besseli の大きさは、abs(real(Z)) の値の増加に伴い急速に大きくなります。そのため、abs(real(Z)) の値が大きい場合、出力の指数的なスケーリングが役立ちます。そうしないと、結果の精度が急速に低下したり、倍精度の範囲からオーバーフローします。

例: besseli(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).

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

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

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

拡張機能

バージョン履歴

R2006a より前に導入