Lezione 13 · Canale 1 · giovedì 15 ottobre 2026

Jacobiana, metodo di Newton e Hessiana

Programmazione Matematica

La matrice Jacobiana

Il gradiente descrive come varia una funzione a valori scalari. Per una funzione a valori vettoriali serve una matrice, la Jacobiana: con essa si linearizza la funzione e il metodo di Newton si estende ai sistemi di equazioni. Applicata al gradiente dà l'Hessiana, cioè le derivate seconde.

Sia G ⁣:Rn→RmG\colon\mathbb R^n\to\mathbb R^m. Ha mm componenti Gi ⁣:Rn→RG_i\colon\mathbb R^n\to\mathbb R, ciascuna una funzione a valori scalari:

G(x)=(G1(x)⋮Gm(x))G(x)=\begin{pmatrix}G_1(x)\\\vdots\\G_m(x)\end{pmatrix}

Se esistono i gradienti ∇Gi(x)∈Rn\nabla G_i(x)\in\mathbb R^n, si usano tutti insieme in una matrice. Si dispongono per righe, trasposti, e si ottiene la matrice Jacobiana di GG in xx:

J(x)=(∇G1(x)⊤⋮∇Gm(x)⊤)∈Rm×nJ(x)=\begin{pmatrix}\nabla G_1(x)^\top\\\vdots\\\nabla G_m(x)^\top\end{pmatrix}\in\mathbb R^{m\times n}

L'elemento (i,j)(i,j) è ∂Gi(x)/∂xj\partial G_i(x)/\partial x_j. Le righe sono tante quante le funzioni, le colonne tante quante le variabili.

Esempio. Per G ⁣:R2→R3G\colon\mathbb R^2\to\mathbb R^3, con G1=x12x22G_1=x_1^2x_2^2, G2=x1+x2G_2=x_1+x_2 e G3=x13−2x22G_3=x_1^3-2x_2^2, la Jacobiana ha 3 righe e 2 colonne (una costante sommata a una componente non la cambia). I gradienti sono

∇G1(x)=(2x1x222x12x2)∇G2(x)=(11)∇G3(x)=(3x12−4x2)\begin{gathered} \nabla G_1(x)=\begin{pmatrix}2x_1x_2^2\\2x_1^2x_2\end{pmatrix}\\[0.4em] \nabla G_2(x)=\begin{pmatrix}1\\1\end{pmatrix}\\[0.4em] \nabla G_3(x)=\begin{pmatrix}3x_1^2\\-4x_2\end{pmatrix} \end{gathered}

e, messi per righe,

J(x)=(2x1x222x12x2113x12−4x2)J(x)=\begin{pmatrix}2x_1x_2^2&2x_1^2x_2\\1&1\\3x_1^2&-4x_2\end{pmatrix}

Linearizzazione di una funzione vettoriale

Come per le funzioni scalari, vicino a xx la funzione si approssima con una parte lineare più un resto. Per ogni spostamento d∈Rnd\in\mathbb R^n:

G(x+d)=G(x)+J(x) d+γ(x,d)lim⁡d→0∥γ(x,d)∥∥d∥=0\begin{gathered} G(x+d)=G(x)+J(x)\,d+\gamma(x,d)\\[0.6em] \lim_{d\to0}\frac{\|\gamma(x,d)\|}{\|d\|}=0 \end{gathered}

La parte lineare è J(x) dJ(x)\,d. Con J(x)∈Rm×nJ(x)\in\mathbb R^{m\times n} e d∈Rnd\in\mathbb R^n il prodotto sta in Rm\mathbb R^m, come GG. Il resto γ(x,d)\gamma(x,d) è un vettore di Rm\mathbb R^m che va a zero più in fretta di ∥d∥\|d\|. Per m=1m=1, con G=fG=f a valori scalari, la Jacobiana è ∇f(x)⊤\nabla f(x)^\top e si ritrova la formula delle funzioni scalari.

Differenziabilità. GG è differenziabile in xx se vale la linearizzazione con una matrice A∈Rm×nA\in\mathbb R^{m\times n} al posto di J(x)J(x). Se GG è differenziabile, la Jacobiana esiste e A=J(x)A=J(x): è la condizione necessaria. Se la Jacobiana esiste ed è continua, GG è differenziabile: è la condizione sufficiente. Sono i risultati delle funzioni scalari, con la Jacobiana al posto del gradiente, enunciati senza dimostrazione.

Il metodo di Newton per i sistemi

In una variabile, per trovare uno zero di ff si sostituisce ff con la sua approssimazione lineare in x0x_0 e si prende il punto che la annulla: x1=x0−f(x0)/f′(x0)x_1=x_0-f(x_0)/f'(x_0), con f′(x0)≠0f'(x_0)\neq0.

Con più variabili si vuole risolvere un sistema di nn equazioni non lineari in nn incognite. Data G ⁣:Rn→RnG\colon\mathbb R^n\to\mathbb R^n, con tante componenti quante le variabili, si cerca xˉ∈Rn\bar x\in\mathbb R^n tale che G(xˉ)=0G(\bar x)=0.

Il procedimento è lo stesso. Da x0x_0 si sostituisce GG con la sua approssimazione lineare, in cui J(x0)J(x_0) prende il posto di f′(x0)f'(x_0):

G^(x)=G(x0)+J(x0)(x−x0)\hat G(x)=G(x_0)+J(x_0)(x-x_0)

È lineare in xx, quindi annullarla è risolvere un sistema lineare. Il nuovo punto x1x_1 è quello che la annulla:

G(x0)+J(x0)(x1−x0)=0G(x_0)+J(x_0)(x_1-x_0)=0

All'ipotesi f′(x0)≠0f'(x_0)\neq0 corrisponde l'invertibilità di J(x0)J(x_0). Serve una matrice quadrata, cioè m=nm=n: con m≠nm\neq n l'inversa non esiste. Dunque

x1=x0−J(x0)−1G(x0)x_1=x_0-J(x_0)^{-1}G(x_0)

e, ripetendo da ogni punto ottenuto,

xk+1=xk−J(xk)−1G(xk),k=0,1,2,…x_{k+1}=x_k-J(x_k)^{-1}G(x_k),\qquad k=0,1,2,\dots

Con n=1n=1 è il metodo di una variabile, perché J=f′J=f'.

Nel piano ogni equazione Gi(x)=0G_i(x)=0 è una curva, e la sua approssimazione lineare in x0x_0 è una retta. Il punto x1x_1 è dove le due rette si incontrano. Nella figura, poiché xkx_k indica l'iterato kk, le componenti di xx si scrivono x(1),x(2)x^{(1)},x^{(2)}, e le due equazioni sono ∥x∥2=4\|x\|^2=4 e x(1)x(2)=1x^{(1)}x^{(2)}=1.

Un passo di Newton su due equazioni

11,21,41,61,822,22,42,62,800,20,40,60,811,21,4
  • approssimazione lineare della prima
  • approssimazione lineare della seconda
Ogni equazione è sostituita dalla sua approssimazione lineare, una retta, e è dove le due rette si incontrano. Trascina .

Convergenza e criterio d'arresto

Convergenza locale. Se G(xˉ)=0G(\bar x)=0 e J(xˉ)J(\bar x) è invertibile, un punto iniziale x0x_0 abbastanza vicino a xˉ\bar x genera una successione che converge a xˉ\bar x. L'invertibilità serve in xˉ\bar x perché il metodo inverte la Jacobiana lungo tutta la successione, che si avvicina a xˉ\bar x. Il risultato è locale: da un punto qualsiasi la convergenza non è garantita.

Arresto. xˉ\bar x non è noto, e in aritmetica finita non si ottiene mai G=0G=0 esattamente. Il criterio naturale è fermarsi quando il residuo è sotto una tolleranza ε\varepsilon, per esempio 10−910^{-9}:

∥G(xk)∥≤ε\|G(x_k)\|\le\varepsilon

Il risultato asintotico garantisce che il criterio sia soddisfatto dopo un numero finito di iterazioni, perché G(xk)→G(xˉ)=0G(x_k)\to G(\bar x)=0. Un altro criterio è ∥xk+1−xk∥≤ε\|x_{k+1}-x_k\|\le\varepsilon. Un residuo piccolo non dice da solo quanto si è vicini a uno zero: con la precisione finita della macchina se ne occupa l'analisi numerica.

Punto iniziale. Quanto debba essere vicino x0x_0 non si sa, perché saperlo vorrebbe dire conoscere xˉ\bar x. Si usa una strategia multistart: tanti punti iniziali sparsi a caso nello spazio, nella speranza che da uno il metodo converga.

Costo. Con centinaia di migliaia di variabili, calcolare e invertire JJ a ogni iterazione è costoso. Si può tenere la stessa matrice per alcune iterazioni e ricalcolarla, per esempio, ogni 5, come fa il metodo di Shamanskii. Ogni iterazione costa meno, ma si perde rapidità di convergenza, perché la matrice usata è vicina alla Jacobiana nel punto corrente senza coincidere con essa.

La matrice Hessiana

Il gradiente di una funzione scalare f ⁣:Rn→Rf\colon\mathbb R^n\to\mathbb R è a sua volta una funzione a valori vettoriali, ∇f ⁣:Rn→Rn\nabla f\colon\mathbb R^n\to\mathbb R^n. Se ne può calcolare la Jacobiana, e si chiama matrice Hessiana: ∇2f(x)\nabla^2 f(x). Ha tante righe quante le componenti di ∇f\nabla f e tante colonne quante le variabili, quindi è n×nn\times n. Qui x1,…,xnx_1,\dots,x_n sono di nuovo le componenti di xx, come per il gradiente:

∇2f(x)=(∂2f(x)∂x12⋯∂2f(x)∂x1∂xn⋮⋮∂2f(x)∂xn∂x1⋯∂2f(x)∂xn2)\nabla^2 f(x)=\begin{pmatrix} \dfrac{\partial^2 f(x)}{\partial x_1^2}&\cdots&\dfrac{\partial^2 f(x)}{\partial x_1\partial x_n}\\ \vdots&&\vdots\\ \dfrac{\partial^2 f(x)}{\partial x_n\partial x_1}&\cdots&\dfrac{\partial^2 f(x)}{\partial x_n^2} \end{pmatrix}

La riga ii è il gradiente di ∂f/∂xi\partial f/\partial x_i: si deriva ∂f/∂xi\partial f/\partial x_i rispetto a ogni variabile. Sulla diagonale stanno le derivate seconde pure, fuori le derivate miste.

Esempio in due variabili. Se f(x)=x12x23f(x)=x_1^2x_2^3, il gradiente è ∇f(x)=(2x1x23, 3x12x22)⊤\nabla f(x)=(2x_1x_2^3,\ 3x_1^2x_2^2)^\top. Derivando ogni componente rispetto a x1x_1 e a x2x_2:

∇2f(x)=(2x236x1x226x1x226x12x2)\nabla^2 f(x)=\begin{pmatrix}2x_2^3&6x_1x_2^2\\6x_1x_2^2&6x_1^2x_2\end{pmatrix}

Esempio in tre variabili. Se f(x)=x14−2x2x3+x32f(x)=x_1^4-2x_2x_3+x_3^2:

∇f(x)=(4x13−2x3−2x2+2x3)\nabla f(x)=\begin{pmatrix}4x_1^3\\-2x_3\\-2x_2+2x_3\end{pmatrix}

e l'Hessiana, 3×33\times3, è

∇2f(x)=(12x120000−20−22)\nabla^2 f(x)=\begin{pmatrix}12x_1^2&0&0\\0&0&-2\\0&-2&2\end{pmatrix}

In entrambi gli esempi è simmetrica, e non per caso: vale per ogni funzione due volte differenziabile.

Approssimazione quadratica

Se ff è due volte differenziabile, vicino a xx si approssima con una funzione quadratica: alla parte lineare si aggiunge un termine con l'Hessiana.

f(x+d)=f(x)+∇f(x)⊤d+12 d⊤∇2f(x) d+r(x,d)\begin{aligned} f(x+d)&=f(x)+\nabla f(x)^\top d\\ &\quad+\tfrac12\,d^\top\nabla^2 f(x)\,d+r(x,d) \end{aligned} lim⁡d→0∣r(x,d)∣∥d∥2=0\lim_{d\to0}\frac{|r(x,d)|}{\|d\|^2}=0

Il resto va a zero più in fretta di ∥d∥2\|d\|^2, non solo di ∥d∥\|d\|. Per questo l'approssimazione quadratica è migliore di quella lineare. Con n=1n=1 l'Hessiana è f′′f'':

f(x0+d)=f(x0)+f′(x0) d+12f′′(x0) d2+r(x0,d)\begin{aligned} f(x_0+d)&=f(x_0)+f'(x_0)\,d\\ &\quad+\tfrac12f''(x_0)\,d^2+r(x_0,d) \end{aligned}

Approssimazione lineare e quadratica

00,511,522,533,5−1−0,500,511,5
  • approssimazione lineare
  • approssimazione quadratica
Vicino a la parabola aderisce a meglio della tangente. Muovendo , l'aderenza si sposta con lui.

Condizioni. Come per il gradiente e per la Jacobiana: se ff è due volte differenziabile, il gradiente esiste ed è continuo e l'Hessiana esiste ed è simmetrica: è la condizione necessaria. Se l'Hessiana esiste ed è continua, ff è due volte differenziabile: è la condizione sufficiente.

Le classi C0C^0, C1C^1, C2C^2

Su un dominio DD aperto:

  • f∈C0(D)f\in C^0(D): ff è continua su DD;
  • f∈C1(D)f\in C^1(D): il gradiente esiste ed è continuo su DD;
  • f∈C2(D)f\in C^2(D): esistono e sono continue anche le derivate seconde, cioè l'Hessiana esiste ed è continua su DD.

Formulario

Jacobiana, m×nm\times n

J(x)=[∂Gi(x)∂xj]J(x)=\Bigl[\tfrac{\partial G_i(x)}{\partial x_j}\Bigr]

Linearizzazione

G(x+d)=G(x)+J(x) d+γ(x,d)\begin{aligned} G(x+d)&=G(x)\\ &\quad+J(x)\,d+\gamma(x,d) \end{aligned} lim⁡d→0∥γ(x,d)∥∥d∥=0\lim_{d\to0}\frac{\|\gamma(x,d)\|}{\|d\|}=0

Newton per G ⁣:Rn→RnG\colon\mathbb R^n\to\mathbb R^n

xk+1=xk−J(xk)−1G(xk)x_{k+1}=x_k-J(x_k)^{-1}G(x_k)

Convergenza locale

G(xˉ)=0J(xˉ) invertibilex0 vicino a xˉ⇒xk→xˉ\begin{gathered} G(\bar x)=0\\ J(\bar x)\ \text{invertibile}\\ x_0\ \text{vicino a}\ \bar x\Rightarrow x_k\to\bar x \end{gathered}

Arresto

∥G(xk)∥≤ε\|G(x_k)\|\le\varepsilon

Hessiana, n×nn\times n

∇2f(x)=[∂2f(x)∂xi∂xj]\nabla^2 f(x)=\Bigl[\tfrac{\partial^2 f(x)}{\partial x_i\partial x_j}\Bigr]

Approssimazione quadratica

f(x+d)=f(x)+∇f(x)⊤d+12 d⊤∇2f(x) d+r(x,d)\begin{aligned} f(x+d)&=f(x)\\ &\quad+\nabla f(x)^\top d\\ &\quad+\tfrac12\,d^\top\nabla^2 f(x)\,d\\ &\quad+r(x,d) \end{aligned} lim⁡d→0∣r(x,d)∣∥d∥2=0\lim_{d\to0}\frac{|r(x,d)|}{\|d\|^2}=0

Classi su DD aperto

f∈C0(D): f continuaf∈C1(D): ∇f continuof∈C2(D): ∇2f continua\begin{gathered} f\in C^0(D):\ f\ \text{continua}\\ f\in C^1(D):\ \nabla f\ \text{continuo}\\ f\in C^2(D):\ \nabla^2 f\ \text{continua} \end{gathered}