## `transform::laplace, transform::invlaplace` -- Laplace and inverse Laplace transform

#### Introduction

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

`transform::invlaplace(F, S, T)` computes the inverse Laplace transform of the expression F = F(S) with respect to the variable S at the point T.

#### Call(s)

`transform::laplace(f, t, s)`
`transform::invlaplace(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 or an unevaluated function call of domain type `transform::laplace` or `transform::invlaplace`, respectively.

### Overloadable:

`f`, `F`

#### Details

- An unevaluated function call is returned, if no explicit representation of the transform is found.

#### Example 1

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

    >> transform::laplace(exp(-a*t), t, s)

                                         1
                                       -----
                                       a + s

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

                                     exp(-a t)

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

    >> transform::laplace(t^10*exp(-a*t), t, s),
       transform::laplace(t^10*exp(-a*t), t, 2*a),
       transform::laplace(t^10*exp(-a*t), t, 1 + PI)

                         3628800    44800       3628800
                        ---------, --------, --------------
                               11        11              11
                        (a + s)    2187 a    (a + PI + 1)

Some further examples:

    >> transform::laplace(1 + exp(-a*t)*sin(b*t), t, s)

                                 1         b
                                 - + -------------
                                 s    2          2
                                     b  + (a + s)

    >> transform::invlaplace(1/(s^3 + s^5), s, t)

                                            2
                                           t
                                  cos(t) + -- - 1
                                           2

    >> transform::invlaplace(exp(-2*s)/(s^2 + 1) + s/(s^3 + 1), s, t)

                                        exp(-t)
          sin(t - 2) heaviside(t - 2) - ------- +
                                           3

                      /    /    1/2 \           /    1/2 \ \
                / t \ |    | t 3    |    1/2    | t 3    | |
             exp| - | | cos| ------ | + 3    sin| ------ | |
                \ 2 / \    \   2    /           \   2    / /
             -----------------------------------------------
                                    3

#### Example 2

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

    >> transform::laplace(exp(-t^3), t, s)

                                                  3
                        transform::laplace(exp(- t ), t, s)

Note that this is not an ordinary expression, but a domain element of domain type `transform::laplace`:

    >> domtype(%)

                                transform::laplace

The inverse of the formal transform yields the original expression:

    >> transform::invlaplace(%2, s, t)

                                            3
                                     exp(- t )

#### Example 3

The distribution `dirac` and the Heaviside function `heaviside` are handled:

    >> transform::laplace(dirac(t - 3), t, s)

                                     exp(-3 s)

    >> transform::invlaplace(1, s, t)

                                     dirac(t)

    >> transform::laplace(heaviside(t - PI), t, s)

                                    exp(-s PI)
                                    ----------
                                        s

#### Example 4

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

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

                      s transform::laplace(f(t), t, s) - f(0)

#### Changes

- `transform::invlaplace` used to be called `transform::ilaplace`.
- The Laplace transform is now overloadable by the first argument.

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