Arithmetic and Manipulation
Temporal Variables in vip-ivp
are designed to behave like regular numerical variables. This allows users to define systems naturally and expressively. They support a wide range of operations out of the box.
Arithmetic Support
The TemporalVar
class implements all standard arithmetic operations:
- Addition:
x + y
- Subtraction:
x - y
- Multiplication:
x * y
- Division:
x / y
- Floor Division:
x // y
- Remainder (modulo) :
x % y
- Power:
x ** 2
- Negation:
-x
These operations return new TemporalVar
instances that represent the result of the operation over time.
z = x + 2 * y
These operations also work with Temporal Variables containing NumPy arrays and all other objects types that support arithmetic !
However, arithmetic does not work with Temporal Variables containing a dictionary.
Comparison Operator Support
Temporal variables also support comparison operators:
- Equal:
x == y
- Not equal:
x != y
- Greater than:
x > y
- Less than:
x < y
- Greater than or equal to:
x >= y
- Less than or equal to:
x <= y
These operations do not return booleans; instead, they return new TemporalVar instances containing a boolean and representing the condition's value over time.
condition = x > threshold
Item Getting
If a Temporal Variable contains a collection, its elements can be accessed using standard indexing. This returns a new TemporalVar
instance that represents the value of the selected element over time.
arr_child = arr[0]
dict_child = d["a"]
NumPy UFunc Support
vip-ivp
supports NumPy universal functions (ufuncs). You can use NumPy functions like np.sin
, np.exp
, np.abs
, etc., directly on TemporalVar
instances.
z = np.sin(x) + np.exp(y)
These expressions return new TemporalVar
instances.