Accelerating the pace of engineering and science

# 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
mldivideNonmatrix denominator
mrdivideNonmatrix denominator
ldivide
rdivide
eqDo not use with continuous variables
neDo 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
sqrtFor negative numbers, calculated as $\sqrt{|x|}·sign\left(x\right)$. For example, sqrt(–1) = –1.
abs Yes
logical Yes
sign Yes
floorScalar argumentYes
ceilScalar argumentYes
fixScalar argumentYes
roundScalar 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
```