Borrar filtros
Borrar filtros

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

5 visualizaciones (últimos 30 días)
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?

Respuesta aceptada

Steven Lord
Steven Lord el 9 de Abr. de 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 = 

Más respuestas (2)

David Hill
David Hill el 9 de Abr. de 2022
Why use symbolic and convert?
fun=@(x)[x(1)+x(2);x(1)*x(2)+5];
x=fsolve(fun,[0,1]);

Torsten
Torsten el 9 de Abr. de 2022
Editada: Torsten el 9 de Abr. de 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]);

Categorías

Más información sobre Symbolic Math Toolbox en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by