~ubuntu-branches/ubuntu/dapper/gsl-ref-html/dapper

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<HTML>
<HEAD>
<!-- This HTML file has been created by texi2html 1.54+ (gsl)
     from /home/bjg/gsl.redhat/doc/gsl-ref.texi on 14 September 2005 -->

<TITLE>GNU Scientific Library -- Reference Manual - Discrete Hankel Transforms</TITLE>
<link href="gsl-ref_32.html" rel=Next>
<link href="gsl-ref_30.html" rel=Previous>
<link href="gsl-ref_toc.html" rel=ToC>

</HEAD>
<BODY>
<p>Go to the <A HREF="gsl-ref_1.html">first</A>, <A HREF="gsl-ref_30.html">previous</A>, <A HREF="gsl-ref_32.html">next</A>, <A HREF="gsl-ref_50.html">last</A> section, <A HREF="gsl-ref_toc.html">table of contents</A>.
<P><HR><P>


<H1><A NAME="SEC431" HREF="gsl-ref_toc.html#TOC431">Discrete Hankel Transforms</A></H1>
<P>
<A NAME="IDX2055"></A>
<A NAME="IDX2056"></A>
<A NAME="IDX2057"></A>
This chapter describes functions for performing Discrete Hankel
Transforms (DHTs).  The functions are declared in the header file
<TT>`gsl_dht.h'</TT>.

</P>



<H2><A NAME="SEC432" HREF="gsl-ref_toc.html#TOC432">Definitions</A></H2>

<P>
The discrete Hankel transform acts on a vector of sampled data, where
the samples are assumed to have been taken at points related to the
zeroes of a Bessel function of fixed order; compare this to the case of
the discrete Fourier transform, where samples are taken at points
related to the zeroes of the sine or cosine function.

</P>
<P>
Specifically, let f(t) be a function on the unit interval.
Then the finite \nu-Hankel transform of f(t) is defined
to be the set of numbers g_m given by,
so that,
Suppose that f is band-limited in the sense that
g_m=0 for m &#62; M. Then we have the following
fundamental sampling theorem.
It is this discrete expression which defines the discrete Hankel
transform. The kernel in the summation above defines the matrix of the
\nu-Hankel transform of size M-1.  The coefficients of
this matrix, being dependent on \nu and M, must be
precomputed and stored; the <CODE>gsl_dht</CODE> object encapsulates this
data.  The allocation function <CODE>gsl_dht_alloc</CODE> returns a
<CODE>gsl_dht</CODE> object which must be properly initialized with
<CODE>gsl_dht_init</CODE> before it can be used to perform transforms on data
sample vectors, for fixed \nu and M, using the
<CODE>gsl_dht_apply</CODE> function. The implementation allows a scaling of
the fundamental interval, for convenience, so that one can assume the
function is defined on the interval [0,X], rather than the unit
interval.

</P>
<P>
Notice that by assumption f(t) vanishes at the endpoints
of the interval, consistent with the inversion formula
and the sampling formula given above. Therefore, this transform
corresponds to an orthogonal expansion in eigenfunctions
of the Dirichlet problem for the Bessel differential equation.

</P>



<H2><A NAME="SEC433" HREF="gsl-ref_toc.html#TOC433">Functions</A></H2>

<P>
<DL>
<DT><U>Function:</U> gsl_dht * <B>gsl_dht_alloc</B> <I>(size_t <VAR>size</VAR>)</I>
<DD><A NAME="IDX2058"></A>
This function allocates a Discrete Hankel transform object of size
<VAR>size</VAR>.
</DL>

</P>
<P>
<DL>
<DT><U>Function:</U> int <B>gsl_dht_init</B> <I>(gsl_dht * <VAR>t</VAR>, double <VAR>nu</VAR>, double <VAR>xmax</VAR>)</I>
<DD><A NAME="IDX2059"></A>
This function initializes the transform <VAR>t</VAR> for the given values of
<VAR>nu</VAR> and <VAR>x</VAR>.
</DL>

</P>
<P>
<DL>
<DT><U>Function:</U> gsl_dht * <B>gsl_dht_new</B> <I>(size_t <VAR>size</VAR>, double <VAR>nu</VAR>, double <VAR>xmax</VAR>)</I>
<DD><A NAME="IDX2060"></A>
This function allocates a Discrete Hankel transform object of size
<VAR>size</VAR> and initializes it for the given values of <VAR>nu</VAR> and
<VAR>x</VAR>.
</DL>

</P>
<P>
<DL>
<DT><U>Function:</U> void <B>gsl_dht_free</B> <I>(gsl_dht * <VAR>t</VAR>)</I>
<DD><A NAME="IDX2061"></A>
This function frees the transform <VAR>t</VAR>.
</DL>

</P>
<P>
<DL>
<DT><U>Function:</U> int <B>gsl_dht_apply</B> <I>(const gsl_dht * <VAR>t</VAR>, double * <VAR>f_in</VAR>, double * <VAR>f_out</VAR>)</I>
<DD><A NAME="IDX2062"></A>
This function applies the transform <VAR>t</VAR> to the array <VAR>f_in</VAR>
whose size is equal to the size of the transform.  The result is stored
in the array <VAR>f_out</VAR> which must be of the same length.
</DL>

</P>
<P>
<DL>
<DT><U>Function:</U> double <B>gsl_dht_x_sample</B> <I>(const gsl_dht * <VAR>t</VAR>, int <VAR>n</VAR>)</I>
<DD><A NAME="IDX2063"></A>
This function returns the value of the <VAR>n</VAR>-th sample point in the unit interval,
(j_{\nu,n+1}/j_{\nu,M}) X. These are the
points where the function f(t) is assumed to be sampled.
</DL>

</P>
<P>
<DL>
<DT><U>Function:</U> double <B>gsl_dht_k_sample</B> <I>(const gsl_dht * <VAR>t</VAR>, int <VAR>n</VAR>)</I>
<DD><A NAME="IDX2064"></A>
This function returns the value of the <VAR>n</VAR>-th sample point in "k-space",
j_{\nu,n+1}/X.
</DL>

</P>


<H2><A NAME="SEC434" HREF="gsl-ref_toc.html#TOC434">References and Further Reading</A></H2>

<P>
The algorithms used by these functions are described in the following papers,

</P>

<UL>
<LI>

H. Fisk Johnson, Comp. Phys. Comm. 43, 181 (1987).
</UL>


<UL>
<LI>

D. Lemoine, J. Chem. Phys. 101, 3936 (1994).
</UL>

<P><HR><P>
<p>Go to the <A HREF="gsl-ref_1.html">first</A>, <A HREF="gsl-ref_30.html">previous</A>, <A HREF="gsl-ref_32.html">next</A>, <A HREF="gsl-ref_50.html">last</A> section, <A HREF="gsl-ref_toc.html">table of contents</A>.
</BODY>
</HTML>