ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

bessely

第 2 種ベッセル関数

説明

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

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

すべて折りたたむ

領域を定義します。

z = 0:0.1:20;

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

Y = zeros(5,201);
for i = 0:4
    Y(i+1,:) = bessely(i,z);
end

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

plot(z,Y)
axis([-0.1 20.2 -2 0.6])
grid on
legend('Y_0','Y_1','Y_2','Y_3','Y_4','Location','Best')
title('Bessel Functions of the Second Kind for $\nu \in [0, 4]$','interpreter','latex')
xlabel('z','interpreter','latex')
ylabel('$Y_\nu(z)$','interpreter','latex')

複素数値 z について、第 2 種ベッセル関数 Y2(z) のスケーリングされていない関数 (Y) とスケーリングされている関数 (Ys) を計算します。

x = -10:0.35:10;
y = x';
z = x + 1i*y;
scale = 1;
Y = bessely(2,z);
Ys = bessely(2,z,scale);

スケーリングされた関数とスケーリングされていない関数の虚数部のプロットを比較します。abs(imag(z)) の値が大きい場合、スケーリングされていない関数は倍精度の範囲からすぐにオーバーフローし、計算できなくなります。スケーリングされた関数では、この支配的な指数的挙動が計算から除外されるため、スケーリングされていない関数と比べて計算可能な範囲が大きくなります。

surf(x,y,imag(Y))
title('Bessel Function of the Second Kind','interpreter','latex')
xlabel('real(z)','interpreter','latex')
ylabel('imag(z)','interpreter','latex')

surf(x,y,imag(Ys))
title('Scaled Bessel Function of the Second Kind','interpreter','latex')
xlabel('real(z)','interpreter','latex')
ylabel('imag(z)','interpreter','latex')

入力引数

すべて折りたたむ

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

例: bessely(3,0:5)

データ型: single | double

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

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

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

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

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

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

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

例: bessely(3,0:5,1)

詳細

すべて折りたたむ

ベッセル関数

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

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

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

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

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

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

"第 2 種ベッセル関数" は Yν(z) で表され、ベッセル方程式の第 2 種の解 (Jν(z) とは線形独立) を形成します。Yν(z) は次で定義されます。

Yν(z)=Jν(z)cos(νπ)Jν(z)sin(νπ).

ヒント

ベッセル関数は、第 3 種ベッセル関数とも呼ばれるハンケル関数と密接な関係があります。

Hν(1)(z)=Jν(z)+iYν(z)Hν(2)(z)=Jν(z)iYν(z).

Hν(K)(z)besselhJν(z)besseljYν(z)bessely です。ハンケル関数も、ベッセル方程式の基本解を形成します (besselh を参照)。

拡張機能

R2006a より前に導入