Create a local system of equations function from a set of anonymous functions
5 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(2 个)
Paul
2023-7-7
编辑:Paul
2023-7-7
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 个评论
Dyuman Joshi
2023-7-7
编辑:Dyuman Joshi
2023-7-7
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Symbolic Math Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!