# equations

Define component equations

## Syntax

```equations Expression1 == Expression2; end ```

## Description

`equations` begins the equation section in a component file; this section is terminated by an `end` keyword. It is executed throughout the simulation. The purpose of the equation section is to establish the mathematical relationships among a component's variables, parameters, inputs, outputs, time and the time derivatives of each of these entities. All members declared in the component are available by their name in the equation section.

The following syntax defines a simple equation.

```equations Expression1 == Expression2; end ```

The statement `Expression1 == Expression2` is an equation statement. It specifies continuous mathematical equality between two objects of class `Expression`. An `Expression` is any valid MATLAB® expression that does not use any of the relational operators: `==`, `<`, `>`, `<=`, `>=`, ~`=`, `&&`, `||`. `Expression` may be constructed from any of the identifiers defined in the model declaration.

The equation section may contain multiple equation statements. You can also specify conditional equations by using `if` statements as follows:

```equations if Expression ExpressionList { elseif Expression ExpressionList } else ExpressionList end end ```

 Note   The total number of equation expressions, their dimensionality, and their order must be the same for every branch of the `if-elseif-else` statement.

You can define intermediate terms and use them in equations by using `let` statements as follows:

```equations let declaration clause in expression clause end end ```

The declaration clause assigns an identifier, or set of identifiers, on the left-hand side of the equal sign (`=`) to an equation expression on the right-hand side of the equal sign:

``` LetValue = EquationExpression ```

The expression clause defines the scope of the substitution. It starts with the keyword `in`, and may contain one or more equation expressions. All the expressions assigned to the identifiers in the declaration clause are substituted into the equations in the expression clause during parsing.

 Note   The `end` keyword is required at the end of a `let-in-end` statement.

The following rules apply to the equation section:

• `EquationList` is one or more objects of class `EquationExpression`, separated by a comma, semicolon, or newline.

• `EquationExpression` can be one of:

• `Expression`

• Conditional expression (`if-elseif-else` statement)

• Let expression (`let-in-end` statement)

• `Expression` is any valid MATLAB expression. It may be formed with the following operators:

• In the equation section, `Expression` may not be formed with the following operators:

• The `colon` operator may take only constants or `end` as its operands.

• All members of the component are accessible in the equation section, but none are writable.

The following MATLAB functions can be used in the equation section. The table contains additional restrictions that pertain only to the equation section. It also indicates whether a function is discontinuous. If the function is discontinuous, it introduces a zero-crossing when used with one or more continuous operands.

Supported Functions

NameRestrictionsDiscontinuous
`plus`
`uplus`
`minus`
`uminus`
`mtimes`
`times`
`mpower`
`power`
`mldivide`Nonmatrix denominator
`mrdivide`Nonmatrix denominator
`ldivide`
`rdivide`
`eq`Do not use with continuous variables
`ne`Do not use with continuous variables
`lt`
`gt`
`le`
`ge`
`and` Yes
`or` Yes
`sin`
`cos`
`tan`
`asin`
`acos`
`atan`
`atan2`
`log`
`log10`
`sinh`
`cosh`
`tanh`
`exp`
`sqrt`For negative numbers, calculated as $\sqrt{|x|}·sign\left(x\right)$. For example, `sqrt`(–1) = –1.
`abs` Yes
`logical` Yes
`sign` Yes
`floor`Scalar argumentYes
`ceil`Scalar argumentYes
`fix`Scalar argumentYes
`round`Scalar argumentYes

## Examples

For a component where x and y are declared as 1x1 variables, specify an equation of the form y = x2:

```equations y == x^2; end ```

For the same component, specify the following piecewise equation:

This equation, written in the Simscape™ language, would look like:

```equations if x >= -1 && x <= 1 y == x; else y == x^2; end end ```