| @cindex Mathieu functions |
| |
| The routines described in this section compute the angular and radial |
| Mathieu functions, and their characteristic values. Mathieu |
| functions are the solutions of the following two differential |
| equations: |
| @tex |
| \beforedisplay |
| $$ |
| \eqalign{ |
| {{d^2 y}\over{d v^2}}& + (a - 2q\cos 2v)y = 0, \cr |
| {{d^2 f}\over{d u^2}}& - (a - 2q\cosh 2u)f = 0. |
| } |
| $$ |
| \afterdisplay |
| @end tex |
| @ifinfo |
| |
| @example |
| d^2y/dv^2 + (a - 2q\cos 2v)y = 0 |
| d^2f/du^2 - (a - 2q\cosh 2u)f = 0 |
| @end example |
| |
| @end ifinfo |
| @noindent |
| The angular Mathieu functions @math{ce_r(x,q)}, @math{se_r(x,q)} are |
| the even and odd periodic solutions of the first equation, which is known as Mathieu's equation. These exist |
| only for the discrete sequence of characteristic values @math{a=a_r(q)} |
| (even-periodic) and @math{a=b_r(q)} (odd-periodic). |
| |
| The radial Mathieu functions @c{$Mc^{(j)}_{r}(z,q)$} |
| @math{Mc^@{(j)@}_@{r@}(z,q)}, @c{$Ms^{(j)}_@{r@}(z,q)$} |
| @math{Ms^@{(j)@}_@{r@}(z,q)} are the solutions of the second equation, |
| which is referred to as Mathieu's modified equation. The |
| radial Mathieu functions of the first, second, third and fourth kind |
| are denoted by the parameter @math{j}, which takes the value 1, 2, 3 |
| or 4. |
| |
| @comment The angular Mathieu functions can be divided into four types as |
| @comment @tex |
| @comment \beforedisplay |
| @comment $$ |
| @comment \eqalign{ |
| @comment x & = \sum_{m=0}^\infty A_{2m+p} \cos(2m+p)\phi, \quad p = 0, 1, \cr |
| @comment x & = \sum_{m=0}^\infty B_{2m+p} \sin(2m+p)\phi, \quad p = 0, 1. |
| @comment } |
| @comment $$ |
| @comment \afterdisplay |
| @comment @end tex |
| @comment @ifinfo |
| |
| @comment @example |
| @comment x = \sum_(m=0)^\infty A_(2m+p) \cos(2m+p)\phi, p = 0, 1, |
| @comment x = \sum_(m=0)^\infty B_(2m+p) \sin(2m+p)\phi, p = 0, 1. |
| @comment @end example |
| |
| @comment @end ifinfo |
| @comment @noindent |
| @comment The nomenclature used for the angular Mathieu functions is @math{ce_n} |
| @comment for the first solution and @math{se_n} for the second. |
| |
| @comment Similar solutions exist for the radial Mathieu functions by replacing |
| @comment the trigonometric functions with their corresponding hyperbolic |
| @comment functions as shown below. |
| @comment @tex |
| @comment \beforedisplay |
| @comment $$ |
| @comment \eqalign{ |
| @comment x & = \sum_{m=0}^\infty A_{2m+p} \cosh(2m+p)u, \quad p = 0, 1, \cr |
| @comment x & = \sum_{m=0}^\infty B_{2m+p} \sinh(2m+p)u, \quad p = 0, 1. |
| @comment } |
| @comment $$ |
| @comment \afterdisplay |
| @comment @end tex |
| @comment @ifinfo |
| |
| @comment @example |
| @comment x = \sum_(m=0)^\infty A_(2m+p) \cosh(2m+p)u, p = 0, 1, |
| @comment x = \sum_(m=0)^\infty B_(2m+p) \sinh(2m+p)u, p = 0, 1. |
| @comment @end example |
| |
| @comment @end ifinfo |
| @comment @noindent |
| @comment The nomenclature used for the radial Mathieu functions is @math{Mc_n} |
| @comment for the first solution and @math{Ms_n} for the second. The hyperbolic |
| @comment series do not always converge at an acceptable rate. Therefore most |
| @comment texts on the subject suggest using the following equivalent equations |
| @comment that are expanded in series of Bessel and Hankel functions. |
| @comment @tex |
| @comment \beforedisplay |
| @comment $$ |
| @comment \eqalign{ |
| @comment Mc_{2n}^{(j)}(x,q) & = \sum_{m=0}^\infty (-1)^{r+k} |
| @comment A_{2m}^{2n}(q)\left[J_m(u_1)Z_m^{(j)}(u_2) + |
| @comment J_m(u_1)Z_m^{(j)}(u_2)\right]/A_2^{2n} \cr |
| @comment Mc_{2n+1}^{(j)}(x,q) & = \sum_{m=0}^\infty (-1)^{r+k} |
| @comment A_{2m+1}^{2n+1}(q)\left[J_m(u_1)Z_{m+1}^{(j)}(u_2) + |
| @comment J_{m+1}(u_1)Z_m^{(j)}(u_2)\right]/A_1^{2n+1} \cr |
| @comment Ms_{2n}^{(j)}(x,q) & = \sum_{m=1}^\infty (-1)^{r+k} |
| @comment B_{2m}^{2n}(q)\left[J_{m-1}(u_1)Z_{m+1}^{(j)}(u_2) + |
| @comment J_{m+1}(u_1)Z_{m-1}^{(j)}(u_2)\right]/B_2^{2n} \cr |
| @comment Ms_{2n+1}^{(j)}(x,q) & = \sum_{m=0}^\infty (-1)^{r+k} |
| @comment B_{2m+1}^{2n+1}(q)\left[J_m(u_1)Z_{m+1}^{(j)}(u_2) + |
| @comment J_{m+1}(u_1)Z_m^{(j)}(u_2)\right]/B_1^{2n+1} |
| @comment } |
| @comment $$ |
| @comment \afterdisplay |
| @comment @end tex |
| @comment @ifinfo |
| |
| @comment @example |
| @comment Mc_(2n)^(j)(x,q) = \sum_(m=0)^\infty (-1)^(r+k) A_(2m)^(2n)(q) |
| @comment [J_m(u_1)Z_m^(j)(u_2) + J_m(u_1)Z_m^(j)(u_2)]/A_2^(2n) |
| @comment Mc_(2n+1)^(j)(x,q) = \sum_(m=0)^\infty (-1)^(r+k) A_(2m+1)^(2n+1)(q) |
| @comment [J_m(u_1)Z_(m+1)^(j)(u_2) + J_(m+1)(u_1)Z_m^(j)(u_2)]/A_1^(2n+1) |
| @comment Ms_(2n)^(j)(x,q) = \sum_(m=1)^\infty (-1)^(r+k) B_(2m)^(2n)(q) |
| @comment [J_(m-1)(u_1)Z_(m+1)^(j)(u_2) + J_(m+1)(u_1)Z_(m-1)^(j)(u_2)]/B_2^(2n) |
| @comment Ms_(2n+1)^(j)(x,q) = \sum_(m=0)^\infty (-1)^(r+k) B_(2m+1)^(2n+1)(q) |
| @comment [J_m(u_1)Z_(m+1)^(j)(u_2) + J_(m+1)(u_1)Z_m^(j)(u_2)]/B_1^(2n+1) |
| @comment @end example |
| |
| @comment @end ifinfo |
| @comment @noindent |
| @comment where @c{$u_1 = \sqrt{q} \exp(-x)$} |
| @comment @math{u_1 = \sqrt@{q@} \exp(-x)} and @c{$u_2 = \sqrt@{q@} \exp(x)$} |
| @comment @math{u_2 = \sqrt@{q@} \exp(x)} and |
| @comment @tex |
| @comment \beforedisplay |
| @comment $$ |
| @comment \eqalign{ |
| @comment Z_m^{(1)}(u) & = J_m(u) \cr |
| @comment Z_m^{(2)}(u) & = Y_m(u) \cr |
| @comment Z_m^{(3)}(u) & = H_m^{(1)}(u) \cr |
| @comment Z_m^{(4)}(u) & = H_m^{(2)}(u) |
| @comment } |
| @comment $$ |
| @comment \afterdisplay |
| @comment @end tex |
| @comment @ifinfo |
| |
| @comment @example |
| @comment Z_m^(1)(u) = J_m(u) |
| @comment Z_m^(2)(u) = Y_m(u) |
| @comment Z_m^(3)(u) = H_m^(1)(u) |
| @comment Z_m^(4)(u) = H_m^(2)(u) |
| @comment @end example |
| |
| @comment @end ifinfo |
| @comment @noindent |
| @comment where @math{J_m(u)}, @math{Y_m(u)}, @math{H_m^{(1)}(u)}, and |
| @comment @math{H_m^{(2)}(u)} are the regular and irregular Bessel functions and |
| @comment the Hankel functions, respectively. |
| |
| For more information on the Mathieu functions, see Abramowitz and |
| Stegun, Chapter 20. These functions are defined in the header file |
| @file{gsl_sf_mathieu.h}. |
| |
| @menu |
| * Mathieu Function Workspace:: |
| * Mathieu Function Characteristic Values:: |
| * Angular Mathieu Functions:: |
| * Radial Mathieu Functions:: |
| @end menu |
| |
| @node Mathieu Function Workspace |
| @subsection Mathieu Function Workspace |
| |
| The Mathieu functions can be computed for a single order or |
| for multiple orders, using array-based routines. The array-based |
| routines require a preallocated workspace. |
| |
| @deftypefun {gsl_sf_mathieu_workspace *} gsl_sf_mathieu_alloc (size_t @var{n}, double @var{qmax}) |
| This function returns a workspace for the array versions of the |
| Mathieu routines. The arguments @var{n} and @var{qmax} specify the |
| maximum order and @math{q}-value of Mathieu functions which can be |
| computed with this workspace. |
| |
| @comment This is required in order to properly |
| @comment terminate the infinite eigenvalue matrix for high precision solutions. |
| @comment The characteristic values for all orders @math{0 \to n} are stored in |
| @comment the work structure array element @kbd{work->char_value}. |
| @end deftypefun |
| |
| @deftypefun void gsl_sf_mathieu_free (gsl_sf_mathieu_workspace @var{*work}) |
| This function frees the workspace @var{work}. |
| @end deftypefun |
| |
| @node Mathieu Function Characteristic Values |
| @subsection Mathieu Function Characteristic Values |
| @cindex Mathieu Function Characteristic Values |
| |
| @deftypefun int gsl_sf_mathieu_a (int @var{n}, double @var{q}, gsl_sf_result @var{*result}) |
| @deftypefunx int gsl_sf_mathieu_b (int @var{n}, double @var{q}, gsl_sf_result @var{*result}) |
| These routines compute the characteristic values @math{a_n(q)}, |
| @math{b_n(q)} of the Mathieu functions @math{ce_n(q,x)} and |
| @math{se_n(q,x)}, respectively. |
| @end deftypefun |
| |
| @deftypefun int gsl_sf_mathieu_a_array (int @var{order_min}, int @var{order_max}, double @var{q}, gsl_sf_mathieu_workspace @var{*work}, double @var{result_array}[]) |
| @deftypefunx int gsl_sf_mathieu_b_array (int @var{order_min}, int @var{order_max}, double @var{q}, gsl_sf_mathieu_workspace @var{*work}, double @var{result_array}[]) |
| These routines compute a series of Mathieu characteristic values |
| @math{a_n(q)}, @math{b_n(q)} for @math{n} from @var{order_min} to |
| @var{order_max} inclusive, storing the results in the array @var{result_array}. |
| @end deftypefun |
| |
| @node Angular Mathieu Functions |
| @subsection Angular Mathieu Functions |
| @cindex Angular Mathieu Functions |
| @cindex @math{ce(q,x)}, Mathieu function |
| @cindex @math{se(q,x)}, Mathieu function |
| |
| @deftypefun int gsl_sf_mathieu_ce (int @var{n}, double @var{q}, double @var{x}, gsl_sf_result @var{*result}) |
| @deftypefunx int gsl_sf_mathieu_se (int @var{n}, double @var{q}, double @var{x}, gsl_sf_result @var{*result}) |
| These routines compute the angular Mathieu functions @math{ce_n(q,x)} |
| and @math{se_n(q,x)}, respectively. |
| @end deftypefun |
| |
| @deftypefun int gsl_sf_mathieu_ce_array (int @var{nmin}, int @var{nmax}, double @var{q}, double @var{x}, gsl_sf_mathieu_workspace @var{*work}, double @var{result_array}[]) |
| @deftypefunx int gsl_sf_mathieu_se_array (int @var{nmin}, int @var{nmax}, double @var{q}, double @var{x}, gsl_sf_mathieu_workspace @var{*work}, double @var{result_array}[]) |
| These routines compute a series of the angular Mathieu functions |
| @math{ce_n(q,x)} and @math{se_n(q,x)} of order @math{n} from |
| @var{nmin} to @var{nmax} inclusive, storing the results in the array |
| @var{result_array}. |
| @end deftypefun |
| |
| @node Radial Mathieu Functions |
| @subsection Radial Mathieu Functions |
| @cindex Radial Mathieu Functions |
| |
| @deftypefun int gsl_sf_mathieu_Mc (int @var{j}, int @var{n}, double @var{q}, double @var{x}, gsl_sf_result @var{*result}) |
| @deftypefunx int gsl_sf_mathieu_Ms (int @var{j}, int @var{n}, double @var{q}, double @var{x}, gsl_sf_result @var{*result}) |
| These routines compute the radial @var{j}-th kind Mathieu functions |
| @c{$Mc_n^{(j)}(q,x)$} |
| @math{Mc_n^@{(j)@}(q,x)} and |
| @c{$Ms_n^{(j)}(q,x)$} |
| @math{Ms_n^@{(j)@}(q,x)} of order @var{n}. |
| |
| The allowed values of @var{j} are 1 and 2. |
| The functions for @math{j = 3,4} can be computed as |
| @c{$M_n^{(3)} = M_n^{(1)} + iM_n^{(2)}$} |
| @math{M_n^@{(3)@} = M_n^@{(1)@} + iM_n^@{(2)@}} and |
| @c{$M_n^{(4)} = M_n^{(1)} - iM_n^{(2)}$} |
| @math{M_n^@{(4)@} = M_n^@{(1)@} - iM_n^@{(2)@}}, |
| where |
| @c{$M_n^{(j)} = Mc_n^{(j)}$} |
| @math{M_n^@{(j)@} = Mc_n^@{(j)@}} or |
| @c{$Ms_n^{(j)}$} |
| @math{Ms_n^@{(j)@}}. |
| @end deftypefun |
| |
| @deftypefun int gsl_sf_mathieu_Mc_array (int @var{j}, int @var{nmin}, int @var{nmax}, double @var{q}, double @var{x}, gsl_sf_mathieu_workspace @var{*work}, double @var{result_array}[]) |
| @deftypefunx int gsl_sf_mathieu_Ms_array (int @var{j}, int @var{nmin}, int @var{nmax}, double @var{q}, double @var{x}, gsl_sf_mathieu_workspace @var{*work}, double @var{result_array}[]) |
| These routines compute a series of the radial Mathieu functions of |
| kind @var{j}, with order from @var{nmin} to @var{nmax} inclusive, storing the |
| results in the array @var{result_array}. |
| @end deftypefun |
| |