Implementing the Hilbert transformation

\begin{equation}H(f)(x) = \frac{1}{\pi}\lim_{\varepsilon \to 0} \int_{|x-y|>\varepsilon} \frac{1}{x-y}f(y) \, dy,\end{equation} appropriate for 1-dimensional cases, is quite easy in Mathematica. For example, a direct implementation of the convolution with the tempered distribution p.v. $1/(\pi u)$ is given here:

hilbertTransform[f_, u_, t_] :=  FullSimplify[Convolve[f, 1/u, u, t, PrincipalValue -> True]/\[Pi]]

hilbertTransform[#, v, w] & /@ Sin[v]

out: -Cos[w]

I am interested in the extension of the Hilbert transform into higher dimensions, for my purposes given by the Riesz transform: \begin{equation} \begin{split} R_jf(x)&=\pi^{\frac{-(n+1)}{2}}\Gamma(\frac{n+1}{2})\lim_{\epsilon\to 0}\int_{|y|>\epsilon}\frac{y_jf(x-y)}{|y|^{n+1}}dy\\ &=\pi^{\frac{-(n+1)}{2}}\Gamma(\frac{n+1}{2})\lim_{\epsilon\to 0}\int_{\mathbf{R}^n\backslash B_\epsilon(x)}\frac{(y_j-x_j)f(y)}{|x-y|^{n+1}}\,dy, \end{split} \end{equation} where $j = 1, \ldots, n$ and $y_j$ is the $j$th component of $y$ in $\mathbf{R}^n$. Also $x \in \mathbf{R}^n$, and for simplicity we can take $n = 2$. I have tried to use the Convolve function in 2D with the option PrincipalValue -> True, but Mathematica does not evaluate it. Even a numerical evaluation of the Riesz transformation would be more than enough and quite informative.



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.