Iterative solution of non-linear equation with a provided guess value?

5 Ansichten (letzte 30 Tage)
Raihan Rahmat Rabi
Raihan Rahmat Rabi am 23 Jul. 2021
Beantwortet: Matt J am 24 Jul. 2021
I am looking for a solution to the problem:
ag_p*Gamma_p - Sa = 0 with Gamma_p = A+B*ag_p.
A, B and Sa are constants.
This can be solved by performing iterations starting with a certain guess value for ag_p.
Note: I have solved it through FZERO function as given below. I am interested to iteratively solve the equation by assigning a guess value to ag_p, let's say from [0...inf], which updates Gamma_p and the iterations are performed until the solution is found ( Something similar to Solve Block in MathCAD). I need to have a numerical value for Gamma_p in each iteration because I will be comparing its value with another constant parameter to define some "if" conditions.
Sa = 2.7956;
A = 2.24;
B = 0.5547;
Gamma_p = @(ag_p) A+B*ag_p;
f = @(ag_p) ag_p*Gamma_p(ag_p) - Sa;
z = fzero(@(ag_p) f(ag_p), 1E-3)
Thank you,

Antworten (2)

Matt J
Matt J am 23 Jul. 2021
Bearbeitet: Matt J am 23 Jul. 2021
Using fsolve() instead of fzero(), you could solve the problem as a system of two equations in two unknowns. The two unknowns are [ag_p, Gamma_p] and the two equations are,
ag_p*Gamma_p - Sa = 0
B*ag_p + A - Gamma_p = 0

Matt J
Matt J am 24 Jul. 2021
You could use fzero's OutputFcn option
to access the sequence of ag_p iterates. It is then a simple matter to generate the corresponding sequence of Gamma_p values using the equation Gamma_p = A+B*ag_p.

Kategorien

Mehr zu Optimization finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by