How do I calculate a derivative of a time-variable parameter in SimBiology ?
1 次查看(过去 30 天)
显示 更早的评论
In SimBiology project I have a parameter that is time dependent. I need its time derivative to use in a formula. How do I calculate the time derivative in Simbiology ?
3 个评论
采纳的回答
Arthur Goldsipe
2015-10-21
Hi Sergey,
There is no way to directly access the time derivative or previous value of state in SimBiology. There are different workaround depending on what exactly you need to do. I just mentioned one approach in a comment on the previous "answer". The basic idea there turns the problem around: If you can write an expression for the time derivative of your parameter, you can store the value of the derivative by using that expression in a repeated assignment rule, and then you can use this parameter to define a rate rule.
If you do not have an analytic expression for the time derivative of your parameter, there is no straightforward way to access the derivative during simulations.
-Arthur
更多回答(1 个)
Chao'en Li
2015-10-20
I met the same problem.
For a reaction a + b = c, I set unknown Kinetic Law, with Reaction Rate as k*Ca*Cb,(Ca and Cb are concentrations of a and b)and repeated assignments: dc_dt = k*Ca*Cb, and Ca = Ca_0 + time*dc_dt (dc_dt is the derivative dc/dt, Ca_0 is the initial concentration of a).
But I got error message as "Repeated assignment rules cannot create algebraic loops (for example, 'x = y' and 'y = x'). The following rules introduce algebraic loops into the model: Ca = Ca + time*dc_dt'"
How to write the following rules: dc/dt(i)=k*Ca(i)*Cb(i), Ca(i+1)=Ca(i)+dc/dt(i)*dt(i)?
1 个评论
Arthur Goldsipe
2015-10-21
Repeated assignments are not systems of equations that are solved simultaneously. They are simple assignments that are evaluated sequentially at each time step, so they must have a well-defined order of evaluation. You cannot simultaneously have a repeated assignment rule for dc_dt that depends on Ca and a repeated assignment rule for Ca that depends on dc_dt.
I think the real problem is that the rule for Ca isn't really doing what you want. You want Ca to be defined by integrating dc_dt. In SimBiology, you do that with a rate rule. So what I think you want to do is:
- Add a repeated assignment rule, "dc_dt = k*Ca*Cb", and
- Add a rate rule, "Ca = dc_dt"
One thing that is potentially confusing here is that the left-hand side of the rate rule really means "the time derivative of Ca". In other words, a more traditional mathematical representation of this rate rule would be "d(Ca)/dt = dc_dt".
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Extend Modeling Environment 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!