メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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)

詳細

すべて折りたたむ

参照

[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 より前に導入