関数cneumanmulti_fast マニュアル

(The documentation of function cneumanmulti_fast)

Last Update: 2023/11/14


◆機能・用途(Purpose)

複素変数に対するノイマン関数を複数の次数についてまとめて計算する。 計算済みのベッセル関数を用いることにより、高速に計算する。
Compute the Neuman function for a complex variable; computations for multiple orders are conducted by a single function call. The computation is made faster by using Bessel functions that were computed in advance.


◆形式(Format)

#include <mathfunc.h>
inline double complex ∗cneumanmulti_fast
(const int nmax,const double complex z,
 const double complex J0,const double complex J1)


◆引数(Arguments)

n 計算するノイマン関数\(N_n(z)\)の次数\(n\)の最大値。 非負でなければならない。
The maximum value of the order \(n\) of the Neuman function \(N_n(z)\) to compute, which must be non-negative.
z ノイマン関数\(N_n(z)\)の引数\(z\)の値。
The value of the argument \(z\) for the Neuman function \(N_n(z)\).
J0 予め計算した\(J_0(z)\)の値。
The value of \(J_0(z)\) that has been computed in advance to the function call.
J1 予め計算した\(J_1(z)\)の値。
The value of \(J_1(z)\) that has been computed in advance to the function call.


◆戻り値(Return value)

引数で指定した\(z\)に対する \(N_0(z), N_1(z), \cdots, N_{nmax}(z)\) の値を並べた配列。
An array composed of the values of \(N_0(z), N_1(z), \cdots, N_{nmax}(z)\) for \(z\) specified by the argument.


◆使用例(Example)

double complex ∗J=cbesselmulti(3,0.5);
double complex ∗N=cneumanmulti_fast(3,0.5,J[0],J[1]);

この例では N[0]\(=N_0(0.5)\), N[1]\(=N_1(0.5)\), N[2]\(=N_2(0.5)\), N[3]\(=N_3(0.5)\) となる。
This example gives N[0]\(=N_0(0.5)\), N[1]\(=N_1(0.5)\), N[2]\(=N_2(0.5)\), and N[3]\(=N_3(0.5)\).


◆使用上の注意(Note)

大きな\(z\)についてこの関数を用いると計算が不安定になる可能性が高い。 詳細は関数cneumanのマニュアル参照。
This function may give unstable results for large \(z\). For detail, see the documentation of function cneuman.


◆補足(Additional remarks)

ノイマン関数の計算にはベッセル関数\(J_0(z)\), \(J_1(z)\)が必要になり、 \(n\)が小さい場合にはこれが計算時間の大部分を占める。 ハンケル関数を求める場合のように ベッセル関数とノイマン関数の両方が必要になるケースでは 先にベッセル関数を計算し、その結果をノイマン関数の計算の中で利用することで 計算を高速化できる。 それを実現したのがこの関数である。
The computation of the Neuman function requires Bessel functions \(J_0(z)\) and \(J_1(z)\). Computation for them occupies most of the computation time for the Neuman function when \(n\) is small. If both the Bessel and Neuman functions are needed, for example in case of computing a Hankel function, the total computation time is shortened by first computing the Bessel function and then using the results in the computation of the Neuman function. This algorithm is implemented in this function.