You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The aim of this package is to provide fast orthogonal polynomial transforms that are designed for expansions of functions with any degree of regularity. There are multiple approaches to the classical connection problem, though the user does not need to know the specifics.
5
+
Orthogonal polynomials are instrumental in approximation theory, numerical analysis, and signal processing. `FastTransforms.jl` allows the user to conveniently work with orthogonal polynomials with degrees well into the millions. Many algorithms have been derived for accelerating orthogonal polynomial transforms, though the user need not know the specifics.
6
6
7
-
One approach is based on the use of asymptotic formulae to relate the transforms to a small number of fast Fourier transforms. Another approach is based on a Toeplitz-dot-Hankel decomposition of the matrix of connection coefficients. Alternatively, the matrix of connection coefficients may be decomposed hierarchically à la Fast Multipole Method.
7
+
Transforms include conversion between Jacobi polynomial expansions, with Chebyshev, Legendre, and ultraspherical polynomial transforms as special cases. For the signal processor, all three types of nonuniform fast Fourier transforms available. As well, spherical harmonic transforms and transforms between orthogonal polynomials on the triangle allow for the efficient simulation of partial differential equations of evolution.
8
+
9
+
Algorithms include methods based on asymptotic formulae to relate the transforms to a small number of fast Fourier transforms, matrix factorizations based on the Hadamard product, hierarchical matrix decompositions à la Fast Multipole Method, and the butterfly algorithm.
8
10
9
11
## The Chebyshev—Legendre Transform
10
12
@@ -52,28 +54,21 @@ The Chebyshev—Jacobi transform allows the fast conversion of Chebyshev expansi
The design and implementation is analogous to FFTW: there is a type `ChebyshevJacobiPlan`
70
-
that stores pre-planned optimized DCT-I and DST-I plans, recurrence coefficients,
71
-
and temporary arrays to allow the execution of either the `cjt` or the `icjt` allocation-free.
72
-
This type is constructed with either `plan_cjt` or `plan_icjt`. Composition of transforms
73
-
allows the Jacobi—Jacobi transform, computed via `jjt`. The remainder in Hahn's asymptotic expansion
74
-
is valid for the half-open square `(α,β) ∈ (-1/2,1/2]^2`. Therefore, the fast transform works best
75
-
when the parameters are inside. If the parameters `(α,β)` are not exceptionally beyond the square,
76
-
then increment/decrement operators are used with linear complexity (and linear conditioning) in the degree.
71
+
Composition of transforms allows the Jacobi—Jacobi transform, computed via `jjt`. The remainder in Hahn's asymptotic expansion is valid for the half-open square `(α,β) ∈ (-1/2,1/2]^2`. Therefore, the fast transform works best when the parameters are inside. If the parameters `(α,β)` are not exceptionally beyond the square, then increment/decrement operators are used with linear complexity (and linear conditioning) in the degree.
77
72
78
73
## Nonuniform fast Fourier transforms
79
74
@@ -85,6 +80,7 @@ The NUFFTs are implemented thanks to [Alex Townsend](https://github.com/ajt60gai
85
80
-`inufft2` inverts an `nufft2`.
86
81
87
82
Here is an example:
83
+
88
84
```julia
89
85
julia> n =10^4;
90
86
@@ -124,19 +120,20 @@ The Padua transform and its inverse are implemented thanks to [Michael Clarke](h
124
120
```julia
125
121
julia> n =200;
126
122
127
-
julia> N =div((n+1)*(n+2),2);
123
+
julia> N =div((n+1)*(n+2),2);
128
124
129
125
julia> v =rand(N); # The length of v is the number of Padua points
Let `F` be a matrix of spherical harmonic expansion coefficients arranged by increasing order in absolute value, alternating between negative and positive orders. Then `sph2fourier` converts the representation into a bivariate Fourier series, and `fourier2sph` converts it back.
135
+
Let `F` be a matrix of spherical harmonic expansion coefficients with columns arranged by increasing order in absolute value, alternating between negative and positive orders. Then `sph2fourier` converts the representation into a bivariate Fourier series, and `fourier2sph` converts it back.
It may be necessary to transform our representation to one in a new basis, say, ``\{\psi_m(x)\}_{m\ge0}``:
10
-
```math
11
-
f(x) = \sum_{m=0}^{\infty} g_m \psi_m(x).
12
-
```
13
-
In many cases of interest, both representations have finite dimension ``n`` and we seek a fast method (faster than ``\mathcal{O}(n^2)``) to transform the original coefficients ``f_{\ell}`` to the new coefficients ``g_m``.
5
+
Orthogonal polynomials are instrumental in approximation theory, numerical analysis, and signal processing. `FastTransforms.jl` allows the user to conveniently work with orthogonal polynomials with degrees well into the millions. Many algorithms have been derived for accelerating orthogonal polynomial transforms, though the user need not know the specifics.
6
+
7
+
Transforms include conversion between Jacobi polynomial expansions, with Chebyshev, Legendre, and ultraspherical polynomial transforms as special cases. For the signal processor, all three types of nonuniform fast Fourier transforms available. As well, spherical harmonic transforms and transforms between orthogonal polynomials on the triangle allow for the efficient simulation of partial differential equations of evolution.
14
8
15
-
A similar problem arises when we wish to evaluate ``f`` at a set of points ``\{x_m\}_{m=0}^n``. We wish to transform coefficients of ``f`` to values at the set of points in fewer than ``\mathcal{O}(n^2)`` operations.
9
+
Algorithms include methods based on asymptotic formulae to relate the transforms to a small number of fast Fourier transforms, matrix factorizations based on the Hadamard product, hierarchical matrix decompositions à la Fast Multipole Method, and the butterfly algorithm.
0 commit comments