Is this the way to solve algebraic loops?

조회 수: 6 (최근 30일)
Ubaldo Tiberi
Ubaldo Tiberi 2012년 4월 4일
So far, I understand that to solve common algebraic loop problems, it´s enough to decouple the input/output direct feedthrough of every direct feedthrough block by adding a state variable between the input and the output. And, as far as I understand, this can be easily done with an IC block. Inserting this block is also equivalent to equip the direct feedthrough block with a state x that evolves like x(k+1)=x(k) (or \dot x=0), and to consider a switch of the output so that we have y=x at t=t0 and y=f(u) for t>t0, where x,u and y represent the state, the input and the output respectively). This is equivalent to force the output at the value of the IC block at t=t0, and the algebraic loop would be solved, isn’t it? But at this point, I would argue that it is possible to use any block for which you can set a initial condition/output (e.g. rate transition blocks for example), isn’t it? So, to solve an algebraic loop is enough to break it in just one point, right? Or there is more?

채택된 답변

Ubaldo Tiberi
Ubaldo Tiberi 2012년 4월 4일
I agree that using a delay block or a memory block is a solution. Actually you can use a delay block with inherited sample time even for continuous-time systems. The result is the same. However, by doing that, you are modifying the system behavior, and my challenge is to find a way to solve algebraic loops without changing the system dynamics... is it possible or it is necessary to insert this small time delay? :-)
  댓글 수: 1
K E
K E 2012년 4월 4일
If you wanted to see the effect on your system's dynamics, try the following,
1) Simulate without the Unit Delay, so the algebraic loop is there. Simulink will use a solver on the algebraic loop, http://www.mathworks.com/support/solutions/en/data/1-SKT69/index.html?solution=1-SKT69 . I am not sure how the solver affects the accuracy of the results. If you are lucky the solver will converge and your simulation will complete.
2) Simulate with the Unit Delay inserted, eliminating the loop.
3) Compare estimates of the dynamics from #1 to #2 (example: do time series of simulated position have similar frequency content and rms values?). If no difference, stick with #2. If there is a difference, you may need to reformulate your model. You can avoid algebraic loops with SimScape, see http://www.mathworks.cn/matlabcentral/answers/16802-algebraic-loop-and-simscape .

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

K E
K E 2012년 4월 4일
This note suggests an initial condition may not be sufficient to break algebraic loops. Instead you may need to directly introduce a time delay. If sample time is discrete, use the Unit Delay block. If sampling is continuous, use the Memory block. Introducing these delays can change your system's dynamics. This blog entry discusses reconsidering unphysical algebraic loops in your model.

카테고리

Help CenterFile Exchange에서 Configure Simulation Conditions에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by