2010-02-21 1 views
10

Dire se definisco il seguente:come si fa la differenziazione simbolica sulla funzione di gestione?

g = @(x) x/sqrt(x^2+1) 

Come faccio ad avere la funzione derivata per il g, che posso utilizzare per valutare in punti diversi?

Ho provato toolkit matematica simbolica, e provato il seguente:

>> syms x 

>> f = x/sqrt(x^2+1) 

f = 

x/(x^2 + 1)^(1/2) 

>> diff(f) 

ans = 

1/(x^2 + 1)^(1/2) - x^2/(x^2 + 1)^(3/2) 

Tuttavia, non riesco a capire come trasformare questo in una funzione maniglia/valutare in punti diversi. Tuttavia, preferisco fare differenziazione su function_handle.

Grazie mille!

Jason

risposta

9

È possibile utilizzare matlabFunction per convertire un equazione simbolica a una funzione. Ad esempio:

syms x1 x2; 
f1 = x1^2+x2^2; 
Df1 = jacobian(f1, [x1 x2]); 
Df1 = matlabFunction(Df1); 

Quindi Df1 (0, 0) restituisce [0 0] come previsto.

La funzione matlabFunction era introduced in version 5.2 (R2009a) di Symbolic Math Toolbox.

+2

@ jmbr: Dal momento che le nostre risposte erano così simili, ho appena eliminato il mio e aggiunto il suo contenuto al tuo. – gnovice

+0

Eccellente. Grazie, gnovice. – jmbr