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 $x_k + \alpha v_k$, con $\alpha \in \R$:
  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 = b - Ax_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 ed $A$ è invertibile
  100. possiamo facilmente dire che sono linearmente
  101. indipendenti.
  102. \end{os}
  103.  
  104. Vorremmo ora impostare l'iterazione in modo che i vettori $v_0, v_1, \ldots$ che definiscono le
  105. direzioni di descrescita siano $A$-coniugati. Osserviamo in particolare che la condizione di
  106. lineare indipendenza ci permette di dire che non possiamo fare più di $n$ iterazioni dove $n$ è
  107. la dimensione della matrice $A$. Scopriremo, per fortuna, che questo è solo apparentemente un
  108. problema.
  109.  
  110. Dobbiamo ora trovare un metodo dati $v_1, \ldots, v_{k-1}$ vettori $A$-coniugati per determinare
  111. $v_k$ tale che sia $A$-coniugato con tutti gli altri. Poniamo $v_k = r_k + \beta_k v_{k-1}$;
  112. per avere la condizione di ortogonalità\footnote{secondo il prodotto scalare definito da $A$}
  113. dovremo avere
  114. \[
  115. (\trasp r_k + \beta_k\trasp v_{k-1}) A v_{k-1} = 0
  116. \]
  117. e quindi
  118. \[
  119. \beta_k = \frac{\trasp r_k A v_{k-1}}{\trasp v_{k-1} A v_{k-1}}
  120. \]
  121. Si può verificare che questa condizione non è solo necessaria ma anche sufficiente. Un successione di vettori
  122. scelti in questo modo è infatti forzatamente $A$-coniugata\footnote{questo risultato non verrà dimostrato qui.}
  123.  
  124. Avendo risolto il problema del trovare effettivamente la successione, ci chiediamo come affrontare
  125. il limite al numero di iterazioni che ci è indicato Osservazione~\ref{os:coniugli}. Ci aiuta il
  126. seguente
  127. \begin{te}
  128. Siano $\{x_k\}_{k=1,\ldots,n}$ una successione di vettori che rispetti le condizioni osservate precedentemente con $x_0 = 0$;
  129. Allora per ogni $k$ si ha che
  130. \[
  131. \Phi(x_k) = \min_{x \in \Span{v_0, \ldots, v_k-1}}(\Phi(x))
  132. \]
  133. ed in particolare dopo $n$ iterazioni $\Phi(x_n)$ è il minimo assoluto di $\Phi(x)$.
  134. \end{te}
  135. Questo teorema ci dice, in particolare, che questo metodo iterativo è in realtà un metodo diretto, ovvero
  136. è convergente in un numero finito di passi per ogni scelta di punto iniziale.
  137.  
  138. 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
  139. come si comporta $e_k$ mentre $k$ si avvicina $n$. Non dobbiamo infatti dimenticare che questo è un metodo
  140. iterativo e quindi in molti casi pratici saremo interessati a fermarci prima di avere la convergenza totale.
  141. Esiste un altro teorema che ci dà un risultato piuttosto preciso sulla velocità di convergenza:
  142. \begin{te}
  143. Sia $||\cdot||_A$ la norma indotta dalla matrice $A$\footnote{ricordiamo che questa è definita nel seguente modo
  144. $||x||_A := \sqrt{\trasp x A x}$}
  145. ; allora per ogni $k$ e per ogni scelta iniziale di $x_0$ si
  146. ha
  147. % TODO: Questa maggiorazione è sbagliata. Il Demmel ne propone un'altra, provare a vedere se riusciamo
  148. % a portarla a qualcosa di umano.
  149. \[
  150. ||e_k||_A \leq \left( \frac{2\sqrt{\cond{A}}}{\sqrt{\cond{A}} - 1} \right)^{k} ||e_0||_A
  151. \]
  152. \end{te}
  153. Ancora una volta la velocità di convergenza dipende dal condizionamento della matrice del problema. Per
  154. matrici con un piccolo condizionamento questa è molto veloce, mentre per matrici con condizionamento
  155. più grande potrebbe diventare lenta.
  156.  
  157. \subsection{Precondizionamento}
  158. Supponiamo di avere una matrice $A$ definita positiva che individua un problema mal condizionato, in cui la velocità
  159. di convergenza del metodo del gradiente coniugato è molto lenta.
  160.  
  161. Sappiamo dai risultati di Analisi Numerica che non possiamo riuscire a risolvere con precisione
  162. un sistema mal condizionato; ci chiediamo però se sia possibile perlomeno risolverlo velocemente,
  163. pur con la consapevolezza che i risultati saranno molto imprecisi.
  164.  
  165. La risposta è sì e l'idea è usare un \emph{precondizionamento}, ovvero analizzare un altro problema
  166. che si ottiene dal primo moltiplicandolo a destra e/o a sinistra per delle altre matrici rendendolo
  167. ben condizionato. Ovviamente i risultati finali risentiranno del cattivo condizionamento del problema
  168. iniziale, ma la velocità di convergenza sarà elevata.
  169.  
  170. Dato il sistema $Ax = b$ consideriamo il seguente
  171. \[
  172. LA\trasp L {\trasp L}^{-1} x = L b
  173. \]
  174. che è equivalente. Osserviamo poi che $LA\trasp L$ è simile a $L^{-1}( L A \trasp L) L$ e quindi
  175. a $A\trasp L L$. Ricordiamo ora che il condizionamento della matrice è dato da $\frac{\lambda_{max}}{\lambda_{min}}$
  176. e cerchiamo quindi una matrice $M = \trasp L L $ tale che gli autovalori di $A \trasp LL $ siano molto vicini
  177. \footnote{e quindi il loro rapporto sia molto vicino ad $1$, che è il valore minimo in cui possiamo sperare
  178. per il condizionamento di una matrice}.
  179.  
  180. Osserviamo che se fosse possibile, ad esempio, scegliere $M = A^{-1}$ allora avremmo la situazione migliore possibile.
  181. Evidentemente però questa non è un opzione, perché se fossimo a conoscenza di $A^{-1}$ avremmo già
  182. completamente risolto il nostro problema. In ogni caso, però, un buon precondizionamento si ottiene cercando
  183. di approssimare un'inversa di $A$.
  184.  
  185. Non ci occuperemo in questo corso di tecniche di precondizionamento che sono varie e a volte complesse.
  186. Sottolineamo solo alcune problematiche che potrebbero nascere usando questo approccio
  187. \begin{enumerate}[(a)]
  188. \item Per come abbiamo definito le matrici in gioco, $M$ dovrebbe essere definita positiva; in realtà
  189. esiste un modo per ovviare a questo problema, ma non verrà esposto qui;
  190. \item Una volta trovata $M$ (che potrebbe essere un'operazione complicata) dovremmo trovare anche
  191. $L$ e quindi fare una fattorizzazione; ancora una volta, esiste un modo per ignorare il fatto che esista
  192. la matrice $L$ ed usare solo $M$;
  193. \item Se $A$ è una matrice strutturata, saremo probabilmente interessati a mantenerne la struttura. Questo si può
  194. fare accontentandosi di approssimazioni dell'inversa piuttosto vaghe, ma poco invasive (come ad esempio una matrice diagonale);
  195. \end{enumerate}
  196.  
  197. \section{Matrici strutturate}
  198. Uno dei punti cardine nell'applicazione dei metodi per la soluzione dei sistemi lineari sarà riuscire a
  199. sfruttare la struttura delle matrici con cui dovremo operare.
  200.  
  201. \subsection{Le matrici di Toeplitz} \label{subsec:toeplitz}
  202. Molte delle matrici con cui avremo a che fare risolvendo sistemi lineari in pratica sono matrici di Toeplitz.
  203. \begin{de}
  204. Sia $A$ una matrice $n \times n$; $A$ si dice di \emph{Toeplitz} se le sue diagonali sono costanti, ovvero se per
  205. ogni $i,j$ e per ogni $k \in \Z$ per cui ha senso
  206. \[
  207. a_{ij} = a_{i+k,j+k}
  208. \]
  209. \end{de}
  210. Queste matrici hanno una struttura molto particolare, ed esiste un modo piuttosto comodo di effettuare il
  211. prodotto matrice per vettore. Consideriamo il caso seguente con una matrice di Toeplitz triangolare inferiore
  212. \[
  213. \left[ \begin{array}{cccc}
  214. t_0 & & & \\
  215. t_1 & \ddots & & \\
  216. \vdots & \ddots & \ddots & \\
  217. t_n & \cdots & t_1 & t_0 \\
  218. \end{array} \right]
  219. \left[ \begin{array}{c}
  220. p_0 \\
  221. p_1 \\
  222. \vdots \\
  223. p_n
  224. \end{array} \right]
  225. = \left[ \begin{array}{l}
  226. t_0p_0 \\
  227. t_1p_0 + t_0p_1 \\
  228. \vdots\\
  229. t_np_0 + t_{n-1}p_1 + \ldots + t_0p_n
  230. \end{array} \right]
  231. \]
  232. Si osserva che il vettore che si ottiene ha i coefficienti che sono quelli del prodotto di questi due polinomi
  233. \[
  234. \left\{ \begin{array}{lll}
  235. t(x) &=& t_0 + t_1 z + \ldots + t_n z^n \\
  236. p(x) &=& p_0 + p_1 z + \ldots + p_n z^n
  237. \end{array} \right.
  238. \]
  239. Possiamo quindi calcolare il prodotto matrice vettore nello stesso modo in cui calcoleremmo i coefficienti del
  240. polinomio prodotto, ovvero con la trasformata discreta di Fourier.
  241.  
  242. Avremo un costo delle moltiplicazione $O(n\log(n))$\footnote{utilizzando la \fft.} e quindi
  243. un costo complessivo del metodo del gradiente coniugato di $O(n^2\log(n))$.
  244.  
  245. % TODO: Inserire gli esempi delle applicazioni del metodo del gradiente a qualche caso particolare
  246. % di matrici, come ad esempio le matrici elementari e le matrici con nugoli di autovalori appiccicati.
  247.  
  248.  
  249. \subsection{Matrici di Toeplitz tridiagonali simmetriche}
  250. Vorremmo ora mostrare un'analisi di un caso paricolare, ovvero dei sistemi lineari con
  251. una matrice di Toeplitz simmetrica tridiagonale. \\
  252. Questo è ad esempio il caso che discretizza il problema differenziale $\triangle u = f$ nel caso di
  253. $u$ in una variabile reale. Le conclusione che otteremo su questo caso particolare ci permetteranno poi
  254. di analizzare anche i casi in più variabili.
  255.  
  256. Supponiamo ora di avere una qualsiasi matrice $T$ tridiagonale simmetrica di Toeplitz di dimensione $n$; chiamiamo $a$ gli
  257. elementi sulla diagonale e $b$ quelli sulla sotto e sopradiagonale\footnote{in effetti queste due scelte
  258. individuano completamente la matrice di cui stiamo parlando.}. \\
  259. Siamo interessati a studiare le proprietà spettrali di questa matrice per poter dare una stima
  260. del suo condizionamento in norma 2, che come abbiamo visto influenza la convergenza del metodo del
  261. gradiente coniugato.
  262.  
  263. Osserviamo ceh se $\lambda$ è un autovalore per $T$ allora la matrice $T - \lambda I$ deve essere singolare
  264. e in particolare deve esistere una soluzione non banale del sistema lineare
  265. \[
  266. (T - \lambda I)x = 0 \iff \left[ \begin{array}{ccccc}
  267. a - \lambda & b & & & \\
  268. b & a -\lambda & b & & \\
  269. & \ddots & \ddots & \ddots & \\
  270. & & b & a - \lambda & b \\
  271. & & & b & a
  272. \end{array} \right]
  273. \left[ \begin{array}{c}
  274. x_1 \\
  275. x_2 \\
  276. \vdots \\
  277. x_{n-1} \\
  278. x_n
  279. \end{array} \right] =
  280. \left[ \begin{array}{c}
  281. 0 \\
  282. 0 \\
  283. \vdots \\
  284. 0 \\
  285. 0
  286. \end{array} \right]
  287. \]
  288. Preso un qualsiasi $j$ compreso fra $2$ e $n-1$ possiamo scrivere la relazione sopra come
  289. \[
  290. bx_{j-1} + (a- \lambda)x_j + bx_{j+1} = 0
  291. \]
  292. Ponendo $x_0 = x_{n+1} = 0$ la relazione vale anche per $j = 1$ e $j=n$. Apparentemente non abbiamo
  293. chiarito molto e trovare una soluzione esplicita sembra complicato. Possiamo però provare a porre
  294. $x_j = x^{j}$, e vedere se riusciamo a trovare una soluzione particolare di questo tipo. Sostituendo
  295. nelle relazioni sopra (per $j$ fra $2$ e $n-1$) si ottiene
  296. \[
  297. bx^{j-1} + (a- \lambda)x^j + bx^{j+1} = 0
  298. \]
  299. e ricordando che l'autovettore non può essere nullo e quindi $x^j \neq 0$ per ogni $j$, questa è soddisfatta
  300. se e solo se
  301. \[
  302. b + (a-\lambda)x + bx^2 = 0 \iff 1 + \frac{a - \lambda}{b} + x^2 = 0
  303. \]
  304. Passiamo ora ad analizzare il caso che ci interessa, ovvero $a = 2$ e $b = 1$\footnote{ovvero la matrice che discretizza
  305. il problema differenziale di Laplace.}; per il terzo teorema di Gerschgorin sappiamo che $|\lambda - 2| < 2$ e
  306. quindi
  307. \[
  308. \left| \frac{a - \lambda}{b} \right|< 2
  309. \]
  310. Possiamo allora porre $\frac{a - \lambda}{b} = -2 \cos\theta$ per $\theta \in (0,\pi)$ e otteniamo l'equazione
  311. \[
  312. 1 - 2x\cdot\cos \theta + x^2 = 0
  313. \]
  314. Risolvendola otteniamo
  315. \[
  316. x_{1,2} = \cos \theta \pm \sqrt{\cos^2\theta - 1} = \cos \theta \pm i \cdot \sin \theta = e^{\pm i \theta}
  317. \]
  318. Abbiamo quindi ottenuto due soluzioni che andrebbe bene per tutte le $j = 2, \ldots, n-1$ ma nessuna delle due
  319. soddisfa le condizione per $j = 0$ e $j = n$. Osserviamo però che una qualsiasi combinazione lineare
  320. $\alpha x_1 + \beta x_2$ soddisfa le condizione interne, e cerchiamo quindi di determinare $\alpha$ e $\beta$
  321. in modo che anche le condizioni al contorno siano soddisfatte. Si ottiene
  322. \[
  323. x_0 = 0 = \alpha + \beta
  324. \]
  325. e quindi $\beta = -\alpha$; ponendo poi $j = n+1$ si ottiene
  326. \[
  327. 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) )
  328. \]
  329. e quindi $\theta_k = \frac{k\pi}{n+1}$ con $k = 1, \ldots, n$. Abbiamo trovato quindi $n$ autovettori distinti
  330. e siamo in grado di calcolare i relativi autovalori ricordando che
  331. \[
  332. \frac{a - \lambda_k}{b} = -2 \cos \theta_k = -2 \cos (\frac{k\pi}{n+1}) \Rightarrow \lambda_k = a + 2b\cos \theta_k
  333. \]
  334. Se costruiamo la matrice degli autovettori
  335. \[
  336. U = \left[ \begin{array}{c|c|c|c}
  337. \multirow{3}{*}{$x_1$} & \multirow{3}{*}{$x_2$} & \multirow{3}{*}{$\ldots$} & \multirow{3}{*}{$x_n$} \\
  338. & & & \\
  339. & & &
  340. \end{array} \right]
  341. \]
  342. possiamo osservare che $\trasp UU = D$ con $D = \gamma I$. Abbiamo quindi che $U$ è quasi unitaria, in particolare
  343. $\frac{1}{\gamma} U$ lo è. Inoltre possiamo osservare che gli elementi di $U$ non dipendono da $a$ e da $b$ e che
  344. $u_{ij} = \sin(\frac{ij\pi}{n+1}) = u_{ji}$ e quindi $U$ è simmetrica. In altre parole abbiamo una decomposizione
  345. spettrale $T = UDU$ dove tutta l'informazione sulla matrice è contenuta nella parte diagonale.
  346.  
  347. Osserviamo infine che $D = \diag{a + 2b\cos(\theta_1) , \ldots, a + 2b \cos(\theta_n)}$ e quindi l'autovalore più
  348. piccolo è $a + 2b\cos(\theta_1)$.
  349.