Solving an algebraic loop / iterative loop in MATLAB

Hello everyone!
I have the following problem: I have an iteration loop, that has to converge to a certain value of a vector x, where during the loop the iteration is calulated directly from with a nonlinear function f. At some point is fulfilled (the "distance" between both vectors is smaller than a predefined tolerance value) and the iterations can stop.
I found, that in Simulink this would be called an "algebraic loop" and that simulink can solve this (i also made use of that in the past). The thing now is, that i have this in a matlab code. For now, this is solved with a self-made variable gain controller and a feedback loop.
I was wondering, if there is some way to solve this with matlab onboard tools. In most cases i think that onboard tools are more reliable and faster than self-coded stuff is. I am looking for something like
x = iterate(@f,x0,opts);
that does this.
Any ideas?
Thanks a lot and best wishes so far
Thomas

3 Comments

maybe fsolve or fzero
Hello,
and thanks for the answer. The problem, as I see it, is that the vector x in the common optimization or search algorithms is varied by the algorithm itself. In my case, I want to vary the vector on my own, with the function I have. So I have basically two outputs ( and ) at the same time. Common algorithms in matlab only take one objective and work on x for themselves.
But the problem of iterating until something converged is not very uncommon, so I think there must be some sort of algorithm in MATLAB to deal with that problem.
Does anybody know how to solve this?
Best
Thomas
Hello,
I think I found a possible solution. By using the fminunc function, setting SpecifyObjectiveGradient to true and supplying a user defined function to calculate the gradient, I could solve problem.
Maybe this works and is better than the self-made solution.
Thanks a lot and best wishes
Thomas

Sign in to comment.

Answers (0)

Asked:

on 22 Jun 2020

Commented:

on 23 Jun 2020

Community Treasure Hunt

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

Start Hunting!