How to create a syms vector

How do I generate symbolic variables that I can put into a fminsearch function?
x = sym('x', [1 2]);
fun1 = 4*x(1)^2+3*x(2)+2
myfun = matlabFunction(fun1,'Vars',x);
[xout,fval,exitflag,output] = fminsearch(myfun,[1 ,2])
I tried the code above, however myfun ends up being a function of two variables x1 and x2
@(x1,x2) x2.*3.0 + x1.^2.*4.0 + 2.0
So I have to rewrite the function by hand because I don't know how to generate a symbolic function that looks like this
x(1) x(2)
So I end up rewriting the function
@(x) x(2).*3.0+x(1).^2.*4.0+2.0
and this works
myfun2 =@(x) x(2).*3.0+x(1).^2.*4.0+2.0
[xout,fval,exitflag,output] = fminsearch(myfun2,[1 ,2])
So How do I generate a symbolic vector of x that can allow me to turn fun1 into myfun2

 Respuesta aceptada

Walter Roberson
Walter Roberson el 13 de Mayo de 2020

0 votos

x = sym('x', [1 2]);
fun1 = 4*x(1)^2+3*x(2)+2
myfun = matlabFunction(fun1,'Vars',{x}); %small difference from what you had
[xout,fval,exitflag,output] = fminsearch(myfun,[1 ,2])

1 comentario

Steven
Steven el 13 de Mayo de 2020
Amazing what curly braces will do, Thanks

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Symbolic Math Toolbox en Centro de ayuda y File Exchange.

Productos

Versión

R2019a

Etiquetas

Preguntada:

el 13 de Mayo de 2020

Comentada:

el 13 de Mayo de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by