## `transform::fourier, transform::invfourier` -- Fourier and inverse Fourier transform

#### Introduction

`transform::fourier(f, t, s)` computes the Fourier transform int(f*exp(I*s*t), t=-infinity..infinity) of the expression f = f(t) with respect to the variable t at the point s.

`transform::invfourier(F, S, T)` computes the inverse Fourier transform 1/2/PI* int(F*exp(-I*S*T), S=-infinity..infinity) of the expression F = F(S) with respect to the variable S at the point T.

#### Call(s)

`transform::fourier(f, t, s)`
`transform::invfourier(F, S, T)`

#### Parameters

`f, F` | - | arithmetical expressions
`t, S` | - | identifiers (the transformation variables)
`s, T` | - | arithmetical expressions (the evaluation points)

#### Returns

an arithmetical expression

### Overloadable:

`f`, `F`

#### Related Functions

`numeric::fft`, `numeric::invfft`

#### Details

- An unevaluated function call is returned, if no explicit representation of the transform is found.
- `transform::invfourier(F, S, T)` is computed as

      transform::fourier(F, S, -T)/2/PI.

  This result is returned, if no explicit representation of the transformation is found.
- The discrete Fourier transform is implemented by the functions `numeric::fft` and `numeric::invfft`.

#### Example 1

The following call produces the Fourier transform as an expression in the variable `s`:

    >> transform::fourier(exp(-t^2), t, s)

                                          /    2 \
                                   1/2    |   s  |
                                 PI    exp| - -- |
                                          \   4  /

    >> transform::invfourier(%, s, t)

                                            2
                                     exp(- t )

Note that the Fourier transform can be evaluated directly at a specific point such as s = 2*a or s = 5:

    >> transform::fourier(t*exp(-a*t^2), t, s),
       transform::fourier(t*exp(-a*t^2), t, 2*a),
       transform::fourier(t*exp(-a*t^2), t, 2)

                           /    2  \
                    1/2    |   s   |                       1/2    /   1 \
          1/2 I s PI    exp| - --- |      1/2          I PI    exp| - - |
                           \   4 a /  I PI    exp(-a)             \   a /
          --------------------------, ---------------, ------------------
                      3/2                   1/2                3/2
                     a                     a                  a

#### Example 2

An unevaluated call is returned, if no explicit representation of the transform is found:

    >> transform::fourier(besselJ(0, 1/(1 + t^2)), t, s)

                                   /        /      1    \       \
                 transform::fourier| besselJ| 0, ------ |, t, s |
                                   |        |     2     |       |
                                   \        \    t  + 1 /       /

    >> transform::invfourier(%, s, t)

                                      /      1    \
                               besselJ| 0, ------ |
                                      |     2     |
                                      \    t  + 1 /

Note that the inverse transform is related to the direct transform:

    >> transform::invfourier(unknown(s), s, t)

                       transform::fourier(unknown(s), s, -t)
                       -------------------------------------
                                       2 PI

#### Example 3

The distribution `dirac` is handled:

    >> transform::fourier(t^3, t, s)

                                2 I PI dirac(s, 3)

    >> transform::invfourier(%, s, t)

                                         3
                                        t

    >> transform::fourier(heaviside(t - t0), t, s)

                                      /               I \
                          exp(I s t0) | PI dirac(s) + - |
                                      \               s /

#### Example 4

The Fourier transform of a function is related to the Fourier transform of its derivative:

    >> transform::fourier(diff(f(t), t), t, s)

                        -I s transform::fourier(f(t), t, s)

#### Background

- Reference: F. Oberhettinger, ``Tables of Fourier Transforms and Fourier Transforms of Distributions'', Springer, 1990.

#### Changes

- `transform::invfourier` used to be called `transform::ifourier`.

Do you have questions or comments?
Copyright © SciFace Software GmbH & Co. KG 2000