besselh
第 3 種ベッセル関数 (ハンケル関数)
説明
例
ハンケル関数の位相と係数
ハンケル関数 [1]の係数と位相の等高線図を生成します。
この定義域で値のグリッドを作成します。
[X,Y] = meshgrid(-4:0.002:2,-1.5:0.002:1.5);
この定義域でハンケル関数を計算し、絶対値等高線図を作成します。
H = besselh(0,X+1i*Y);
contour(X,Y,abs(H),0:0.2:3.2)
hold on
同じ Figure に位相による等高線図を追加します。
contour(X,Y,rad2deg(angle(H)),-180:10:180)
hold off
漸近的な挙動
第 2 種ハンケル関数の実数部と虚数部をプロットし、それらの漸近的な挙動を調べます。
第 2 種ハンケル関数 を区間 で計算します。
k = 2; nu = 0; z = linspace(0.1,25,200); H = besselh(nu,k,z);
この関数の実数部と虚数部をプロットします。同じ Figure で、線形結合 をプロットします。これにより、実数部と虚数部の大きさの漸近的な挙動が示されます。
plot(z,real(H),z,imag(H)) grid on hold on M = sqrt(real(H).^2 + imag(H).^2); plot(z,M,'--') legend('$J_0(z)$', '$Y_0(z)$', '$\sqrt{J_0^2 (z) + Y_0^2 (z)}$','interpreter','latex')
指数的にスケーリングされたハンケル関数
指数的にスケーリングされたハンケル関数 を複素平面上で計算し、スケーリングされていない関数と比較します。
スケーリングされていない第 2 種ハンケル関数を複素平面上で計算します。z
に大きな正の虚数部がある場合、この関数の値は急速に発散します。この現象により、計算可能な値の範囲が制限されます。
k = 2; nu = 1; x = -5:0.4:15; y = x'; z = x + 1i*y; scaled = 1; H = besselh(nu,k,z); surf(x,y,imag(H)) xlabel('real(z)') ylabel('imag(z)')
次に、複素平面上で を計算し、スケーリングされていない関数と比較します。スケーリングされた関数では、z
が大きな正の虚数部をもつ場合のオーバーフローや精度の低下が避けられ、計算可能な値の範囲が大きくなります。
Hs = besselh(nu,k,z,scaled); surf(x,y,imag(Hs)) xlabel('real(z)') ylabel('imag(z)')
入力引数
nu
— 方程式の次数
スカラー | ベクトル | 行列 | 多次元配列
方程式の次数。スカラー、ベクトル、行列または多次元配列として指定します。nu
は、ハンケル関数の次数を指定します。nu
と Z
は同じサイズでなければなりませんが、いずれかをスカラーにすることもできます。
例: besselh(3,Z)
データ型: single
| double
K
— ハンケル関数の種類
1
(既定値) | 2
ハンケル関数の種類。1
または 2
として指定します。
K = 1
の場合、besselh
は第 1 種ハンケル関数 を計算。K = 2
の場合、besselh
は第 2 種ハンケル関数 を計算。
例: besselh(nu,2,Z)
Z
— 関数の定義域
スカラー | ベクトル | 行列 | 多次元配列
関数の定義域。スカラー、ベクトル、行列または多次元配列として指定します。nu
と Z
は同じサイズでなければなりませんが、いずれかをスカラーにすることもできます。
例: besselh(nu,[1-1i 1+0i 1+1i])
データ型: single
| double
複素数のサポート: あり
scale
— スケーリング関数への切り替え
0
(既定値) | 1
スケーリング関数に切り替えるかどうか。次の値のいずれかとして指定します。
0
(既定) — スケーリングなし1
—K
の値に応じて、besselh
の出力をスケーリングします。K = 1
の場合、第 1 種ハンケル関数 を でスケーリング。K = 2
の場合、第 2 種ハンケル関数 を でスケーリング。
imag(Z)
が大きく負である場合、複素平面上で はオーバーフローします。同様に、imag(Z)
が大きく正である場合、 はオーバーフローします。これら 2 通りの場合、besselh
の出力を指数的にスケーリングすると役立ちます。そうしない場合、この関数の精度が急速に低下するか、この関数が倍精度の範囲からオーバーフローします。
例: besselh(nu,K,Z,1)
詳細
ハンケル関数とベッセル方程式
次の微分方程式 (ν は実定数) は "ベッセル方程式" と呼ばれています。
その解は "ベッセル関数" として知られています。
"第 1 種ベッセル関数" は、Jν(z) および J–ν(z) で表され、非整数の ν に対するベッセル方程式の基本解を形成します。"第 2 種ベッセル関数" は、Yν(z) で表され、ベッセル方程式の第 2 種の解 (Jν(z) とは線形独立) を形成し、次で定義されます。
"第 3 種ベッセル関数" は "第 1 種および第 2 種ハンケル関数" とも呼ばれ、ベッセル関数の線形結合により定義されます。ここで、Jν(z) は besselj
で、Yν(z) は bessely
です。
参照
[1] Abramowitz, M., and I.A. Stegun. Handbook of Mathematical Functions. National Bureau of Standards, Applied Math. Series #55, Dover Publications, 1965.
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は tall 配列を完全にサポートしています。詳細については、tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
常に複素数の結果を返します。
厳密な単精度計算はサポートされていません。生成されたコードでは、単精度入力で単精度出力が生成されます。ただし、関数内の変数は倍精度である可能性があります。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意事項および制限事項:
常に複素数の結果を返します。
厳密な単精度計算はサポートされていません。生成されたコードでは、単精度入力で単精度出力が生成されます。ただし、関数内の変数は倍精度である可能性があります。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
この関数は分散配列を完全にサポートしています。詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)