Note: This page has been translated by MathWorks. Please click here

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Iterate a function

**MuPAD® notebooks are not recommended. Use MATLAB® live scripts instead.**

**MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.**

`f @@ n`

_fnest(`f`

,`n`

)

`f@@n`

represents the `n`

-fold
iterate `x -> f(f(...(f(x))...))`

of the function `f`

.

The statement `f@@n`

is equivalent to the call ```
_fnest(f,
n)
```

.

For positive `n`

, `f@@n`

is
also equivalent to `_fconcat(f $ n)`

.

`f@@0`

returns the identity map `id`

.

If `f`

is a function
environment with the slot `"inverse"`

set, `n`

can
also be negative. Cf. Example 2.

Iteration is only reasonable for functions that accept their
own return values as input. Note that `fp::fixargs`

is a handy tool for converting
functions with parameters to univariate functions which may be suitable
for iteration. Cf. Example 3.

For a nonnegative integer `n`

, `f@@n`

is
equivalent to an `_fconcat`

call:

f@@4, (f@@4)(x)

`@@`

simplifies the composition of symbolic
iterates:

(f@@n)@@m

The iterate may be called like any other MuPAD^{®} function.
If `f`

evaluates to a procedure and `n`

to
an integer, a corresponding value is computed:

f := x -> x^2: (f@@n)(x) $ n = 0..10

delete f:

For functions with a known inverse function, `n`

may
be negative. The function `f`

must have been declared
as a function environment with the `"inverse"`

slot.
Examples of such functions include the trigonometric functions which
are implemented as function environments in MuPAD:

sin::"inverse", sin@@-3, (sin@@(-3))(x)

`@@`

can only be used for functions that accept
their own output domain as an input, i.e.,
for some set *M*.
If you want to use `@@`

with a function which needs
additional parameters, `fp::fixargs`

is
a handy tool to generate a corresponding univariate function. In the
following call, the function `f: x -> g(x, p)`

is
iterated:

g := (x, y) -> x^2 + y: f := fp::fixargs(g, 1, p): (f@@4)(x)

delete g, f:

Function

Was this topic helpful?