Effacer les filtres
Effacer les filtres

Nonscalar arrays of function handles are not allowed; use cell arrays instead.

5 vues (au cours des 30 derniers jours)
syms o p
fun1=o+p;
fun2=o*p+5;
eq1=matlabFunction(fun1);
eq2=matlabFunction(fun2);
bbb=fsolve(@(o,p) [eq1;eq2],[0,1]);
What am I doing wrong?

Réponse acceptée

Steven Lord
Steven Lord le 9 Avr 2022
You need to evaluate the function handles in your fsolve call. Alternately you could skip converting the symbolic expressions into function handles and use solve.
syms o p
fun1=o+p;
fun2=o*p+5;
eq1=matlabFunction(fun1);
eq2=matlabFunction(fun2);
bbb=fsolve(@(op) [eq1(op(1), op(2));eq2(op(1), op(2))],[0,1]) % or
Equation solved. fsolve completed because the vector of function values is near zero as measured by the value of the function tolerance, and the problem appears regular as measured by the gradient.
bbb = 1×2
-2.2361 2.2361
bbb2 = solve(eq1, eq2, o, p)
bbb2 = struct with fields:
o: [2×1 sym] p: [2×1 sym]
vpa(bbb2.o, 5)
ans = 
vpa(bbb2.p, 5)
ans = 

Plus de réponses (2)

David Hill
David Hill le 9 Avr 2022
Why use symbolic and convert?
fun=@(x)[x(1)+x(2);x(1)*x(2)+5];
x=fsolve(fun,[0,1]);
  1 commentaire
Tevel Hedi
Tevel Hedi le 9 Avr 2022
i need it to be symbolic in my main code where i use a script of that sort.

Connectez-vous pour commenter.


Torsten
Torsten le 9 Avr 2022
Modifié(e) : Torsten le 9 Avr 2022
syms o p
fun1 = o+p;
fun2 = o*p+5;
fun = [fun1,fun2];
eq = matlabFunction(fun);
bbb = fsolve(@(x)eq(x(1),x(2)),[0,1]);

Catégories

En savoir plus sur Symbolic Math Toolbox dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by