Derivative of a multivariate function handle

1 visualización (últimos 30 días)
Swami
Swami el 13 de Oct. de 2024
Comentada: Matt J el 16 de Oct. de 2024
I have a function handle here with symbolic array variable 'y'. I would like to take derivative of the function for which I am using the eval function. But after this the symbolic array variable 'y' disappears and we have y1 and y2. So I cannot carry out the substitution as in the original function. Is there a way of preserving the symbolic array variable after differentiation? I need this as I will be using it later in fsolve. I actually have many such functions for which I would like to determine the variable array using fsolve later. The code below
syms y [1 2]
g = @(y) [y(1)*cos(y(2))+y(2)*sin(y(1))-0.5]
g = function_handle with value:
@(y)[y(1)*cos(y(2))+y(2)*sin(y(1))-0.5]
vpa(g([0.5 0.7]))
g1 = eval(['@(y)' char(-diff(g(y),y(1),1))])
g1 = function_handle with value:
@(y)-cos(y2)-y2*cos(y1)
g1([0.5 0.7])

Respuestas (2)

Matt J
Matt J el 13 de Oct. de 2024
Editada: Matt J el 13 de Oct. de 2024
Is this what you want?
syms y [1 2]
g = [y(1)*cos(y(2))+y(2)*sin(y(1))-0.5];
Jfun=matlabFunction(jacobian(g,y))
Jfun = function_handle with value:
@(y1,y2)[cos(y2)+y2.*cos(y1),sin(y1)-y1.*sin(y2)]
Jfun(0.5,0.7)
ans = 1×2
1.3791 0.1573
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
  2 comentarios
Swami
Swami el 16 de Oct. de 2024
Yes, exactly! Thank you!
Matt J
Matt J el 16 de Oct. de 2024
If so, please Accept-click the answer.

Iniciar sesión para comentar.


nick
nick el 13 de Oct. de 2024
Hi Swami,
I understand that you want to create a function handle for the differentiated function in which values can be substituted. You can use 'matlabFunction' function to convert the symboic function into function handle, as shown:
syms y [1 2]
g = @(y) [y(1)*cos(y(2))+y(2)*sin(y(1))-0.5];
vpa(g([0.5 0.7]))
g_diff = diff(g(y),y(1));
g1 = matlabFunction(g_diff, 'Vars', {y});
g1([0.5 0.7])
ans = 1.3791
You may refer to the following documentation to know more about 'matlabFunction' :

Categorías

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

Productos


Versión

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by