Using if/action blocks within an algebraic loop?
6 次查看(过去 30 天)
显示 更早的评论
In Simulink, I am trying to use an algebraic loop to solve for a parameter. However, calculating this parameter requires a if/action block. Original code uses a Newton Raphson method, so I wanted to use an algebraic loop in place. It seems like it is not "allowed". I have "Input data dependency violation due action subsystems" and I'm pretty sure it's the feedback loop to create the algebraic loop.
In short: Is it possible to use if/action blocks within an algebraic loop? If not, then what other methods can I use?
0 个评论
采纳的回答
Guy Rouleau
2012-5-8
As you figured out, the algebraic loop solver uses a gradient descent method to solve the loop. The If/Else construct causes a discontinuity in the loop which is problematic for a gradient descent method.
When you have an algebraic loop, the blocks in the loop should be continuous both in time and values.
I recommend looking at the demo "sl_subsys_semantics". This demo contains many small models illustrating good and bad practices in this area.
very likely, you will need to either introduce a delay in the loop or rearrange your equations to avoid algebraic loops.
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Model and Validate Requirements 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!