Create a local system of equations function from a set of anonymous functions
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello,
I have a set of N anounimous functions which are created using this code
equations = {'@(x1,x2)x1.^2+x2-6','@(x1,x2)-2.5.*x1+x2.^2-2'};%Set your equations
N = numel(equations);
f = cell(1,N);
for i = 1:N
f{i} = str2func(equations{i});
end
The thing is, in a later part of the program I would like to use fsolve to solve the system of equation and fsolve requires the a function in this equivalent form:
function F = root2d(x)
F(1) = x(1).^2+x(2)-6;
F(2) = -2.5.*x(1)+x(2).^2-2;
end
where root2d is the function inputted in fsolve. I was wondering if there was a way to create a function in this form from the upper form or a way to use fsolve using the upper form?
Kind regards
0 Commenti
Risposte (2)
Paul
il 7 Lug 2023
Modificato: Paul
il 7 Lug 2023
One approach:
equations = {'@(x1,x2)x1.^2+x2-6','@(x1,x2)-2.5.*x1+x2.^2-2'};%Set your equations
N = numel(equations);
f = cell(1,N);
for i = 1:N
f{i} = str2func(equations{i});
end
F = @(x) cellfun(@(func) func(x(1),x(2)),f)
sol1 = fsolve(F,[2 2])
F(sol1)
[f{1}(sol1(1),sol1(2)) , f{2}(sol1(1),sol1(2))]
0 Commenti
Dyuman Joshi
il 7 Lug 2023
Modificato: Dyuman Joshi
il 7 Lug 2023
Another approach (Note - requires Symbolic Toolbox)
equations = {'@(x1,x2) x1.^2+x2-6','@(x1,x2) -2.5.*x1+x2.^2-2'};%Set your equations
f = str2sym(equations);
z = matlabFunction(f,"File", "root2d", "Vars",{symvar(f)});
out = fsolve(z,[2 2])
z(out)
0 Commenti
Vedere anche
Categorie
Scopri di più su Symbolic Math Toolbox in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!