besselj
第 1 種ベッセル関数
説明
例
第 1 種ベッセル関数のプロット
領域を定義します。
z = 0:0.1:20;
最初の 5 つの第 1 種ベッセル関数を計算します。J
の各行には、z
の各点で評価された関数の 1 つの次数の値が含まれます。
J = zeros(5,201); for i = 0:4 J(i+1,:) = besselj(i,z); end
すべての関数を同じ Figure にプロットします。
plot(z,J) grid on legend('J_0','J_1','J_2','J_3','J_4','Location','Best') title('Bessel Functions of the First Kind for $\nu \in [0, 4]$','interpreter','latex') xlabel('z','interpreter','latex') ylabel('$J_\nu(z)$','interpreter','latex')
指数的にスケーリングされたベッセル関数の計算
複素数値 について、第 1 種ベッセル関数 のスケーリングされていない関数 (J
) とスケーリングされた関数 (Js
) を計算します。
x = -10:0.3:10; y = x'; z = x + 1i*y; scale = 1; J = besselj(2,z); Js = besselj(2,z,scale);
スケーリングされた関数とスケーリングされていない関数の虚数部のプロットを比較します。abs(imag(z))
の値が大きい場合、スケーリングされていない関数は倍精度の範囲からすぐにオーバーフローし、計算できなくなります。スケーリングされた関数では、この支配的な指数的挙動が計算から除外されるため、スケーリングされていない関数と比べて計算可能な範囲が大きくなります。
surf(x,y,imag(J)) title('Bessel Function of the First Kind','interpreter','latex') xlabel('real(z)','interpreter','latex') ylabel('imag(z)','interpreter','latex')
surf(x,y,imag(Js)) title('Scaled Bessel Function of the First Kind','interpreter','latex') xlabel('real(z)','interpreter','latex') ylabel('imag(z)','interpreter','latex')
入力引数
nu
— 方程式の次数
スカラー | ベクトル | 行列 | 多次元配列
方程式の次数。スカラー、ベクトル、行列または多次元配列として指定します。nu
は第 1 種ベッセル関数の次数を指定する実数です。nu
と Z
は同じサイズでなければなりませんが、いずれかをスカラーにすることもできます。
例: besselj(3,0:5)
データ型: single
| double
Z
— 関数の定義域
スカラー | ベクトル | 行列 | 多次元配列
関数の定義域。スカラー、ベクトル、行列または多次元配列として指定します。besselj
は Z
が正の場合に実数になります。nu
と Z
は同じサイズでなければなりませんが、いずれかをスカラーにすることもできます。
例: besselj(1,[1-1i 1+0i 1+1i])
データ型: single
| double
複素数のサポート: あり
scale
— スケーリング関数への切り替え
0
(既定値) | 1
スケーリング関数に切り替えるかどうか。次の値のいずれかとして指定します。
0
(既定) — スケーリングなし1
—besselj
の出力をexp(-abs(imag(Z)))
でスケーリング
複素平面では、besselj
の大きさが abs(imag(Z))
の値の増加に伴い急速に大きくなります。そのため、abs(imag(Z))
の値が大きい場合、出力の指数的なスケーリングが役立ちます。そうしないと、結果の精度が急速に低下したり、倍精度の範囲からオーバーフローしたりします。
例: besselj(3,0:5,1)
詳細
ヒント
ベッセル関数は、第 3 種ベッセル関数とも呼ばれるハンケル関数と密接な関係があります。
は besselh
、Jν(z) は besselj
、Yν(z) は bessely
です。ハンケル関数も、ベッセル方程式の基本解を形成します (besselh
を参照)。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は tall 配列を完全にサポートしています。詳細については、tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
常に複素数の結果を返します。
厳密な単精度計算はサポートされていません。生成されたコードでは、単精度入力で単精度出力が生成されます。ただし、関数内の変数は倍精度である可能性があります。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意事項および制限事項:
常に複素数の結果を返します。
厳密な単精度計算はサポートされていません。生成されたコードでは、単精度入力で単精度出力が生成されます。ただし、関数内の変数は倍精度である可能性があります。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
次数
nu
は、非負で実数の整数値でなければなりません。引数
Z
は、実数値でなければなりません。
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
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)