# Dynamic dependencies

All variables with dynamic inputs are evaluated dynamically — that is, their results are arrays indexed by Time.

**Example:** A series of dynamic definitions produce equations for distance, velocity, and acceleration:

`Acceleration: -9.8`

`Dt: 0.5`

`Time: Sequence(0, 6, Dt)`

`Velocity: Dynamic(0, Self[ Time - 1] + Acceleration*Dt)`

`Distance: Dynamic(100, Self[ Time - 1] + Velocity*Dt) →`

## Dynamic dependency arrows

If a variable is dynamically dependent on another variable, a gray arrow is drawn between the variables.

To show or hide dynamic dependency arrows:

- Select
**Set Diagram Style**from the Diagram menu to open the Diagram Style dialog. - Click in the
*Dynamic*checkbox to show dynamic arrows (or uncheck it to hide the arrows). - Click
**OK**to accept the change.

## Expressions inside dynamic loops

A dynamic loop is a sequence of variables beginning and ending at the same variable, with each consecutive variable dependent on the previous one. At least one variable in a dynamic loop is defined using the Dynamic function.

When the definition of a variable in a dynamic loop is evaluated, the definition is repeatedly evaluated in the context of `Time = t`

(as `t`

increments through the values of `Time`

). The value for any identifier that appears in an expression is implicitly sliced at `Time = t`

(unless it is explicitly offset in `Time`

). As an example, suppose `A`

is indexed by `Time`

, and `X`

is defined as:

During evaluation, `A`

would be an atom at any given time point since it is implicitly sliced across Time. When `A`

is not indexed by `Time`

, `Max(A, Time)`

simply returns `A`

, so that the above expression is equivalent to:

To add the greatest value of `A`

along `Time`

in this expression, you must introduce an extra variable to hold the maximum value, defined simply as `Max(A, Time)`

, and ensure that the two variables do not occur in the same dynamic loop.

If you attempt to operate over the Time dimension from within a dynamic loop, Analytica issues the warning: *“Encountered application of an array function over the Time index from within a dynamic loop. The semantics of this operation might be different than you expect.”*

## See Also

Enable comment auto-refresher