How do you write a loop which loops certain equations until a particular condition is met?

6 Ansichten (letzte 30 Tage)
I have a couple design variables which are outputs from a true design point calculation:
% True Design Point Output: SDMFc_DP=10; TTR_DP=4;
The two variables above do not change at different design point conditions i.e. these values are constant no matter if the inputs are changed.
I run the previous calculation again using initially guessed inputs, stated below.
% Initially Guessed Inputs: r_c_ODPi=5; TET_ODPi=1000;
which results in these output:
% Initially Guess Design Point Outputs: SDMFc_ODPi=4; TTR_ODPi=6;
As previously stated the initially guessed design point outputs should equal the true design point outputs: SDMFc_DP==SDMFc_ODPi, and TTR_DP==TTR_ODPi. Therefore, I need to alter my inputs until this condition is met. The inputs are freely changeable.
Therefore, I'm looking for way to write an infinite loop that will alter the inputs: r_c_ODPi and TTR_ODPi by a certain value i.e +/- 0.001 for example until the condition of SDMFc_DP==SDMFc_ODPi and TTR_DP==TTR_ODPi, then when the condition is met to stop looping.
Apologies for the confusing nature of this. Hopefully I've explained it clearly enough.
Thanks for any assistance. Colin

Antworten (1)

Star Strider
Star Strider am 29 Mär. 2016
I don’t entirely understand what you want to do in terms of your calculations. It would seem that a while loop would be most appropriate. This is easiest with a ‘greater than’ or ‘less than’ condition. If your condition is to be ‘equal to’, be sure to include a tolerance value (perhaps 1E-4 or so) to account for floating-point approximation error and the inherent accumulation of these errors in iteration or calculation.
  2 Kommentare
Colin Rushworth
Colin Rushworth am 29 Mär. 2016
Bearbeitet: Colin Rushworth am 29 Mär. 2016
Thanks for your response.
I essentially want to loop different input conditions until the output is equal to those outputted from the design point calculation. But I first have to guess input values to allow for the looping process to begin. After I get those values I then want to loop different input values, changing them by specified value (+/- 0.01 for example) until the condition is met.
I will try the while loop, and thanks for bringing to my attention about the tolerance value. I'm just struggle on how to actually set the loop up.
Colin
Star Strider
Star Strider am 29 Mär. 2016
My pleasure.
Perhaps I’m failing to understand something, but is it possible to invert your ‘design point calculation’ so you can use the desired outputs as inputs to the inverted system and then just solve for the inputs of the ‘design point calculation’ as outputs of the inverted system?
Another option would be a nonlinear function minimisation or nonlinear curve-fitting approach. Genetic algorithms and the patternsearch function (Global Optimization Toolbox) would likely be more efficient than just iterating.
That said, a while loop would work like this:
X = 0;
Y = 0;
while Y < 9
X = X + 0.1;
Y = 10 * sin(X);
end
That’s definitely not the most efficient way to optimise a function, though!
It would be helpful if you shared your ‘design point calculation’. I certainly understand your not wanting to if it’s part of your research.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by