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{Decomposizione in valori singolari} \label{ch:svd}
  2.  
  3. In questa sezione ci occuperemo di un tipo di fattorizzazione basato sulle proprietà spettrali, e quindi differente
  4. dalle fattorizzazioni viste fino ad ora (come la QR o la LU). Cominceremo esponendo un caso concreto in cui
  5. ci si trova nella necessità di utilizzarla.
  6.  
  7. \section{Problemi lineari ai minimi quadrati}
  8. Consideriamo il seguente problema; sia $A$ una matrice $m \times n$ con $m \geq n$ e $b$ un vettore
  9. di $\R^m$. Vogliamo trovare $x$ tale che $Ax = b$. In generale questo problema è risolubile solo se
  10. $b \in \imm{A}$ vista come applicazione lineare, ma non è conveniente affrontare il problema risolvendo
  11. effettivamente il sistema lineare. Possiamo quindi riformulare la nostra richiesta in questo modo: cerchiamo
  12. $x$ tale che
  13. \[
  14. x = \min_{x \in \R^n}( || Ax - b ||_2 )
  15. \]
  16. Se $x$ è effettivamente soluzione del sistema lineare avremo $||Ax - b||_2 = 0$, ed in caso contrario
  17. avremo un $x$ tale che $Ax$ sia una buona\footnote{dove buona significa che non si potrebbe trovare
  18. un altro $x'$ tale ceh $Ax'$ sia più vicino (nel senso della norma 2) a $b$ di quanto lo sia già $Ax$}
  19. approssimazione di $b$.
  20.  
  21. Analizziamo alcune tecniche per la risoluzione di questo problema
  22.  
  23. \subsection{Fattorizzazione QR}
  24. Consideriamo la fattorizzazione QR di $A = QR$. Osserviamo che in questo caso $Q \in \matr{\R}{n}{n}$ e
  25. $R \in \matr{\R}{m}{n}$. Osservando che minimizzare la norma 2 è la stessa cosa che minimizzarne il
  26. quadrato si ottiene
  27. \[
  28. ||Ax - b||_2^2 = ||QRx - b||_2^2 = ||Q(Rx - \trasp Qb)||_2^2 = ||Rx - \trasp Qb||_2^2
  29. \]
  30. dove l'ultimo passaggio è giustificato dal fatto che $Q$ è unitaria.
  31. Consideriamo che la matrice $R$ e il vettore $\trasp Qb$ avranno una struttura di questo tipo:
  32. \[
  33. R = \left[ \begin{array}{c}
  34. \hat R \\
  35. \trasp 0
  36. \end{array} \right]
  37. \qquad \trasp Qb = \left[ \begin{array}{c}
  38. w_1 \\
  39. w_2
  40. \end{array} \right]
  41. \]
  42. dove $\hat R$ è una matrice quadrata $n \times n$, $w_1$ un vettore con $n$ componenti e $w_2$ un vettore
  43. di $\R^{m-n}$. Possiamo quindi riscrivere la relazione precedente in questo modo
  44. \[
  45. ||Ax - b||_2^2 = ||\hat Rx - w_1||_2^2 + ||w_2||^2
  46. \]
  47. Abbiamo ricondotto il problema a minimizzare la norma di $\hat Rx - w_1$. Se $\hat R$ è invertibile allora
  48. la soluzione al problema è evidentemente unica ed è la soluzione del sistema lineare $\hat Rx = w_1$.
  49. Osserviamo che $\hat R$ è invertibile se e solo se lo è $\rk{A} = n$; per ora assumeremo che
  50. questo sia vero, riservandoci di analizzare il caso più generale in seguito.
  51.  
  52. In conclusione la fattorizzazione QR ci ha permesso di ricondurre il problema alla risoluzione di un sistema
  53. lineare quadrato di ordine $n$. Analizziamo ora un diverso approccio.
  54.  
  55. \subsection{Sistema delle equazioni normali}
  56. Questo sistema deriva dalla seguente osservazione. Supponiamo di avere $x$ soluzione del sistema $Ax = b$. Allora
  57. $x$ deve essere anche soluzione del sistema quadrato $\trasp AAx = \trasp Ab$, che si ottiene semplicemente moltiplicando
  58. a sinistra la precedente relazione per $\trasp A$.
  59. Osserviamo ancora una volta che scrivendo la fattorizzazione QR di $A$ e supponendo che $A$ abbia rango massimo si
  60. ottiene lo stesso risultato di prima:
  61. \[
  62. A = QR \qquad \trasp AAx = b \iff \trasp RRx = \trasp R\trasp Qb \iff \trasp R\hat R = \trasp Rw_1 \iff
  63. \hat Rx = w_1
  64. \]
  65. e quindi si ha l'unicità della soluzione e la risolubilità del sistema lineare. In generale però, il calcolo
  66. di $\trasp AA$ potrebbe essere oneroso e, soprattutto, nessuno ci garantisce in una situazione generale
  67. che il rango di $A$ sia massimo.
  68.  
  69. \subsection{Teorema di decomposizione in valori singolari}
  70. Possiamo pensare di voler migliorare l'idea delle equazioni normali. In altre parole, vogliamo trovare il
  71. modo di evitare il calcolo di $\trasp AA$. Consideriamo dunque il seguente
  72. \begin{te}[Decomposizione in valori singolari]
  73. Siano $m \geq n$ e $A \in \matr{\R}{m}{n}$. Esistono $U \in \matr{\R}{m}{n}$ e $V \in \mat{\R}{n}$ ortogonali e
  74. $\Sigma \in \matr{\R}{m}{n}$ tali che
  75. \[
  76. \Sigma = \left[ \begin{array}{cccc}
  77. \sigma_1 & & & \\
  78. & \sigma_2 & & \\
  79. & & \ddots & \\
  80. & & & \sigma_n \\
  81. \end{array} \right]; \qquad \textrm{dove} \: \sigma_i \geq \sigma_j \ \forall i < j \qquad \textrm{e} \qquad
  82. A = U\Sigma\trasp V
  83. \]
  84. \end{te}
  85.  
  86. \begin{os}
  87. Osservando che $\Sigma$ è quasi diagonale si capisce che in un certo senso questa è una decomposizione spettrale.
  88. In particolare si può scrivere $\trasp AA$ come
  89. \[
  90. \trasp AA = \trasp V\Sigma\trasp U U \Sigma V = \trasp V \left[ \begin{array}{cccc}
  91. \sigma_1^2 & & & \\
  92. & \sigma_2^2 & & \\
  93. & & \ddots & \\
  94. & & & \sigma_n^2 \\
  95. \end{array} \right] V
  96. \]
  97. e quindi se prendiamo $\lambda_i$ gli autovalori di $\trasp AA$ (che sono reali perché la matrice $\trasp AA$
  98. è simmetrica) ordinati in modo decrescente abbiamo che $\sigma_i = \sqrt{\lambda_i}$ per ogni $i = 1 \ldots n$.
  99. \end{os}
  100. Inoltre questa fattorizzazione mette in luce altre proprietà della matrice $A$. In particolare:
  101. \begin{os}
  102. Se $A$ ha rango $k$, allora $\sigma_1 \ldots \sigma_k$ sono tutti diversi da $0$ mentre $\sigma_{k+1} \ldots
  103. \sigma_n$ sono $0$. Questo si nota dal fatto che $\trasp AA$ ha lo stesso rango di $A$ ed il suo rango
  104. è pari al numero\footnote{inteso come numero moltiplicato per la molteplicità algebrica} di autovalori diversi da $0$.
  105. L'ordinamento che abbiamo richiesto sui $\sigma_i$ ci permette di concludere.
  106. \end{os}
  107.  
  108. Possiamo ora osservare come cambia il problema lineare ai minimi quadrati quando introduciamo questa
  109. nuova fattorizzazione.
  110. \[
  111. ||Ax - b||_2^2 = ||U\Sigma\trasp Vx - b||_2^2 = ||\Sigma\trasp Vx - \trasp Ub||_2^2
  112. \]
  113. e ponendo $z = \trasp V x$ e $\trasp Ub = \left[ \begin{array}{c} w_1 \\ w_2 \end{array} \right] $ si ottiene
  114. \[
  115. \Bigg|\Bigg|\Sigma z - \left[ \begin{array}{c} w_1 \\ w_2 \end{array} \right] \Bigg|\Bigg|_2^2 =
  116. \Bigg|\Bigg|\left[ \begin{array}{ccc} \sigma_1 & & \\ & \ddots & \\ & & \sigma_n \end{array} \right] z - w_1\Bigg|\Bigg|_2^2 + ||w_2||_2^2
  117. \]
  118. Se il rango di $A$ è $n$ allora la matrice $\diag{\sigma_1 \ldots \sigma_n}$ è invertibile e quindi per
  119. minimizzare il primo fattore è sufficiente risolvere un sistema diagonale di ordine $n$.
  120.  
  121. Se però $A$ è di ordine $k < n$ allora si può ripartizionare $\trasp Ub$ in una parte con $k$ componenti
  122. e una parte con le restanti $n-k$. Riscrivendo l'espressione si ottiene che si può minimizzare il primo fattore
  123. risolvendo un sistema di $k$ equazioni e scegliendo arbitrariamente le restanti $n-k$.
  124. \begin{os} Come regola generale si preferisce scegliere queste ultime componenti tutte nulle in modo
  125. da minimizzare la norma della soluzione. \`E infatti generalmente preferibile ottenere una soluzione di norma piccola.
  126. \end{os}
  127. Dalle relazioni sopra possiamo anche ottenere una espressione esplicita della soluzione $z$. In particolare
  128. \[
  129. z_j = \frac{w_{1,j}}{\sigma_j} = \frac{\trasp U_j b }{\sigma_j} \quad \text{dove} \ U_j \ \text{è la $j$-esima
  130. colonna di} \ U
  131. \]
  132. Ora possiamo ricordare che $x = Vz$ e quindi se $A$ è di rango massimo
  133. \[
  134. x = Vz = \sum_{k=1}^{n} \frac{V_k\trasp U_kb}{\sigma_k} = \underbrace{\left( \sum_{k=1}^{n} \frac{V_k\trasp U_k}{\sigma_k} \right)}_{A^+} b
  135. \]
  136. e chiamiamo $A^+$ \emph{pseudo-inversa} di $A$. Più precisamente
  137. \[
  138. A^+ = V \Sigma^{-1} \trasp U
  139. \]
  140. % TODO: Controllare che le uguaglianze scritte sull'inversa abbiano senso. Una è giusta di sicuro,
  141. % ma quale?
  142. Si verifica subito infatti che e $A^+A = I$. % \footnote{ma attenzione! Non è vero che $AA^+ = A^+A$ perchè
  143. % queste sono addirittura due matrici di ordine diverso. Il loro prodotto dà sempre l'identità, ma non dello stesso
  144. % spazio.}.
  145. Questa pseudo-inversa di chiama anche \emph{inversa di Moore-Penrose}.
  146.  
  147. Se $A$ non è di rango massimo possiamo ugualmente definire la pseudo-inversa ``fermando'' la somma
  148. a $k$ dove $k$ è il rango di $A$. Abbiamo dunque
  149. \[
  150. A^+ = \sum_{j=1}^{k} \frac{V_j\trasp U_j}{\sigma_j}
  151. \]
  152. e ancora una volta vale l'eguaglianza $x = A^+b$ dove $x$ è il vettore di rango minimo che risolve (nel senso
  153. che minimizza il valore della norma)
  154. il problema lineare ai minimi quadrati.
  155.  
  156. \subsection{Interpolazione polinomiale}
  157. Abbiamo visto nel corso di analisi numerica che dati $(x_i,y_i)$ con $i = 0 \ldots n$ è sempre possibile
  158. trovare un polinomio di grado al più $n$ tale che $p(x_i) = y_i$ per tutti gli $i$.
  159.  
  160. Nelle applicazioni concrete si ha però a che fare con grandi moli di dati sperimentali e raramente
  161. il grado del polinomio che si vorrebbe usare per creare un modello matematico ha lo stesso ordine
  162. di grandezza. Ci chiediamo: ``\`E allora possibile trovare il polinomio di grado $m \ll n$ che meglio
  163. approssimi la distribuzione dei nostri dati sperimentali?''; la risposta è sì e si tratta di risolvere
  164. un problema lineare ai minimi quadrati con una matrice $m \times n$.
  165. Indagheremo in seguito questa tecnica per il calcolo del miglior polinomio approssimanete un insieme di dati
  166. sperimentali, perché dovremo superare anche il problema del condizionamente della matrice di Van der Monde
  167. che individua il problema\footnote{Questo era un problema anche nel caso standard con matrice quadrata, e rimarrà
  168. complesso anche nel caso della matrice rettangolare}.
  169.  
  170. \subsection{Principali proprietà della SVD} \label{subsec:svdprop}
  171. Abbiamo introdotto la SVD parlando di sistemi lineari perché questo è il contesto in cui è stata originariamente
  172. concepita. Possiamo però osservare che essa ha anche delle interessanti proprietà in molti altri ambiti.
  173.  
  174. Consideriamo la matrice $A \in \matr{\R}{m}{n}$ che individua univocamente un'applicazione lineare
  175. \[
  176. T_A : \R^n \longto \R^m
  177. \]
  178. La \svd\ ci permette di conoscere meglio questa applicazione. Sappiamo che se $A$ è di rango $k$ allora
  179. $A = U\Sigma\trasp V$ e i $\sigma_i$ della matrice $\Sigma$ sono nulli a partire dal ($k+1$)-esimo.
  180. \`E chiaro dunque che la scomposizione di permette di determinare il rango di $A$ e quindi di capire
  181. che l'immagine di $T_A$ avrà dimensione $k$ e il kernel dell'applicazione $n-k$. Ricordando però che
  182. \[
  183. Ax = U\Sigma\trasp Vx = \sum_{i=1}^{k} \sigma_i U_i\trasp V_i x
  184. \]
  185. possiamo estrarre altre informazioni. Dato che per ogni $x$ $V_i x$ è uno scalare l'immagine di $T_A$
  186. deve essere contenuta nello $\Span{U_1 \ldots U_k}$. Dato che quest'ultimo ha dimensione $k$, che è la
  187. stessa di $\imm{T_A}$, devono coincidere e quindi le prime $k$ colonne di $U$ sono una base per l'immagine.
  188. Analogamente dall'ortogonalità delle colonne di $V$ si ha che se $x = V_j$ con $j > k$ allora $Ax = 0$
  189. e quindi lo $\Span{V_{k+1} \ldots V_{n}}$ è contenuto nel kernel di $T_A$. Ancora una volta per motivi
  190. dimensionali devono coincidere.
  191.  
  192. In sintesi si ha che se $A = U\Sigma\trasp V$ è una matrice di rango $k$ allora
  193. \begin{itemize}
  194. \item $\Ker{A} = \Span{V_{k+1} \ldots V_n}$;
  195. \item $\imm{A} = \Span{U_1 \ldots U_k}$;
  196. \end{itemize}
  197.  
  198. Introduciamo ora un'estensione del concetto di norma indotta visto nel corso di Analisi Numerica
  199. \begin{de}
  200. Sia $A$ una matrice $m \times n$. Si dice \emph{norma di $A$ indotta dalla norma vettoriale $||\cdot||$}
  201. la seguente funzione
  202. \[
  203. \begin{array}{rcl}
  204. ||\cdot|| : \matr{\R}{m}{n} &\longto& \R \\
  205. A & \longmapsto & \displaystyle \max_{||x|| = 1} ||Ax||
  206. \end{array}
  207. \]
  208. \end{de}
  209. Questa è effettivamente una norma, ma la verifica viene qui omessa.
  210. %TODO: Magari si potrebbe anche fare, suvvia!
  211.  
  212. \begin{os}
  213. Osserviamo la seguente catena di uguaglianze
  214. \[
  215. ||Ax||_2 = ||U\Sigma \trasp V x||_2 = ||\Sigma \trasp V x||_2 = ||\Sigma z||_2
  216. \]
  217. Queste ci dicono che, data l'invertibilità e l'ortogonalità di $V$, $||A||_2 = ||\Sigma||_2 = \sigma_1$.
  218. \end{os}
  219. Date queste considerazioni possiamo introdurre anche una generalizzazione del condizionamento
  220. ridefinendole con la nuova norma e con la pseudo inversa. Nel caso della norma due si ottiene che
  221. \[
  222. \cond{A} = ||A^+|| \cdot ||A||_2 = \frac{\sigma_1}{\sigma_k}
  223. \]
  224. dove $\sigma_k$ è il più piccolo $\sigma_i$ non nullo, ovvero, come al solito, $k$ è il rango di $A$.
  225. Un'analisi dell'errore effettuata sul problema lineare ai minimi quadrati mostrerebbe come effettivamente
  226. l'errore generato dal procedimento dipende proprio da questo coefficiente.
  227.  
  228. \subsection{\tsvd, pulizia del rumore e compressione di immagini}
  229. Le considerazioni fatte nella Sezione~\ref{subsec:svdprop} ci permettono di introdurre delle tecniche
  230. per ridurre il condizionamento di alcuni problemi.
  231.  
  232. Supponiamo di avere ad esempio un sistema lineare $Ax = b$ con $A$ una matrice con un condizionamento
  233. molto alto. Siamo consci di non avere speranza di risolvere in maniera esatta il sistema senza aumentare
  234. la precisione dei tipi che utilizziamo negli algoritmi.
  235. Se ad esempio il condizionamento è nell'ordine di $10^{12}$ e la precisione di macchina di $10^{16}$ sappiamo
  236. che probabilmente avremo circa $4$ cifre decimali corrette (nella migliore delle ipotesi). La soluzione di aumentare
  237. la precisione di macchina (ad esempio portarla a $10^{-32}$) potrebbe essere una soluzione ma appesantirebbe
  238. molto l'esecuzione dell'algoritmo.
  239.  
  240. Consideriamo dunque la \svd\ di $A = U\Sigma\trasp V$.
  241. Possiamo supporre che $\sigma_n$ sia molto piccolo e che
  242. questo causi il cattivo condizionamento (ricordiamo che $\cond{A} = \frac{\sigma_1}{\sigma_n}$). Possiamo
  243. pensare di troncare la matrice $\Sigma$ sostituendola con una matrice $\hat \Sigma$ identica ad eslusione del posto
  244. $(n,n)$ dove rimpiazziamo $\sigma_n$ con $0$, e risolvere il problema $\hat Ax = U\hat \Sigma\trasp Vx = b$.
  245. Questo \textbf{è un altro problema}, ma potrebbe essere molto meglio condizionato del precedente (ad esempio
  246. se $\sigma_{n-1} \gg \sigma_n$) e talvolta è la scelta migliore.
  247.  
  248. Questa pratica di ``troncamento'' viene chiamata \tsvd, ovvero \svd\ con troncamento. \`E tipicamente
  249. utile nella ricostruzione di immagini (che vedremo più avanti) perché non ci interessa la soluzione esatta
  250. del problema, ma la soluzione esatta di un problema ``semplice'' che si avvicini ai nostri dati.
  251. Questo procedimento viene anche detto di soglia, o di filtro, perché è possbile decidere una soglia minima
  252. sotto la quale i $\sigma_i$ non possono scendere, pena essere messi a $0$. In questo modo, fissata la
  253. soglia $s$, avremo che il condizionamento sarà maggiorato da $\sigma_1s^{-1}$.
  254.  
  255. In generale non è un problema banale scegliere il livello di soglia $s$. Nei casi più semplici si ha
  256. un salto dei valori singolari, che passano da un ordine di grandezza ad uno (o a più) inferiori, dividendo
  257. in due zone ben distinte quelli prossimi a $0$ e quelli $\gg 0$.
  258.  
  259. Osservaiamo che in generale non abbiamo alcuna garanzia che i risultati ottenuti tramite
  260. questa tecnica abbiano un riscontro con il problema che aveva generato i dati di partenza, e va quindi
  261. usata con molta attenzione.
  262.  
  263. Un altro esempio pratico di utilizzo della \tsvd\ è quello della compressione delle immagini. Supponiamo di avere
  264. un'immagine rappresentata come una matrice di pixel $A$\footnote{non esiste un motivo per cui la matrice dovrebbe
  265. essere quadrata, è solo per rendere più chiaro l'esempio} di dimensione $n \times n$. Possiamo scrivere
  266. $A = U\Sigma\trasp V$ e pensare di limitarci ad una matrice di rango $k$ e quindi tronvare tutti i $\sigma_i$
  267. con $i > k$. In questo modo potremo rappresentare l'immagine considerando solo le prime $k$ colonne di $U$, le
  268. prime $k$ righe di $V$ e i $\sigma_1 \ldots \sigma_k$.
  269. Per fare un esempio pratico supponiamo $n = 1024$, ovvero un'immagine da 1 Megapixel. Questa occuperebbe in memoria
  270. (supponendo che sia in bianco e nero a 256 colori) 1~\MB. Decidendo di comprimerla con una matrice di rango $15$
  271. avremmo invece una dimensione di 15~\KB! Ovviamente l'immagine risultante darebbe solamente un'idea di quella originale,
  272. ma si potrebbe pensare di trovare un punto d'incontro fra dimensione e qualità\footnote{e magari di raffinare anche
  273. il metodo di compressione, ma questo lo vedremo in seguito} (si veda ad esempio la Figura~\ref{fig:camosci}).
  274.  
  275. \begin{figure}[ht!]
  276. \begin{center}
  277. \includegraphics[scale=0.2]{camosci/camoscio_100.png}
  278. \includegraphics[scale=0.2]{camosci/camoscio_50.png}
  279. \includegraphics[scale=0.2]{camosci/camoscio_25.png}
  280. \includegraphics[scale=0.2]{camosci/camoscio_15.png}
  281. \includegraphics[scale=0.2]{camosci/camoscio_8.png}
  282. \caption{Una successione di camosci di 300 pixel di lato e di rango rispettivamente $100$, $50$, $25$, $15$ e $8$; le
  283. immagini sono state ridimensionate per stare nella pagina, e sono state realizzate con un programma
  284. identico a quello realizzato in laboratorio durante il corso.} \label{fig:camosci}
  285. \end{center}
  286. \end{figure}
  287.  
  288.  
  289. \section{Calcolo della decomposizione in valori singolari}
  290. In questa sezione introdurremo dei metodi per il calcolo della \svd\ e faremo qualche altra considerazione
  291. sui suoi possibili utilizzi.
  292.  
  293. \subsection{Approssimazione di rango fissato}
  294. Supponiamo di avere una matrice $A \in \mat{\R}{n}$ e di volerne trovare una approssimazione efficiente.
  295. Un'idea può essere quella di rappresentarla con una matrice di rango fissato $k < n$ che le assomigli il
  296. più possibile. \\
  297. Consideriamo la procedura seguita anche alla fine della sezione precedente
  298. \begin{enumerate}
  299. \item Calcoliamo la fattorizzazione \svd\ di $A = U \Sigma V$;
  300. \item Tronchiamo la $\Sigma$ ponendo $\sigma_{k+1} \ldots \sigma{n} = 0$ e chiamiamo $\tilde \Sigma$
  301. la nuova matrice;
  302. \item Approssimiamo $A$ con $U \tilde \Sigma V = \sum_{i=1}^{k} \sigma_j U_j \trasp{V_j}$;
  303. \end{enumerate}
  304. \begin{os}
  305. Questa approssimazione di $A$ è molto pratica nel caso non si abbia sufficiente spazio per
  306. salvare $A$ nella memoria di un calcolatore. Suggerisce infatti un metodo immediato per ridurre
  307. (circa) di un fattore $\frac{n}{k}$ lo spazio occupato. \`E infatti sufficiente salvare le prime $k$
  308. colonne di $U$, le prime $k$ righe di $A$ e i primi $k$ valori sulla diagonale di $\Sigma$.
  309. \end{os}
  310. Una domanda naturale a questo punto è: ``Quanto differiscono le due matrici?''. Osserviamo che
  311. \[
  312. ||A - B||_2 = ||U\Sigma \trasp V - U \tilde \Sigma \trasp V||_2 = ||U[\Sigma - \tilde \Sigma] \trasp V||_2
  313. = \sigma_{k+1}
  314. \]
  315. Se $\sigma_{k+1}$ è sufficientemente piccolo abbiamo quindi un piccolo errore. Questo, di fatto, si
  316. verifica in molte applicazioni pratiche dove i $\sigma_i$ piccoli possono rappresentare i disturbi
  317. all'informazione che si intendeva analizzare (come nel caso della trasmissione di segnali).
  318.  
  319. In realtà possiamo dire di più. Sia $B$ una matrice di rango $k$. Sappiamo che
  320. \[
  321. \Dim{\Ker{B}} + \Dim{\imm{B}} = n \qquad \Dim{\Ker{B}} \geq n - k
  322. \]
  323. Considero il sottospazio $S = \Span{V_1,\ldots,V_{k+1}} \subseteq \R^n$. Per una questione di dimensioni
  324. deve esistere un vettore non nullo $z \in S \cap \Ker{B}$, e possiamo supporre $||z||_2 = 1$.
  325. Osserviamo che
  326. \[
  327. || (A - B)z ||_2 = ||Az||_2 = ||\sum_{i=0}^{k+1} \sigma_i U_i \trasp V_i z||_2 \geq
  328. || \sigma_{k+1} U_i \trasp V_i z ||_2 = \sigma_{k+1}
  329. \]
  330. In particolare abbiamo mostrato che la nostra approssimazione era la migliore possibile, nel senso che
  331. per ogni altra approssimazione ha una distanza maggiore o uguale da $A$ (secondo la norma 2).
  332.  
  333. \subsection{Metodi di calcolo, errori e costo computazionale}
  334. Abbiamo visto che la \svd\ è una sorta di decomposizione spettrale della matrice $A$. Più precisamente
  335. i $\sigma_i$ che si trovano sulla diagonale di $\Sigma$ sono le radici degli autovalori di $\trasp AA$
  336. (che è semidefinita positiva). \\
  337. Un primo modo per affrontare il calcolo della fattorizzazione potrebbe quindi essere
  338. \begin{enumerate}[(a)]
  339. \item Calcolare $\trasp AA$;
  340. \item Determinare la decomposizione spettrale di $\trasp AA = V D \trasp V$;
  341. \item Calcolare la fattorizzazione $QR$ di $AV = UR$;
  342. \end{enumerate}
  343. Osserviamo ora che $\trasp R\trasp U U R = \trasp RR = \trasp V \trasp AA V = D$; $\trasp RR$ è quindi
  344. la fattorizzazione di Cholesky di $D$. Si può mostrare che la diagonalità di $D$ implica che anche $R$ sia
  345. diagonale e quindi $A = UR\trasp V$ è quasi la \svd\ di $A$. In effetti non abbiamo ancora considerato
  346. il problema dell'ordine (vorremmo $\sigma_i \geq \sigma_j$ se $i \geq j$).
  347. Questo problema sarebbe risolto nel momento in cui la colonna di $AV$ di norma maggiore fosse in prima posizione
  348. (e conseguentemente le altre in ordine di norma discendente).
  349. Possiamo quindi introdurre una opportuna matrice di permutazione $P$ e riscrivere la relazione
  350. nel seguente modo
  351. \[
  352. AVP = U\Sigma
  353. \]
  354. In questo modo la prima colonna di $AVP$ è quella di norma maggiore e quindi i $\sigma_i$ saranno
  355. in ordine decrescente.
  356.  
  357. \begin{os}
  358. Per eseguire il procedimento sopra descritto abbiamo bisogno di conoscere la matrice $\trasp AA$, che tipicamente
  359. può essere grande (ad esempio se $m \gg n$). Calcolare la sua decomposizione spettrale potrebbe introdurre
  360. molti problemi di stabilità, e occupare molto spazio in memoria. Sarebbe quindi interessante trovare un
  361. metodo per avere una decomposizione spettrale di $\trasp AA$ senza doverla effettivamente calcolare.
  362. \end{os}
  363.  
  364. Supponiamo ora di avere $U,V$ matrici ortogonali e $B$ matrice bidiagonale tali che
  365. \[
  366. A = UB\trasp V
  367. \]
  368. allora si ha che
  369. \[
  370. \trasp AA = \trasp V \trasp B B V
  371. \]
  372. e $\trasp B B$ è una matrice tridiagonale; avere la decomposizione spettrale di $\trasp B B$ è quindi equivalente
  373. ad avere la decomposizione spettrale di $\trasp A A$!
  374.  
  375. Sappiamo inoltre che calcolare la decomposizione spettrale di una matrice tridiagonale simmetrica è particolarmente
  376. semplice.
  377.  
  378. L'unico pezzo che manca è mostrare come è possibile calcolare le matrici $U$ e $V$ che bidiagonalizzano $A$.
  379. Possiamo usare le matrici di Householder in questo modo:
  380. \begin{enumerate}[(a)]
  381. \item Calcoliamo $P_1$ tale che $P_1 Ae_1 = \alpha e_1$, e quindi $P_1A$ abbia la prima colonna
  382. nulla ad eccezione dell'elemento in posizione $(1,1)$;
  383. \item Calcoliamo $Q_1$ tale che $P_1 A Q_1$ abbia la prima riga nulla ad esclusione dei primi
  384. due elementi (in posizione $(1,1)$ e $(1,2)$);
  385. \item Iteriamo il procedimento sopra lavorando sulla seconda colonna e sulla seconda riga, e poi di seguito
  386. per tutte le righe e colonne;
  387. \end{enumerate}
  388. Si verifica che il procedimento sopra porta effettivamente ad una matrice bidiagonale e che $\trasp BB$
  389. è tridiagonale simmetrica.
  390.  
  391. Analizziamo ora il costo computazionale di questo procedimento. Il primo passo consiste nel calcolo delle
  392. due matrici ortogonali che bidiagonalizzano $A$. Il costo di ogni passo del procedimento è il calcolo
  393. di due matrici di Householder e quindi $O(n)$. Viene ripetuto $n$ volte fino ado ottenere un
  394. costo complessivo di $O(n^2)$. Diventa poi $O(mn^2)$ perchè bisogna effettuare le moltiplicazioni.
  395.  
  396. Analogamente il costo del calcolo degli autovalori con il metodo \qr\ è $O(n^2)$; il metodo richiederebbe
  397. però di calcolare la matrice $\trasp BB$ che potrebbe essere piuttosto grande. In realtà esiste un metodo
  398. (che qui non esponiamo) per applicare il metodo \qr\ a $\trasp BB$ senza calcolarla esplicitamente ma
  399. conoscendo solamente $B$, lasciando il costo totale a $O(mn^2)$.
  400.  
  401. Un problema da affrontare, infine, è quello dell'errore. Il teorema di Bauer-Fike (Teorema~\ref{te:BauerFike}) ci
  402. assicura infatti che il problema del calcolo degli autovalori di una matrice simmetrica è ben condizionato,
  403. ma assicurandoci solo una maggiorazione dell'errore assoluto, e non una dell'errore relativo. Sfortunatamente
  404. nelle applicazioni si è spesso interessati a calcolare con precisione i valori singolari piccoli e questo
  405. potrebbe essere un problema. Negli ultimi anni sono state sviluppate tecniche per il calcolo della \svd\ che
  406. hanno tenuto conto di questo problema ma non sono ancora state implementate in programmi come \matlab\ o librerie
  407. come \lapack.
  408.  
  409.  
  410.