Derivate in grande
Se non sbaglio, definiti: $\vec x(t)=((x_1(t)),(x_2(t)),(...),(...),(x_n(t))): RR rarr RR^n $ e $f(\vecx)=((f_1(x_1,x_2,..., x_n)),(f_2(x_1,x_2,..., x_n)),(...),(...),(f_m(x_1,x_2,..., x_n))): RR^n rarr RR^m$ allora $(delf(\vec x))/(del\vec x)$ dovrebbe essere la matrice Jacobiana di f e in particolare $(del\vec x)/(del\vec x)$ = $I_n$ con $I_n$ matrice identica di ordine n, come si vede dal calcolo diretto.
In problemi di ottimizzazione mi sono trovato davanti ad espressioni del tipo $(del(\vec x^T*\vec x))/(del\vec x)$ che è possibile calcolare come un tranquillo gradiente (trasposto) di $\vec x^T*\vec x=x_1^2+x_2^2+x_3^2+...$ ottenendo $(del(\vec x^T*\vec x))/(del\vec x)=2*\vecx^T$.
Provando invece a calcolare , per curiosità, la stessa $(del(\vec x^T*\vec x))/(del\vec x)$ come derivata di un prodotto (lo posso fare?) cioè: $(del(\vec x^T*\vec x))/(del\vec x)= (del(\vec x^T))/(del\vec x)*\vecx+ \vecx^T*(del(\vec x))/(del\vec x)$ mi fermo davanti alla scrittura $(del(\vec x^T))/(del\vec x)$
più in generale la domanda è: ha senso la scrittura $(del((f(\vec x))^T))/(del\vec x)$ o ancora peggio $(del(M(\vecx)))/(del\vec x)$ con M "matrice di funzioni" cioè $M: RR rarr RR^(pxxq) $? e se sì come si calcola?
grazie e spero di essere stato sufficientemente chiaro.
In problemi di ottimizzazione mi sono trovato davanti ad espressioni del tipo $(del(\vec x^T*\vec x))/(del\vec x)$ che è possibile calcolare come un tranquillo gradiente (trasposto) di $\vec x^T*\vec x=x_1^2+x_2^2+x_3^2+...$ ottenendo $(del(\vec x^T*\vec x))/(del\vec x)=2*\vecx^T$.
Provando invece a calcolare , per curiosità, la stessa $(del(\vec x^T*\vec x))/(del\vec x)$ come derivata di un prodotto (lo posso fare?) cioè: $(del(\vec x^T*\vec x))/(del\vec x)= (del(\vec x^T))/(del\vec x)*\vecx+ \vecx^T*(del(\vec x))/(del\vec x)$ mi fermo davanti alla scrittura $(del(\vec x^T))/(del\vec x)$

più in generale la domanda è: ha senso la scrittura $(del((f(\vec x))^T))/(del\vec x)$ o ancora peggio $(del(M(\vecx)))/(del\vec x)$ con M "matrice di funzioni" cioè $M: RR rarr RR^(pxxq) $? e se sì come si calcola?
grazie e spero di essere stato sufficientemente chiaro.
Risposte
A mio avviso l'operazione di trasposizione non rompe le scatole a quella di derivazione. Quindi che si tratti di funzioni vettoriali o matrici la derivazione avviene sempre per componente e il risultato conserva la <> della funzione derivanda.
Non sono proprio d'accordo. Quello che dici te è ok se si deriva rispetto a uno scalare, ma qui in un certo senso sto derivando rispetto a un vettore, quindi il risultato deve aumentare di dimensione e quindi "cambiare forma". Ad esempio:una funzione scalare diventa un vettore riga di funzioni e una funzione vettoriale diventa una matrice di funzioni.
Mi sembra di capire che il nociolo del tuo problema e':
date $f,g:\RR^n\to\RR^m$ e posto $h:=f\cdot g$ (prodotto scalare in $\RR^m$), come si ottiene il gradiente di $h$ in termine di $f$ e $g$ ??
(scusa se non uso la notazione con le freccette). In termine di Jacobiani viene
$J_h=(J_f) g+(J_g) f$
(dove $(J_f)_{j.i}=\frac{\partial}{\partial x_i}f_j$ $i=1,...,n$ $j=1,...,m$ e $f_j$ e' la componente $j$-esima di $f$)
Se non mi sono incasinato con gli indici
date $f,g:\RR^n\to\RR^m$ e posto $h:=f\cdot g$ (prodotto scalare in $\RR^m$), come si ottiene il gradiente di $h$ in termine di $f$ e $g$ ??
(scusa se non uso la notazione con le freccette). In termine di Jacobiani viene
$J_h=(J_f) g+(J_g) f$
(dove $(J_f)_{j.i}=\frac{\partial}{\partial x_i}f_j$ $i=1,...,n$ $j=1,...,m$ e $f_j$ e' la componente $j$-esima di $f$)
Se non mi sono incasinato con gli indici
, penso di aver capito vicious. Dove posso trovare approfondimenti sull argomento siti o libri soprattutto in termini operativi perche studio ingegneria? grazie
"ViciousGoblinEnters":
Mi sembra di capire che il nociolo del tuo problema e':
date $f,g:\RR^n\to\RR^m$ e posto $h:=f\cdot g$ (prodotto scalare in $\RR^m$), come si ottiene il gradiente di $h$ in termine di $f$ e $g$ ??
(scusa se non uso la notazione con le freccette). In termine di Jacobiani viene
$J_h=(J_f) g+(J_g) f$
(dove $(J_f)_{j.i}=\frac{\partial}{\partial x_i}f_j$ $i=1,...,n$ $j=1,...,m$ e $f_j$ e' la componente $j$-esima di $f$)
Se non mi sono incasinato con gli indici
Con il tuo metodo però vicious viene ad esempio che con $h=x*x$ (prodotto scalare) si ottiene $J_h=(J_x) x+(J_x) x=2I_nx=2x$ mentre il risultato corretto è $J_h=2x^T$


Vuol dire che mi sono incasinato con gli indici e che bisognera' mettere dei trasposti nella formula --- scusa.
La verita' pero' e' che tutte queste matrici e n-uple sono delle "rappresentazioni" degli oggetti sottostanti.
Metti che $f:X\to Y$ dove $X$ e $Y$ sono spazi vettoriali.
La cosa giusta e' introdurre il differenziale $df(x_0)$ come l'applicazione lineare da $X$ in $Y$ che meglio approssima $f$
vicino al punto $x_0$, cioe'
$f(x)=f(x_0)+df(x_0)(x-x_0)+ o(|x-x_0|)$
Lo Jacobiano allora altro non e' che la matrice con cui rappresenti tale applicazione lineare, una volta fissata una base in $X$.
Se poi $f$ e' a valori reali ($Y=\RR$), allora $df(x_0)$ e' una applicazione lineare a valori reali e allora si puo' definire il gradiente
come quel vettore $\nabla f(x_0)$ tale che $df(x_0)v=<\nabla f(x_0),v>$ ( $<\cdot,\cdot>$ indica il prodotto scalare).
Detta in questi termini sono sicuro che, se $h(x)=$, allora
$dh(x_0)v = + $ per ogni $v$ di $X$
Per esempio se $f(x)=g(x)=x$, allora
$df(x_0)v=dg(x_0)v=v$ per ogni $v$ in $X$.
Allora $h(x)=|x|^2$ e applicando la formula sopra
$dh(x_0)v = + = 2$
Quest'ultima formula ti dice subito che $\nabla h(x_0)=2x_0$ cioe' $\nabla h(x)=2x$.
Per vedere la formula di partenza in termini di matrici jacobiane ci vuole un po' di pazienza -
se ho tempo ci torno stasera.
La verita' pero' e' che tutte queste matrici e n-uple sono delle "rappresentazioni" degli oggetti sottostanti.
Metti che $f:X\to Y$ dove $X$ e $Y$ sono spazi vettoriali.
La cosa giusta e' introdurre il differenziale $df(x_0)$ come l'applicazione lineare da $X$ in $Y$ che meglio approssima $f$
vicino al punto $x_0$, cioe'
$f(x)=f(x_0)+df(x_0)(x-x_0)+ o(|x-x_0|)$
Lo Jacobiano allora altro non e' che la matrice con cui rappresenti tale applicazione lineare, una volta fissata una base in $X$.
Se poi $f$ e' a valori reali ($Y=\RR$), allora $df(x_0)$ e' una applicazione lineare a valori reali e allora si puo' definire il gradiente
come quel vettore $\nabla f(x_0)$ tale che $df(x_0)v=<\nabla f(x_0),v>$ ( $<\cdot,\cdot>$ indica il prodotto scalare).
Detta in questi termini sono sicuro che, se $h(x)=
$dh(x_0)v =
Per esempio se $f(x)=g(x)=x$, allora
$df(x_0)v=dg(x_0)v=v$ per ogni $v$ in $X$.
Allora $h(x)=|x|^2$ e applicando la formula sopra
$dh(x_0)v =
Quest'ultima formula ti dice subito che $\nabla h(x_0)=2x_0$ cioe' $\nabla h(x)=2x$.
Per vedere la formula di partenza in termini di matrici jacobiane ci vuole un po' di pazienza -
se ho tempo ci torno stasera.
Ci ho un po' ripensato e forse la formula che ti dovrebbe piacere di piu ' e' la seguente:
Se $f,g:\RR^n\to\RR^m$ e se "$\cdot$" indica il prodotto tra matrici, allora, posto $h(x):=f(x)^T \cdot g(x)$ si ha:
$J_h(x)=J_f (x)^T \cdot g(x)+f(x)^T\cdot J_g (x)$
che dovrebbe essere giusta (fermo restando che tutto il contenuto del post precedente e' piu' "intrinseco", ma forse meno "pratico").
La formula sicuramente si puo' generalizzare anche se $f$ e $g$ sono a valori matriciali (inventandosi opportuni jacobiani tridimensionali)
che ne dici?
Se $f,g:\RR^n\to\RR^m$ e se "$\cdot$" indica il prodotto tra matrici, allora, posto $h(x):=f(x)^T \cdot g(x)$ si ha:
$J_h(x)=J_f (x)^T \cdot g(x)+f(x)^T\cdot J_g (x)$
che dovrebbe essere giusta (fermo restando che tutto il contenuto del post precedente e' piu' "intrinseco", ma forse meno "pratico").
La formula sicuramente si puo' generalizzare anche se $f$ e $g$ sono a valori matriciali (inventandosi opportuni jacobiani tridimensionali)
che ne dici?
"ViciousGoblinEnters":
Ci ho un po' ripensato e forse la formula che ti dovrebbe piacere di piu ' e' la seguente:
Se $f,g:\RR^n\to\RR^m$ e se "$\cdot$" indica il prodotto tra matrici, allora, posto $h(x):=f(x)^T \cdot g(x)$ si ha:
$J_h(x)=J_f (x)^T \cdot g(x)+f(x)^T\cdot J_g (x)$
che dovrebbe essere giusta (fermo restando che tutto il contenuto del post precedente e' piu' "intrinseco", ma forse meno "pratico").
La formula sicuramente si puo' generalizzare anche se $f$ e $g$ sono a valori matriciali (inventandosi opportuni jacobiani tridimensionali)
che ne dici?
Purtroppo continua a non funzionare per $h=x^T*x$ (prodotto matriciale) con x chiamo una funzione da $RR^m$ a $RR^m$ a valori vettoriali in cui ogni componente è funzione di una sola variabile diversa dalle altre cioè $x=((x_1), (x_2),( .. ),(x_m))$ in pratica x è un vettore di variabili "messe in fila". In questo caso viene $ J_h=(J_x)^T*x+x^T*(J_x)=I_m^T*x+x^T*I_m=x+x^T=?$ mentre il risultato corretto sappiamo che è $J_h=2x^T$
](/datas/uploads/forum/emoji/eusa_wall.gif)
"ViciousGoblin":
Ci ho un po' ripensato e forse la formula che ti dovrebbe piacere di piu ' e' la seguente:
Se $f,g:\RR^n\to\RR^m$ e se "$\cdot$" indica il prodotto tra matrici, allora, posto $h(x):=f(x)^T \cdot g(x)$ si ha:
$J_h(x)=J_f (x)^T \cdot g(x)+f(x)^T\cdot J_g (x)$
che dovrebbe essere giusta (fermo restando che tutto il contenuto del post precedente e' piu' "intrinseco", ma forse meno "pratico").
La formula sicuramente si puo' generalizzare anche se $f$ e $g$ sono a valori matriciali (inventandosi opportuni jacobiani tridimensionali)
che ne dici?
Se fosse $J_h(x)=(J_f (x)^T \cdot g(x))^T+f(x)^T\cdot J_g (x)$
la formula tornerebbe dimensionalmente e tornerebbe il risultato: qualcuno sa se una formula del genere è corretta?