viewgit/index.php:465 Only variables should be passed by reference [2048]

viewgit/index.php:466 Non-static method GeSHi::get_language_name_from_extension() should not be called statically [2048]

  1. \chapter{Risoluzione di sistemi lineari}
  2.  
  3. In questo capitolo affronteremo il tema della risoluzione dei sistemi lineari introducendo dei metodi
  4. iterativi specifici per alcune classi di matrici particolarmente interessanti; queste individueranno
  5. solitamente sistemi troppo grandi per essere risolti tramite metodi diretti e in cui la convergenza
  6. dei metodo classici (Jacobi e Gauss Seidel) è quasi assente.
  7.  
  8. \section{Sitemi lineari con matrici definite positive}
  9.  
  10. \subsection{Metodo del gradiente}
  11. Supponiamo di avere una matrice $A \in \mat{\R}{n}$ definita positiva ed un sistema lineare
  12. \[
  13. Ax = b
  14. \]
  15. In molti casi pratici (come ad esempio nello studio delle Vibrazioni, vedi Sezione~\ref{sec:vibsistcont})
  16. ci si trova a risolvere sistemi lineari con matrici definite positive sparse o strutturate\footnote{in
  17. cui in generale il costo del prodotto matrice vettore è basso} e in cui è conveniente usare un metodo
  18. iterativo.
  19.  
  20. Consideriamo la seguente funzione
  21. \begin{equation}
  22. \Phi(x) = \frac{1}{2} \trasp x A x - \trasp x b
  23. \end{equation}
  24. Osserviamo che il suo gradiente è dato dalla seguente espressione
  25. \begin{equation}
  26. \nabla \Phi(x) = Ax - b
  27. \end{equation}
  28. e quindi vale $0$ solo se $x$ è una soluzione del sistema lineare. Possiamo quindi riformulare la ricerca
  29. della soluzione del sistema lineare come ricerca dei punti stazionari della funzione $\Phi$.
  30. Possiamo osservare che se $\bar x$ è un punto stazionario per $\Phi$ allora calcolando la matrice
  31. delle derivate seconde si ottiene esattamente $A$; ricordando che $A$ è definita positiva si può concludere
  32. che $\bar x$ è un punto di minimo per $\Phi$ e quindi
  33. \[
  34. A\bar x = b \iff \bar x = \min_{x \in \R^n} ( \Phi(x) )
  35. \]
  36. In sintesi abbiamo ricondotto il problema della risoluzione del sistema lineare ad un problema di minimizzazione.
  37. Ricordando che siamo alla ricerca di un metodo iterativo vorremmo affrontare il problema nel modo seguente
  38. \begin{enumerate}[(a)]
  39. \item Scegliamo un punto $x_0$ a caso;
  40. \item Cerchiamo di determinare in che direzione si trova il minimo;
  41. \item Ci spostiamo ponendo $x_1 = x_0 + \alpha_0v_0$ dove $v_0$ è la \emph{direzione di decrescita}
  42. appena determinata e $\alpha_0$ un opportuno scalare;
  43. \end{enumerate}
  44.  
  45. I \emph{metodi del gradiente}, ovvero quei metodi basati sulle considerazioni appena fatte, assumono
  46. nomi diversi a seconda della tecnica scelta per determinare la direzione di decrescita.
  47.  
  48. \subsection{Il metodo del gradiente ottimo}
  49. Una prima scelta piuttosto naturale per la direzione di decrescita nel punto $x_k$ potrebbe essere $-\nabla \Phi(x_k)$.
  50. Ricordiamo infatti dall'analisi che il gradiente indica la direzione in cui la funzione ``cresce'' di più.
  51. Questa scelta si dice del \emph{gradiente ottimo} ed è stata, storicamente, la prima ad essere implementata
  52. e studiata. \\
  53. Una volta scelta la direzione dobbiamo determinare $\alpha_k$. Per fare questo studiamo la seguente funzione di
  54. $\alpha$ che valuta $\Phi$ sulla retta\footnote{nel senso di retta affine} $x_k + \Span{v_k}$:
  55. \[
  56. g(\alpha) = \Phi(x_k + \alpha v_k)
  57. \]
  58. Ricordando che vogliamo trovare il minimo di $\Phi$ e osservando che $g$ è convessa cerchiamo anche qui un punto
  59. stazionario di $g$; questo sarà l'$\alpha_k$ che ci permette di ottenere il valore minimo di $\Phi$ sulla direzione
  60. determinata da $v_k$. \\
  61. Otteniamo
  62. \[
  63. g'(\alpha) = \alpha \trasp v_k A v_k + \trasp v_k (A x_k - b) = 0
  64. \]
  65. e quindi ponendo $r_k = v - Av_k$ si ottiene
  66. \[
  67. \alpha_k = \frac{\trasp v_k (-Ax_k + b)}{\trasp v_k A v_k} = \frac{\trasp v_k r_k}{\trasp v_k A v_k}
  68. \]
  69. Osserviamo in particolare che tenere traccia del valore di $r_k$ è utile per decidere quando
  70. fermare il metodo. $||r_k|| = ||Ax_k - b||$ è indice di quanto siamo ``distanti'' dalla soluzione.
  71.  
  72. Si è verificato che questo metodo è convergente per ogni scelta di $x_0$ però ci si è accorti che
  73. non è la scelta migliore della direzione di decrescita.
  74.  
  75. \subsection{Il metodo del gradiente coniugato}
  76. Dopo l'introduzione del metodo del gradiente ottimo si è studiata un altro metodo di scelta, a cui
  77. dobbiamo però premettere alcune definizioni.
  78.  
  79. \begin{de} Data una matrice $A \in \mat{\R}{n}$ una $n$-upla di vettori $(p_1 \ldots p_n)$ di $\R^n$
  80. si dicono \emph{$A$-coniugati} se
  81. \[
  82. \left[ \begin{array}{ccc}
  83. \quad \trasp p_1 \quad \\
  84. \quad \vdots \quad \\
  85. \quad \trasp p_n \quad \\
  86. \end{array} \right]
  87. A
  88. \left[ \begin{array}{ccc}
  89. \multirow{3}{*}{$p_1$} & \multirow{3}{*}{$\ldots$} & \multirow{3}{*}{$p_n$} \\
  90. & & \\
  91. & &
  92. \end{array} \right]
  93. = D
  94. \]
  95. dove $D$ è una matrice diagonale.
  96. \end{de}
  97.  
  98. \begin{os} \label{os:coniugli}
  99. Se abbiamo una $n$-upla di vettore $A$-coniugati possiamo facilmente dire che sono linearmente
  100. indipendenti.
  101. \end{os}
  102.  
  103. Vorremmo ora impostare l'iterazione in modo che i vettori $v_0, v_1, \ldots$ che definiscono le
  104. direzioni di descrescita siano $A$-coniugati. Osserviamo in particolare che la condizione di
  105. lineare indipendenza ci permette di dire che non possiamo fare più di $n$ iterazioni dove $n$ è
  106. la dimensione della matrice $A$. Scopriremo, per fortuna, che questo è solo apparentemente un
  107. problema.
  108.  
  109. Dobbiamo ora trovare un metodo dati $v_1, \ldots, v_{k-1}$ vettori $A$-coniugati per determinare
  110. $v_k$ tale che sia $A$-coniugato con tutti gli altri. Poniamo $v_k = r_k + \beta_k v_{k-1}$;
  111. per avere la condizione di ortogonalità\footnote{secondo il prodotto scalare definito da $A$}
  112. dovremo avere
  113. \[
  114. (\trasp r_k + \beta_k\trasp v_{k-1}) A v_{k-1} = 0
  115. \]
  116. e quindi
  117. \[
  118. \beta_k = \frac{\trasp r_k A v_{k-1}}{\trasp v_{k-1} A v_{k-1}}
  119. \]
  120. Si può verificare che questa condizione non è solo necessaria ma anche sufficiente. Un successione di vettori
  121. scelti in questo modo è infatti forzatamente $A$-coniugata\footnote{questo risultato non verrà dimostrato qui.}
  122.  
  123. Avendo risolto il problema del trovare effettivamente la successione, ci chiediamo come affrontare
  124. il limite al numero di iterazioni che ci è indicato Osservazione~\ref{os:coniugli}. Ci aiuta il
  125. seguente
  126. \begin{te}
  127. Se ho $\{x_k\}_{k=1,\ldots,n}$ una successione di vettori che rispetti le condizioni osservate precedentemente con $x_0 = 0$
  128. allora per ogni $k$ si ha che
  129. \[
  130. \Phi(x_k) = \min_{x \in \Span{v_0, \ldots, v_k-1}}(\Phi(x))
  131. \]
  132. ed in particolare dopo $n$ iterazioni $\Phi(x_n)$ è il minimo assoluto di $\Phi(x)$.
  133. \end{te}
  134. Questo teorema ci dice, in particolare, che questo metodo iterativo è in realtà un metodo diretto, ovvero
  135. è convergente in un numero finito di passi per ogni scelta di punto iniziale.
  136.  
  137. Poniamo ora $e_k = x_k - x$ l'errore al passo $k-esimo$. Il teorema sopra ci dice che $e_n = 0$ ma ci chiediamo
  138. come si comporta $e_k$ mentre $k$ si avvicina $n$. Non dobbiamo infatti dimenticare che questo è un metodo
  139. iterativo e quindi in molti casi pratici saremo interessati a fermarci prima di avere la convergenza totale.
  140. Esiste un altro teorema che ci dà un risultato piuttosto preciso sulla velocità di convergenza
  141. \begin{te}
  142. Sia $||\cdot||_A$ la norma indotta dalla matrice $A$\footnote{ricordiamo che questa è definita nel seguente modo
  143. $||x||_A := \sqrt{\trasp x A x}$}
  144. ; allora per ogni $k$ e per ogni scelta iniziale di $x_0$ si
  145. ha
  146. \[
  147. ||e_k||_A \leq \left( \frac{2\sqrt{\cond{A}}}{\sqrt{\cond{A}} - 1} \right)^{k} ||e_0||_A
  148. \]
  149. \end{te}
  150. Ancora una volta la velocità di convergenza dipende dal condizionamento della matrice del problema. Per
  151. matrici con un piccolo condizionamento questa è molto veloce, mentre per matrici con condizionamento
  152. più grande potrebbe diventare lenta.
  153.  
  154. \subsection{Precondizionamento}
  155. Supponiamo di avere una matrice $A$ definita positiva che individua un problema mal condizionato, in cui la velocità
  156. di convergenza del metodo del gradiente coniugato è molto lenta.
  157.  
  158. Sappiamo dai risultati di Analisi Numerica che non possiamo riuscire a risolvere con precisione
  159. un sistema mal condizionato; ci chiediamo però se sia possibile perlomeno risolverlo velocemente,
  160. pur con la consapevolezza che i risultati saranno molto imprecisi.
  161.  
  162. La risposta è sì e l'idea è usare un \emph{precondizionamento}, ovvero analizzare un altro problema
  163. che si ottiene dal primo moltiplicandolo a destra e/o a sinistra per delle altre matrici rendendolo
  164. ben condizionato. Ovviamente i risultati finali risentiranno del cattivo condizionamento del problema
  165. iniziale, ma la velocità di convergenza sarà elevata.
  166.  
  167. Dato il sistema $Ax = b$ consideriamo il seguente
  168. \[
  169. LA\trasp L {\trasp L}^{-1} x = L b
  170. \]
  171. che è equivalente. Osserviamo poi che $LA\trasp L$ è simile a $L^{-1}( L A \trasp L) L$ e quindi
  172. a $A\trasp L L$. Ricordiamo ora che il condizionamento della matrice è dato da $\frac{\lambda_{max}}{\lambda_{min}}$
  173. e cerchiamo quindi una matrice $M = \trasp L L $ tale che gli autovalori di $A \trasp LL $ siano molto vicini
  174. \footnote{e quindi il loro rapporto sia molto vicino ad $1$, che è il valore minimo in cui possiamo sperare
  175. per il condizionamento di una matrice}.
  176.  
  177. Osserviamo che se fosse possibile, ad esempio, scegliere $M = A^{-1}$ allora avremmo la situazione migliore possibile.
  178. Evidentemente però questa non è un opzione, perché se fossimo a conoscenza di $A^{-1}$ avremmo già
  179. completamente risolto il nostro problema. In ogni caso, però, un buon precondizionamento si ottiene cercando
  180. di approssimare un'inversa di $A$.
  181.  
  182. Non ci occuperemo in questo corso di tecniche di precondizionamento che sono varie e a volte complesse.
  183. Sottolineamo solo alcune problematiche che potrebbero nascere usando questo approccio
  184. \begin{enumerate}[(a)]
  185. \item Per come abbiamo definito le matrici in gioco, $M$ dovrebbe essere definita positiva; in realtà
  186. esiste un modo per ovviare a questo problema, ma non verrà esposto qui;
  187. \item Una volta trovata $M$ (che potrebbe essere un'operazione complicata) dovremmo trovare anche
  188. $L$ e quindi fare una fattorizzazione; ancora una volta, esiste un modo per ignorare il fatto che esista
  189. la matrice $L$ ed usare solo $M$;
  190. \item Se $A$ è una matrice strutturata, saremo probabilmente interessati a mantenerne la struttura. Questo si può
  191. fare accontentandosi di approssimazioni dell'inversa piuttosto vaghe, ma poco invasive (come ad esempio una matrice diagonale);
  192. \end{enumerate}
  193.  
  194. \subsection{Le matrici di Toeplitz}
  195. Molte delle matrici con cui avremo a che fare risolvendo sistemi lineari in pratica sono matrici di Toeplitz.
  196. \begin{de}
  197. Sia $A$ una matrice $n \times n$; $A$ si dice di \emph{Toeplitz} se le sue diagonali sono costanti, ovvero se per
  198. ogni $i,j$ e per ogni $k \in \Z$ per cui ha senso
  199. \[
  200. a_{ij} = a_{i+k,j+k}
  201. \]
  202. \end{de}
  203. Queste matrici hanno una struttura molto particolare, ed esiste un modo piuttosto comodo di effettuare il
  204. prodotto matrice per vettore. Consideriamo il caso seguente con una matrice di Toeplitz triangolare inferiore
  205. \[
  206. \left[ \begin{array}{cccc}
  207. t_0 & & & \\
  208. t_1 & \ddots & & \\
  209. \vdots & \ddots & \ddots & \\
  210. t_n & \cdots & t_1 & t_0 \\
  211. \end{array} \right]
  212. \left[ \begin{array}{c}
  213. p_0 \\
  214. p_1 \\
  215. \vdots \\
  216. p_n
  217. \end{array} \right]
  218. = \left[ \begin{array}{l}
  219. t_0p_0 \\
  220. t_1p_0 + t_0p_1 \\
  221. \vdots\\
  222. t_np_0 + t_{n-1}p_1 + \ldots + t_0p_n
  223. \end{array} \right]
  224. \]
  225. Si osserva che il vettore che si ottiene ha i coefficienti che sono quelli del prodotto di questi due polinomi
  226. \[
  227. \left\{ \begin{array}{lll}
  228. t(x) &=& t_0 + t_1 z + \ldots + t_n z^n \\
  229. p(x) &=& p_0 + p_1 z + \ldots + p_n z^n
  230. \end{array} \right.
  231. \]
  232. Possiamo quindi calcolare il prodotto matrice vettore nello stesso modo in cui calcoleremmo i coefficienti del
  233. polinomio prodotto, ovvero con la trasformata discreta di Fourier.
  234.  
  235. Avremo quindi un costo delle moltiplicazione $O(n\log(n))$\footnote{utilizzando la \fft.} e quindi
  236. un costo complessivo del metodo del gradiente coniugato di $O(n^2\log(n))$.
  237.  
  238. % TODO: Inserire gli esempi delle applicazioni del metodo del gradiente a qualche caso particolare
  239. % di matrici, come ad esempio le matrici elementari e le matrici con nugoli di autovalori appiccicati.
  240.  
  241.  
  242. \subsection{Matrici di Toeplitz tridiagonali simmetriche}
  243. Vorremmo ora mostrare un'analisi di un caso paricolare, ovvero dei sistemi lineari con
  244. una matrice di Toeplitz simmetrica tridiagonale. \\
  245. Questo è ad esempio il caso che discretizza il problema differenziale $\triangle u = f$ nel caso di
  246. $u$ in una variabile reale. Le conclusione che otteremo su questo caso particolare ci permetteranno poi
  247. di analizzare anche i casi in più variabili.
  248.  
  249. Supponiamo ora di avere una qualsiasi matrice $T$ tridiagonale simmetrica di Toeplitz di dimensione $n$; chiamiamo $a$ gli
  250. elementi sulla diagonale e $b$ quelli sulla sotto e sopradiagonale\footnote{in effetti queste due scelte
  251. individuano completamente la matrice di cui stiamo parlando.}. \\
  252. Siamo interessati a studiare le proprietà spettrali di questa matrice per poter dare una stima
  253. del suo condizionamento in norma 2, che come abbiamo visto influenza la convergenza del metodo del
  254. gradiente coniugato.
  255.  
  256. Osserviamo ceh se $\lambda$ è un autovalore per $T$ allora la matrice $T - \lambda I$ deve essere singolare
  257. e in particolare deve esistere una soluzione non banale del sistema lineare
  258. \[
  259. (T - \lambda I)x = 0 \iff \left[ \begin{array}{ccccc}
  260. a - \lambda & b & & & \\
  261. b & a -\lambda & b & & \\
  262. & \ddots & \ddots & \ddots & \\
  263. & & b & a - \lambda & b \\
  264. & & & b & a
  265. \end{array} \right]
  266. \left[ \begin{array}{c}
  267. x_1 \\
  268. x_2 \\
  269. \vdots \\
  270. x_{n-1} \\
  271. x_n
  272. \end{array} \right] =
  273. \left[ \begin{array}{c}
  274. 0 \\
  275. 0 \\
  276. \vdots \\
  277. 0 \\
  278. 0
  279. \end{array} \right]
  280. \]
  281. Preso un qualsiasi $j$ compreso fra $2$ e $n-1$ possiamo scrivere la relazione sopra come
  282. \[
  283. bx_{j-1} + (a- \lambda)x_j + bx_{j+1} = 0
  284. \]
  285. Ponendo $x_0 = x_{n+1} = 0$ la relazione vale anche per $j = 1$ e $j=n$. Apparentemente non abbiamo
  286. chiarito molto e trovare una soluzione esplicita sembra complicato. Possiamo però provare a porre
  287. $x_j = x^{j}$, e vedere se riusciamo a trovare una soluzione particolare di questo tipo. Sostituendo
  288. nelle relazioni sopra (per $j$ fra $2$ e $n-1$) si ottiene
  289. \[
  290. bx^{j-1} + (a- \lambda)x^j + bx^{j+1} = 0
  291. \]
  292. e ricordando che l'autovettore non può essere nullo e quindi $x^j \neq 0$ per ogni $j$, questa è soddisfatta
  293. se e solo se
  294. \[
  295. b + (a-\lambda)x + bx^2 = 0 \iff 1 + \frac{a - \lambda}{b} + x^2 = 0
  296. \]
  297. Passiamo ora ad analizzare il caso che ci interessa, ovvero $a = 2$ e $b = 1$\footnote{ovvero la matrice che discretizza
  298. il problema differenziale di Laplace.}; per il terzo teorema di Gerschgorin sappiamo che $|\lambda - 2| < 2$ e
  299. quindi
  300. \[
  301. \left| \frac{a - \lambda}{b} \right|< 2
  302. \]
  303. Possiamo allora porre $\frac{a - \lambda}{b} = -2 \cos\theta$ per $\theta \in (0,\pi)$ e otteniamo l'equazione
  304. \[
  305. 1 - 2x\cdot\cos \theta + x^2 = 0
  306. \]
  307. Risolvendola otteniamo
  308. \[
  309. x_{1,2} = \cos \theta \pm \sqrt{\cos^2\theta - 1} = \cos \theta \pm i \cdot \sin \theta = e^{\pm i \theta}
  310. \]
  311. Abbiamo quindi ottenuto due soluzioni che andrebbe bene per tutte le $j = 2, \ldots, n-1$ ma nessuna delle due
  312. soddisfa le condizione per $j = 0$ e $j = n$. Osserviamo però che una qualsiasi combinazione lineare
  313. $\alpha x_1 + \beta x_2$ soddisfa le condizione interne, e cerchiamo quindi di determinare $\alpha$ e $\beta$
  314. in modo che anche le condizioni al contorno siano soddisfatte. Si ottiene
  315. \[
  316. x_0 = 0 = \alpha + \beta
  317. \]
  318. e quindi $\beta = -\alpha$; ponendo poi $j = n+1$ si ottiene
  319. \[
  320. x_{n+1} = 0 = \alpha e^{i\cdot(n+1) \theta} - \alpha e^{-i \cdot (n+1) \theta} = \alpha( 2 i \sin ((n+1)\theta) )
  321. \]
  322. e quindi $\theta_k = \frac{k\pi}{n+1}$ con $k = 1, \ldots, n$. Abbiamo trovato quindi $n$ autovettori distinti
  323. e siamo in grado di calcolare i relativi autovalori ricordando che
  324. \[
  325. \frac{a - \lambda_k}{b} = -2 \cos \theta_k = -2 \cos (\frac{k\pi}{n+1}) \Rightarrow \lambda_k = a + 2b\cos \theta_k
  326. \]
  327. Se costruiamo la matrice degli autovettori
  328. \[
  329. U = \left[ \begin{array}{c|c|c|c}
  330. \multirow{3}{*}{$x_1$} & \multirow{3}{*}{$x_2$} & \multirow{3}{*}{$\ldots$} & \multirow{3}{*}{$x_n$} \\
  331. & & & \\
  332. & & &
  333. \end{array} \right]
  334. \]
  335. possiamo osservare che $\trasp UU = D$ con $D = \gamma I$. Abbiamo quindi che $U$ è quasi unitaria, in particolare
  336. $\frac{1}{\gamma} U$ lo è. Inoltre possiamo osservare che gli elementi di $U$ non dipendono da $a$ e da $b$ e che
  337. $u_{ij} = sin(\frac{ij\pi}{n+1}}) = u_{ji}$ e quindi $U$ è simmetrica. In altre parole abbiamo una decomposizione
  338. spettrale $T = UDU$ dove tutta l'informazione sulla matrice è contenuta nella parte diagonale.
  339.  
  340. Osserviamo infine che $D = \diag{a + 2b\cos(\theta_1) , \ldots, a + 2b \cos(\theta_n)}$ e quindi l'autovalore più
  341. piccolo è $a + 2b\cos(\theta_1)$.
  342.