Metodo dei moltiplicatori di Lagrange: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Jak3x (discussione | contributi)
mNessun oggetto della modifica
Riga 1:
{{doppia immagine|destra|LagrangeMultipliers3D.png|250|LagrangeMultipliers2D.svg|250|Ricerca dei massimi di <math>f(x,y)</math> dato il vincolo (rappresentato in rosso) <math>g(x,y)=c</math>.|Rappresentazione mediante curve di livello del problema. Le linee blu rappresentano curve di livello di <math>f(x,y)</math>. La soluzione al problema è data dai punti di tangenza tra la linea rossa e le linee blu.}}
 
In [[analisi matematica]] e [[programmazione matematica]], il '''metodo dei moltiplicatori di [[Joseph Louis Lagrange|Lagrange]]''' permette di ridurre i [[punto stazionario|punti stazionari]] di una funzione <math>f(\vec x)</math> in ''<math>I''</math> variabili e ''<math>J''</math> vincoli di [[frontiera (topologia)|frontiera]] <math>\vec g(\vec x)= \vec 0</math>, detta obiettivo, a quelli di una terza funzione in ''<math>I+J''</math> variabili non vincolata, detta '''lagrangiana''':
 
<math> \Lambda(\vec x, \vec \lambda) = f(\vec x) + \vec \lambda \cdot \, \vec g(\vec x) = f(\vec x) + \sum_{j=1}^J \lambda_j g_j(\vec x)</math>,
Riga 10:
 
== Introduzione ==
Si consideri il caso bidimensionale. Si vuole massimizzare una ''<math>f''(''x'',''y'')</math> soggetta al vincolo:
 
:<math>g\left( x,y \right) = c,</math>
 
ove ''<math>c''</math> è una costante. Si possono visualizzare le [[curva di livello|curve di livello]]<ref>Courant, Richard, Herbert Robbins, and Ian Stewart. ''What Is Mathematics?: An Elementary Approach to Ideas and Methods''. New York: Oxford University Press, 1996. [http://books.google.com/books?id=_kYBqLc5QoQC&pg=PA344&vq=%22contour+line%22&source=gbs_search_r&cad=1_1&sig=ACfU3U2wWEkaeLRCYtZiHbjh_OH7eKgnJQ p. 344.]</ref> della ''<math>f''</math> date da
 
:<math>f \left( x, y \right)=d_n</math>
Riga 22:
Si supponga di camminare lungo la curva di livello con <math> g = c </math>. In generale le curve di livello della <math> f </math> e della <math> g </math> sono distinte, quindi la curva di livello per <math> g = c </math> può intersecare le curve di livello della <math> f </math>. Questo equivale a dire che mentre ci si muove lungo la curva di livello per <math> g = c </math> il valore della <math>f</math> può variare. Solo quando la curva di livello per <math> g = c </math> è tangente a una delle curve di livello della <math> f </math> (senza attraversamento), il valore di <math> f </math> non aumenta né diminuisce.
 
Questo succede esattamente nei punti in cui la [[componente tangente]] della [[derivata totale]] si annulla: <math>d f_\parallel = 0</math>, cioè nei [[punto stazionario|punti stazionari]] vincolati della ''<math>f''</math> che includono i massimi e minimi locali, assumendo che ''<math>f''</math> sia differenziabile. Nelle equazioni questo succede quando il gradiente della ''<math>f''</math> è [[componente normale|perpendicolare]] al vincolo, o ai vincoli, ovvero quando <math>\nabla f</math> è una [[combinazione lineare]] dei <math>\nabla g_i</math>.
 
Un esempio familiare è quello delle [[curva di livello|curve di livello]] per temperatura e pressione delle mappe meteorologiche: i massimi e minimi vincolati capitano dove le mappe sovrapposte mostrano linee tangenti ([[isoplete]]).
 
Geometricamente la condizione di tangenza si traduce dicendo che i [[gradiente|gradienti]] della <math> f </math> e della <math> g </math> sono vettori paralleli dove c'è un massimo, visto che i gradienti sono sempre perpendicolari alle curve di livello. Introducendo lo scalare incognito ''λ''<math>\lambda</math>, si deve risolvere il [[sistema di equazioni]]:
 
:<math> \frac {\partial}{\partial x }\left[f \left(x, y \right) + \lambda g \left(x, y \right) \right] = 0 </math>
:<math> \frac {\partial}{\partial y}\left[f \left(x, y \right) + \lambda g \left(x, y \right) \right] = 0 </math>
 
per ''λ''<math>\lambda \ne 0</math>; avendo assunto, senza perdita di generalità, <math>c=0</math>.
 
Una volta che i valori per λ<math>\lambda</math> siano stati determinati, si torna al numero originario di variabili e si possono trovare i punti stazionari della lagrangiana:
 
:<math> \Lambda \left( x , y \right) = f \left( x , y \right) + \lambda g \left( x , y \right)</math>
Riga 40:
 
=== Differenze tra massimi, minimi e punti di sella ===
Le soluzioni sono ''[[punto stazionario|punti stazionari]]'' della lagrangiana <math>\Lambda</math> e possono essere anche [[punto di sella|punti di sella]], ovvero né massimi né minimi di <math>\Lambda</math> o <math>F</math>. <math>\Lambda</math> è illimitata: dato un punto ''<math>(x,y)''</math> che non giace sul vincolo, facendo il limite per <math>\lambda \to \pm \infty</math> si rende <math>\Lambda</math> arbitrariamente grande o piccola.
 
== Spiegazione analitica ==
 
Sia l'obiettivo ''<math>f''</math> una funzione definita su '''R'''<supmath>''\R^n''</supmath>, e siano i [[vincolo|vincoli]] dati da ''g<submath>j</sub>''g_j('''x''') = ''0''</math> (ottenuti da un'equazione del tipo ''h<submath>j</sub>''h_j('''x''') = ''c<sub>jc_j</submath>'' con ''g<submath>j</sub>''g_j('''x''') = ''h<sub>j</sub>''h_j('''x''') - ''c<sub>jc_j</submath>''). Si definisca la '''lagrangiana''', ''Λ''<math>\Lambda</math>, come:
 
:<math>\Lambda(\mathbf x, \boldsymbol \lambda) = f + \sum_j \lambda_j g_j.</math>
 
Sia il criterio di ottimizzazione sia i vincoli ''g''<submath>''j''g_j</submath> sono compresi in modo compatto come punti stazionari della lagrangiana:
 
:<math>\nabla_{\mathbf x} \Lambda = 0 \Leftrightarrow \nabla_{\mathbf x} f = - \sum_j \lambda_j \nabla_{\mathbf x} g_j,</math>
Riga 60:
:<math>\frac{\partial \Lambda}{\partial {g_j}} = \lambda_j.</math>
 
''λ''<submath>''j''\lambda_j</submath> è la velocità con cui cambia la quantità da ottimizzare come funzione della variabile vincolata. Per esempio, nella [[meccanica lagrangiana]] le equazioni del moto sono ottenute trovando i punti stazionari dell'[[azione (fisica)|azione]], l'integrale nel tempo della differenza tra energia cinetica e potenziale. Dunque la forza su una particella dovuta a un potenziale scalare, '''<math>\mathbf{F''' }=-\nabla −∇''V''</math> può essere interpretata come un moltiplicatore di Lagrange che determina il cambiamento dell'azione (trasferimento di energia potenziale in energia cinetica) conseguente a una variazione della traiettoria vincolata della particella. In economia, il profitto ottimale per un giocatore è calcolato in base a uno spazio di azione vincolato, dove un moltiplicatore di Lagrange indica il rilassamento di un dato vincolo, ad esempio attraverso la corruzione o altri mezzi.
 
Il metodo dei moltiplicatori di Lagrange è generalizzato dalle [[condizioni di Karush-Kuhn-Tucker]].
Riga 68:
[[File:Lagrange very simple.svg|thumb|upright=1.4|Figura 3. Illustrazione del problema di ottimizzazione vincolata.]]
 
Si voglia massimizzare <math>f(x,y)=x+y</math> col vincolo <math>x^2+y^2-1=0</math>. Il vincolo è la [[circonferenza]] unitaria, e le curve di livello dell'obiettivo sono [[retta|rette]] con pendenza <math>-1</math>: si vede subito graficamente che il massimo viene raggiunto in <math>(\sqrt{2}/2,\sqrt{2}/2)</math> e il minimo viene raggiunto in <math>(-\sqrt{2}/2,-\sqrt{2}/2)</math>.
 
Analiticamente, ponendo <math>g(x,y)=x^2+y^2-1</math>, e
Riga 87:
:<math>1 + 2 \lambda x = 1 + 2 \lambda y,</math>
 
cioè <math>x=y</math> (<math>x \neq 0</math> altrimenti la <math>(i)</math> diventa <math>1 = 0</math>). Sostituendo nella <math>(iii)</math> si ottiene <math>2x^2=1</math>, cosicché <math>x=\pm \sqrt{2}/2</math> e i punti stazionari sono <math>(\sqrt{2}/2,\sqrt{2}/2)</math> e <math>(-\sqrt{2}/2,-\sqrt{2}/2)</math>. Valutando l'obiettivo <math>x+y</math> su questi si ottiene:
 
:<math>f(\sqrt{2}/2,\sqrt{2}/2)=x+y=\sqrt{2}\mbox{ e } f(-\sqrt{2}/2,-\sqrt{2}/2)= x+y=-\sqrt{2},</math>
Riga 105:
:<math>\sum_{n=1}^N p_n - 1.</math>
 
Per tutti gli ''<math>n''</math> da <math>1</math> a ''<math>N''</math>, si impongono le equazioni:
 
:<math>\frac{\partial}{\partial p_n}(-\sum_{n=1}^N p_n\log_2 p_n + \lambda \sum_{n=1}^N p_n - \lambda)=0.</math>
Riga 113:
:<math>-\left(\frac{1}{\ln 2}+\log_2 p_n \right) + \lambda = 0\qquad\Longrightarrow\qquad p_n=2^\lambda /e.</math>
 
Questo dimostra che tutti i ''p''<submath>''n''p_n</submath> sono uguali perché dipendono soltanto da un parametro comune. Introducendola nell'equazione vincolare, ovvero imponendo
 
:<math>\sum_{n=1}^N p_n = 1, </math>
 
si ottiene:
 
:<math>p_n = \frac{1}{N}.</math>