Lezione 8 · Canale 1 · mercoledì 7 ottobre 2026

Successioni, Newton e ottimizzazione

Programmazione Matematica

Algoritmi come successioni

Un algoritmo numerico genera una successione di punti che, se funziona, si avvicina alla soluzione. Progettarlo significa trovare la regola che passa da un punto al successivo. Qui la regola nasce sempre dallo stesso passo: al posto di ff si usa la sua approssimazione lineare, di cui si sa risolvere il problema.

Il metodo di Newton per uno zero

Si cerca lo zero di una funzione non lineare ff di una variabile. Se ff fosse lineare basterebbe un'equazione di primo grado. Da un punto qualsiasi x0∈Rx_0\in\mathbb R si costruisce allora l'approssimazione lineare

f^(x)=f(x0)+f′(x0)(x−x0)\hat f(x)=f(x_0)+f'(x_0)(x-x_0)

e si chiama x1x_1 il punto che la annulla. Se f′(x0)≠0f'(x_0)\neq 0:

x1=x0−f(x0)f′(x0)x_1=x_0-\frac{f(x_0)}{f'(x_0)}

Si ripete da x1x_1, poi da x2x_2, e così via. Per l'iterazione generica:

xk+1=xk−f(xk)f′(xk),k=0,1,2,…x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)},\qquad k=0,1,2,\dots

Geometricamente l'approssimazione lineare è la tangente al grafico: xk+1x_{k+1} è l'intersezione della tangente in xkx_k con l'asse xx. Il metodo si generalizza ai sistemi di nn equazioni non lineari in nn variabili.

Minimizzare: il metodo del gradiente

Si vuole risolvere

min⁡x∈Rf(x),f∈C1(R)\min_{x\in\mathbb R} f(x),\qquad f\in C^1(\mathbb R)

cioè f′f' esiste ed è continua. Per una funzione complicata lo studio di crescenza e decrescenza non porta al minimo: serve una regola che generi una successione di punti verso di esso.

Da x0∈Rx_0\in\mathbb R si usa la stessa approssimazione lineare f^\hat f. Si vuole x1x_1 tale che f^(x1)<f^(x0)=f(x0)\hat f(x_1)<\hat f(x_0)=f(x_0), cioè

f′(x0) (x1−x0)<0f'(x_0)\,(x_1-x_0)<0

Il segno di f′(x0)f'(x_0) dice da che parte andare:

  • se f′(x0)>0f'(x_0)>0 serve x1<x0x_1<x_0;
  • se f′(x0)<0f'(x_0)<0 serve x1>x0x_1>x_0.

Le due regole si riuniscono in una sola: ci si sposta nel verso opposto alla derivata,

x1=x0−αf′(x0),α>0x_1=x_0-\alpha f'(x_0),\qquad \alpha>0

Con questa scelta, se f′(x0)≠0f'(x_0)\neq 0, si ha f′(x0)(x1−x0)=−αf′(x0)2<0f'(x_0)(x_1-x_0)=-\alpha f'(x_0)^2<0 per ogni α>0\alpha>0. Ma ff non è lineare: la retta scende, la funzione vera può risalire. Il passo α\alpha deve essere abbastanza piccolo da avere f(x1)<f(x0)f(x_1)<f(x_0).

Lo si trova per tentativi, a ogni iterazione:

  1. si parte da αk=1/(k+1)\alpha_k=1/(k+1), cioè da α0=1\alpha_0=1 alla prima iterazione;
  2. se f(xk−αkf′(xk))<f(xk)f(x_k-\alpha_k f'(x_k))<f(x_k) lo si tiene;
  3. altrimenti αk←αk/2\alpha_k\leftarrow\alpha_k/2 e si riprova.

Si dimostra che, con f′(xk)≠0f'(x_k)\neq 0, un passo sufficientemente piccolo produce la diminuzione: il dimezzamento prima o poi la ottiene. La successione è

xk+1=xk−αkf′(xk),αk>0x_{k+1}=x_k-\alpha_k f'(x_k),\qquad \alpha_k>0

e il procedimento si chiama metodo del gradiente: in una variabile il gradiente è la derivata.

Il metodo del gradiente a più passi

−1,4−1,2−1−0,8−0,6−0,4−0,200,20,40,60,811,2−0,4−0,35−0,3−0,25−0,2−0,15−0,1−0,0500,05
Secondo il valore di e di , i passi del gradiente portano a un minimo oppure, con grande, rimbalzano senza fermarsi.

Nell'addestramento delle reti neurali i pesi si aggiornano con questa regola, e il passo si chiama anche learning rate. Backpropagation indica soltanto le formule ricorsive che calcolano le derivate prime di una funzione complessa, non la regola di ottimizzazione.

Bolzano-Weierstrass per successioni in Rn\mathbb R^n

Per n=1n=1 è noto: una successione limitata ha almeno una sottosuccessione convergente. Per n>1n>1 si considerano successioni N→Rn\mathbb N\to\mathbb R^n. Per semplicità n=3n=3, con xk(i)x_k^{(i)} la componente ii di xkx_k.

Se {xk}\{x_k\} è limitata, lo è ciascuna componente. Si estrae una sottosuccessione per volta, ognuna dentro la precedente:

  • {xk(1)}\{x_k^{(1)}\} limitata ⇒\Rightarrow esiste K1⊆NK_1\subseteq\mathbb N con lim⁡k∈K1, k→∞xk(1)=xˉ(1)\lim_{k\in K_1,\,k\to\infty}x_k^{(1)}=\bar x^{(1)}, per esempio K1={0,4,8,12,… }K_1=\{0,4,8,12,\dots\};
  • {xk(2)}\{x_k^{(2)}\} limitata ⇒\Rightarrow esiste K2⊆K1K_2\subseteq K_1 con lim⁡k∈K2, k→∞xk(2)=xˉ(2)\lim_{k\in K_2,\,k\to\infty}x_k^{(2)}=\bar x^{(2)}, per esempio K2={0,8,16,24,… }K_2=\{0,8,16,24,\dots\};
  • {xk(3)}\{x_k^{(3)}\} limitata ⇒\Rightarrow esiste K3⊆K2K_3\subseteq K_2 con lim⁡k∈K3, k→∞xk(3)=xˉ(3)\lim_{k\in K_3,\,k\to\infty}x_k^{(3)}=\bar x^{(3)}, per esempio K3={16,32,48,… }K_3=\{16,32,48,\dots\}.

Una sottosuccessione di una successione convergente converge allo stesso limite. Lungo K3⊆K2⊆K1K_3\subseteq K_2\subseteq K_1 le tre componenti convergono insieme:

lim⁡k∈K3, k→∞xk=xˉ=(xˉ(1),xˉ(2),xˉ(3))\begin{aligned} \lim_{k\in K_3,\,k\to\infty}x_k&=\bar x\\ &=\bigl(\bar x^{(1)},\bar x^{(2)},\bar x^{(3)}\bigr) \end{aligned}

Lo stesso argomento vale per un numero qualunque di componenti, in qualsiasi ordine.

Corollario (senza dimostrazione). Se {xk}⊂E\{x_k\}\subset E e EE è compatto, cioè chiuso e limitato, esiste una sottosuccessione che converge a un xˉ∈E\bar x\in E. La limitatezza dà la sottosuccessione convergente, la chiusura dà xˉ∈E\bar x\in E.

Versione per insiemi

xˉ\bar x è un punto di accumulazione per EE se ogni intorno B(xˉ,ε)B(\bar x,\varepsilon) contiene un punto di EE diverso da xˉ\bar x.

Teorema. Se EE è limitato e formato da infiniti punti, esiste xˉ\bar x punto di accumulazione per EE.

Dimostrazione. Per ipotesi esiste una successione {xk}\{x_k\} di infiniti punti distinti di EE, limitata perché EE lo è. Per il teorema precedente esiste KK con lim⁡k∈K, k→∞xk=xˉ\lim_{k\in K,\,k\to\infty}x_k=\bar x. Dunque per ogni ε>0\varepsilon>0 esiste kεk_\varepsilon tale che

k∈K, k>kε ⟹ ∥xk−xˉ∥<εk\in K,\ k>k_\varepsilon\ \Longrightarrow\ \|x_k-\bar x\|<\varepsilon

cioè xk∈E∩B(xˉ,ε)x_k\in E\cap B(\bar x,\varepsilon). I punti sono distinti: al più uno coincide con xˉ\bar x, quindi per kk grande xk≠xˉx_k\neq\bar x. Ogni B(xˉ,ε)B(\bar x,\varepsilon) contiene allora un punto di EE diverso da xˉ\bar x. □\square

Il teorema ponte

Collega i limiti di funzione a quelli di successione. Senza dimostrazione. Sia f ⁣:D⊆Rn→Rf\colon D\subseteq\mathbb R^n\to\mathbb R e x0∈Rnx_0\in\mathbb R^n punto di accumulazione per DD (così il limite in x0x_0 ha senso). Allora

lim⁡x→x0f(x)=ℓ∈R∗  ⟺  ∀{xk}⊂D∖{x0}, xk→x0:lim⁡k→∞f(xk)=ℓ\begin{aligned} &\lim_{x\to x_0}f(x)=\ell\in\mathbb R^*\iff\\ &\forall\{x_k\}\subset D\setminus\{x_0\},\ x_k\to x_0:\\ &\qquad\lim_{k\to\infty}f(x_k)=\ell \end{aligned}

dove ℓ∈R∗\ell\in\mathbb R^* può essere finito oppure ±∞\pm\infty.

Il punto delicato è «per ogni successione»: le successioni possibili sono infinite e non si controllano tutte. Ne seguono due usi:

  • Non esistenza. Due successioni che tendono a x0x_0 ma con f(xk)f(x_k) che tende a valori diversi bastano a escludere il limite.
  • Esistenza. Controllare un numero finito di successioni, anche cento, suggerisce il valore del limite ma non lo dimostra. Per dimostrarlo si torna alla definizione, con gli intorni e ε\varepsilon.

Esempio: un limite che non esiste

f(x,y)=x−yx+yD={(x,y)∈R2: x+y≠0}\begin{gathered} f(x,y)=\frac{x-y}{x+y}\\[0.4em] D=\{(x,y)\in\mathbb R^2:\ x+y\neq 0\} \end{gathered}

DD è tutto R2\mathbb R^2 meno la retta x+y=0x+y=0. È aperto, e ogni punto di R2\mathbb R^2, origine compresa, è di accumulazione per DD: il limite per (x,y)→(0,0)(x,y)\to(0,0) ha senso. Si usano

ak=(1/k0),bk=(01/k)k=1,2,…\begin{gathered} a_k=\begin{pmatrix}1/k\\0\end{pmatrix},\qquad b_k=\begin{pmatrix}0\\1/k\end{pmatrix}\\[0.4em] k=1,2,\dots \end{gathered}

Entrambe stanno in DD e tendono a (0,0)(0,0). Ma

f(ak)=1/k−01/k+0=1f(bk)=0−1/k0+1/k=−1\begin{aligned} f(a_k)&=\frac{1/k-0}{1/k+0}=1\\ f(b_k)&=\frac{0-1/k}{0+1/k}=-1 \end{aligned}

quindi lim⁡kf(ak)=1\lim_k f(a_k)=1 e lim⁡kf(bk)=−1\lim_k f(b_k)=-1. Per il teorema ponte il limite di ff per (x,y)→(0,0)(x,y)\to(0,0) non esiste.

Due successioni verso l'origine

−1−0,8−0,6−0,4−0,200,20,40,60,811,2−1−0,8−0,6−0,4−0,200,20,40,60,811,2
  • retta , esclusa dal dominio
Le successioni e tendono allo stesso punto da direzioni diverse, e lungo di esse la funzione vale e .

Continuità

Sia f ⁣:D⊆R→Rf\colon D\subseteq\mathbb R\to\mathbb R e x0∈Dx_0\in D.

Se x0x_0 è un punto isolato di DD, per convenzione ff è continua in x0x_0: non si può fare il limite. Se x0x_0 è di accumulazione per DD, ff è continua in x0x_0 quando

lim⁡x→x0f(x)=f(x0)\lim_{x\to x_0}f(x)=f(x_0)

Il valore f(x0)f(x_0) esiste perché x0∈Dx_0\in D. Una funzione è continua in E⊆DE\subseteq D se è continua in ogni punto di EE.

Per f ⁣:Rn→Rf\colon\mathbb R^n\to\mathbb R non cambia niente: stessa definizione, con punti di Rn\mathbb R^n e intorni in Rn\mathbb R^n.

Formulario

Approssimazione lineare

f^(x)=f(x0)+f′(x0)(x−x0)\begin{aligned} \hat f(x)&=f(x_0)\\ &\quad+f'(x_0)(x-x_0) \end{aligned}

Newton

xk+1=xk−f(xk)f′(xk)x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)}

Gradiente

xk+1=xk−αkf′(xk)x_{k+1}=x_k-\alpha_k f'(x_k)

Passo accettato se

f(xk−αkf′(xk))<f(xk)f(x_k-\alpha_k f'(x_k))<f(x_k)

altrimenti

αk←αk/2\alpha_k\leftarrow\alpha_k/2

Bolzano-Weierstrass: {xk}⊂Rn\{x_k\}\subset\mathbb R^n limitata

∃K: lim⁡k∈Kxk=xˉ\exists K:\ \lim_{k\in K}x_k=\bar x

Punto di accumulazione per EE

∀B(xˉ,ε)∃x∈E∩B(xˉ,ε),x≠xˉ\begin{aligned} &\forall B(\bar x,\varepsilon)\\ &\exists x\in E\cap B(\bar x,\varepsilon),\\ &x\neq\bar x \end{aligned}

Teorema ponte

lim⁡x→x0f(x)=ℓ  ⟺  ∀{xk}⊂D∖{x0},xk→x0: f(xk)→ℓ\begin{aligned} &\lim_{x\to x_0}f(x)=\ell\iff\\ &\forall\{x_k\}\subset D\setminus\{x_0\},\\ &x_k\to x_0:\ f(x_k)\to\ell \end{aligned}

Continuità in x0x_0 di accumulazione

lim⁡x→x0f(x)=f(x0)\lim_{x\to x_0}f(x)=f(x_0)