[ << ] [ < ] [ Acima ] [ > ] [ >> ]         [Topo] [Conteúdo] [Índice] [ ? ]

32 Transformada de Hankel Discreta

Esse capítulo descreve funções para executar Transformadas de Hankel Discretas (DHTs). As funções são declaradas no arquivo de cabeçalho ‘gsl_dht.h’.


[ << ] [ < ] [ Acima ] [ > ] [ >> ]         [Topo] [Conteúdo] [Índice] [ ? ]

32.1 Definições

A transformada de Hankel discreta atua sobre um vetor contendo amostras de dados, onde as amostras são assumidas terem sido tomadas em pontos relacionados com os zeros de uma função de Bessel de ordem fixada; compare esse caso com o caso da transformada de Fourier discreta, onde amostra são tomadas em pontos relacionados com os zeros da função seno ou da função cosseno.

Especificamente, tomemos f(t) sendo uma função sobre o intervalo unitário e j_(\nu,m) o m-ésimo zero da função de Bessel J_\nu(x). Então a transformada \nu-Hankel finita de f(t) é definida para ser o conjunto de números g_m dados por,

gm =
1

0 
t dt Jν(jν,mt) f(t),
de forma que,
f(t) =

m=1 
2 Jν(jν,mt)

Jν+1(jν,m)2
gm.
Suponhamos que f é limitada por banda no sentido de que g_m=0 para m > M. Então temos o seguinte teorema fundamental da amostragem.
gm = 2

jν,M2
M−1

k=1 
f
jν,k

jν,M

Jν(jν,m jν,k / jν,M)

Jν+1(jν,k)2
.
É essa expressão que define a transformada de Hankel discreta. O núcleo na simulação acima define a matriz da transformada \nu-Hankel de tamanho M-1. Os coeficientes dessa matriz, sendo dependente de \nu e de M, devem ser pré-calculado e armazenado; o objeto gsl_dht empacota esses dados. A função de alocação gsl_dht_alloc retorna um objeto gsl_dht que deve ser propriamente inicializado com gsl_dht_init antes de executar transformadas sobre vetores de amostras de dados, para um valor fixado de \nu e M, usando a função gsl_dht_apply. A implementação permite um ajuste proporcional do intervalo fundamental, por conveniência, de forma que pode assumir que a função é definida sobre o intervalo [0,X], em lugar de definida no intervalo unitário.

Presume-se que f(t) tende para zero nas extremidades do intervalo, consistente com a fórmula de inversão e a fórmula de amostragem fornecida acima. Portanto, essa transformada correspondes a uma expansão ortogonal nas autofunções do problema de Dirichlet (63)para a equação diferencial de Bessel (64).


[ << ] [ < ] [ Acima ] [ > ] [ >> ]         [Topo] [Conteúdo] [Índice] [ ? ]

32.2 Funções

Function: gsl_dht * gsl_dht_alloc (size_t size)

Essa função aloca um objeto de transformada de Hankel discreta de tamanho size.

Function: int gsl_dht_init (gsl_dht * t, double nu, double xmax)

Essa função inicializa a transformada t para os dados valores de nu e xmax.

Function: gsl_dht * gsl_dht_new (size_t size, double nu, double xmax)

Essa função aloca um objeto de transformada de Hankel discreta de tamanho size e inicializa-o com os valores dados de nu e xmax.

Function: void gsl_dht_free (gsl_dht * t)

Essa função libera a transformada t.

Function: int gsl_dht_apply (const gsl_dht * t, double * f_in, double * f_out)

Essa função aplica a transformada t ao vetor estático f_in cujo tamanho é igual ao tamanho da transformada. O resultado é armazenado no vetor estático f_out que deve ser do mesmo comprimento.

Aplicando essa função a sua saída fornece os dados originais multiplicados por (1/j_(\nu,M))^2, é de sua responsabilidade verificar erros numéricos.

Function: double gsl_dht_x_sample (const gsl_dht * t, int n)

Essa função retorna o valor do n-ésimo ponto da amostra no intervalo unitário, (j_{\nu,n+1}/j_{\nu,M}) X. Esses são os pontos onde a função f(t) teve suas amostras retiradas.

Function: double gsl_dht_k_sample (const gsl_dht * t, int n)

Essa função retorna o valor do n-ésimo ponto da amostra no “espaço de dimensão k”, j_{\nu,n+1}/X.


[ << ] [ < ] [ Acima ] [ > ] [ >> ]         [Topo] [Conteúdo] [Índice] [ ? ]

32.3 Referências e Leituras Adicionais

Os algoritmos usados por essas funções são descritos nos seguintes artigos,


[ << ] [ >> ]           [Topo] [Conteúdo] [Índice] [ ? ]

Esse documento foi gerado em 23 de Julho de 2013 usando texi2html 5.0.