Fsolve Intemidiate equations result

3 views (last 30 days)
Rofl One
Rofl One on 21 Oct 2021
Answered: Alan Weiss on 22 Oct 2021
have a problem with MatLAB fsolve. How can I get the intermediate calculations for a given function? not only for the desired variable, but also for the equations included in the system for fsolve
fsolve code
function solve_syst ()
a_init = -2;
b = 5;
c = 6;
d = 8;
syst_eq = @(a) syst_3 (a, b, c, d);
%options = optimoptions('fsolve','Display','none', 'outputFcn')
[a_vih, fval] = fsolve (syst_eq, a_init);
end
first eq
function x1 = syst_1 (a, b) %first eq
x1 = a * 6 + 2 * b;
end
second eq
function x2 = syst_2 (c, d)%second eq
x2 = c * 4 - d * 2;
end
system for fsolve
function [prov, x1, x2] = syst_3 (a, b, c, d) %system for fsolve
x1 = syst_1 (a, b)
x2 = syst_2 (c, d)
prov = x1 - x2;
end
fsolve calculates intermediate values ​​x1 and x2 (visible in the command window), but I cannot get these values ​​separately to use in further calculations

Answers (1)

Alan Weiss
Alan Weiss on 22 Oct 2021
You could use persistent variables along with assignin to write the variaible value to a workspace variable. Something like this:
function [prov, x1, x2] = syst_3 (a, b, c, d) %system for fsolve
persistent x1x2hist
x1 = syst_1 (a, b)
x2 = syst_2 (c, d)
x1x2hist = [x1x2hist;x1,x2];
assignin('base','x1x2hist',x1x2hist);
prov = x1 - x2;
end
That said, I think that it is a mistake to use fsolve to solve a linear system of equations. Instead, you should use the backslash command. You might also benefit from using the problem-based approach.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation

Tags

Products


Release

R2018b

Community Treasure Hunt

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

Start Hunting!