Hello,

I have a few seemingly simple questions but just can’t figure out the answer myself. I am using Catalyst to define my model. My first question is how do I find the default values I defined for the variables? for example if I have:

@variables a=1 b=10

How do I find out the value of a and b in julia?

The second question is if I have an expression

f = 10*a+b

can I evaluate the expression f?

I just can’t figure out how to do them.

Thanks in advance for you help!

Wenzhe

`@variables a=1 b=10`

instantiates symbolic variables with default values or initial guesses to be `1`

and `10`

. It doesn’t mean that `a`

is assigned to be `1`

and `b`

is assigned to be `10`

Thanks. Is there a way to check the default values? And is there a way to assign these value in an expression containing a and b?

Given a `ReactionSystem`

you can call `ModelingToolkit.defaults(sys)`

to get the current defaults. You can use `Catalyst.setdefaults!`

, to add defaults to a system.

That will work. But my question is just to evaluate an expression with these predefined @variables. I don’t understand how the variable definition is done on a lower level, and I didn’t find a function to evaluate a user-defined expression. The question has bothered me for a long time.

@isaacsas @YingboMa

Those values are, as far as I am aware, solely used when creating an `ODEProblem`

or such to specify the initial condition vector, `u0`

, and the parameter value vector, `p`

, – they aren’t used in the symbolic expressions at all.

If you want to substitute concrete values into a symbolic expression you can use `Symbolics.substitute`

like

```
using ModelingToolkit, Symbolics
@parameters k
@variables t A(t)
ex = A^2 * k
val = substitute(ex, Dict(A => 2.0, k => 3.0))
```

1 Like

Thanks @isaacsas, this is helpful!