problem with symbolic to function handle
1 view (last 30 days)
Show older comments
lorenzo donadio
on 1 Nov 2016
Commented: Walter Roberson
on 1 Nov 2016
Hi, i have a symbolic function of 3 variables and then I compute its gradient and convert each entry of the gradient to a function handle,but some of them become function handles of less than 3 variables, and that makes the evaluation of the vector field more difficult, any ideas on how to solve this?
syms x y z
f=x*y*z+x*2*y
G=gradient(f)
Dx=matlabFunction(G(1));
Dy=matlabFunction(G(2));
Dz=matlabFunction(G(3));
[X,Y,Z]=meshgrid(-3:1:3);
Fx=Dx(Y,Z);
Fy=Dy(X,Z);
Fz=Dz(X,Y);
this code works but i would like it to work when i write:
Fx=Dx( X,Y,Z);
Fy=Dy(X,Y,Z);
Fz=Dz(X,Y,Z);
and this is what my function handles look like:
Dx =
@(y, z) y .* z + 2 .* y
Dy =
@(x, z) x .* z + 2 .* x
Dz =
@(x, y) x .* y
0 Comments
Accepted Answer
Steven Lord
on 1 Nov 2016
You can specify the list of input arguments the generated function or function handle should have using the 'Vars' parameter described in the documentation for the matlabFunction function. See the "Specify Input Arguments for Generated Function" example on that documentation page to see how to use this parameter.
3 Comments
More Answers (1)
Mischa Kim
on 1 Nov 2016
How about
syms x y z
f = x*y*z+x*2*y;
G = gradient(f);
m = matlabFunction(G);
[X,Y,Z] = meshgrid(-3:1:3);
m_eval = m(X,Y,Z);
See Also
Categories
Find more on Assumptions in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!