next up previous
Next: Una matrice malcondizionata Up: Matrici di esempio Previous: Una matrice tridiagonale

La matrice di Hilbert

La matrice di Hilbert è notoriamente una matrice fortemente malcondizionata. Essa interviene nei problemi di least squares fitting. Il problema è il seguente: è data una funzione f(x), continua nell'intervallo $x\in[0,1]$. Vogliamo approssimare questa funzione con un polinomio p(x) di grado n-1. Vogliamo scegliere questo polinomio in modo da minimizzare il valore dell'integrale

\begin{displaymath}\int_{0}^1 \left( f(x) - p(x) \right) ^2 dx
,\end{displaymath}

che in qualche modo misura l'errore commesso. Talvolta la funzione f(x) è nota solo in un insieme finito di punti xi, per cui al posto del valore precedente (che non si può calcolare) si usa il valore

\begin{displaymath}\sum_{i=0}^{n-1} \left( f(x_i) - p(x_i) \right) ^2
.\end{displaymath}

In ogni modo il polinomio trovato si chiama ``approssimazione ai minimi quadrati''.

Per risolvere questo problema, indichiamo con ci i coefficienti (da determinare) del polinomio p(x): possiamo ottenere una notazione compatta nel seguente modo

\begin{displaymath}p(x) = \sum_{i=0}^{n-1} c_i x^i =
\left[ \matrix{ c_0 & \cd...
...\cr x \cr \vdots \cr
x^{n-1} } \right]
= {\bf c}^T {\bf z}
,\end{displaymath}

dove ${\bf z}= \left[ \matrix{1 & x & \cdots & x^{n-1}} \right] ^T$, e ${\bf c}$ è il vettore incognito dei coefficienti. Il valore da minimizzare si può quindi riscrivere così:

\begin{displaymath}\int \left( f(x) -{\bf c}^T {\bf z}\right) ^2 dx
=
\int f(x)^...
...dot {\bf c}+ {\bf c}^T \int {\bf z}{\bf z}^T dx
\cdot {\bf c}
.\end{displaymath}

Si presti attenzione al fatto che alcuni elementi di questa espressione sono matrici (ad esempio ${\bf z}{\bf z}^T$) o vettori (${\bf c}$, $f(x){\bf z}^T$), ma il risultato finale è un numero reale positivo. Il minimo si ottiene quando il vettore gradiente è nullo, ovvero quando

\begin{displaymath}\int {\bf z}{\bf z}^T dx \cdot {\bf c}= \int f(x){\bf z}dx
.\end{displaymath}

Questo è un sistema lineare, dove ${\bf c}$ è il vettore dei coefficienti incogniti, mentre le altre componenti sono note. Ad esempio, la i-esima equazione di questo sistema è

\begin{displaymath}\sum_{j=0}^{n-1} \left( \int_0^1 x^{i+j} dx \right) c_j
= \int_0^1 f(x) x^i dx
.\end{displaymath}

Il tutto si può rappresentare nella forma compatta $H{\bf c}= {\bf b}$, dove H è una matrice di Hilbert di ordine n, con elementi

\begin{displaymath}(H)_{i+1,j+1} = \int_0^1 x^{i+j} dx = {1 \over i+j+1}
,\end{displaymath}

ed il vettore di termini noti è

\begin{displaymath}b_{i+1} = \int_0^1 f(x) x^i dx
.\end{displaymath}

Delle matrici di Hilbert sono note diverse proprietà teoriche. Ad esempio si conosce una espressione esplicita per gli elementi dell'inversa:

\begin{displaymath}(H^{-1})_{i+1,j+1} = (-1)^{i+j} { (n+i)(n+j) \over i^2 j^2 (i+j+1)
(n-i-1)(n-j-1)} ,
\end{displaymath}

e si sa che il numero di condizionamento cresce esponenzialmente con l'ordine n. Ad esempio, utilizzando la norma 2, si verifica che $\mu_2(H_4)\approx 1500, \mu_2(H_6)\approx 10^7,
\mu_2(H_{10})\approx 10^{13}$. Nella pratica questo significa che è impossibile risolvere problemi in cui compare la matrice di Hilbert già per n=6 (non si avrebbe nessuna cifra esatta nel risultato, utilizzando i float). In questi casi il problema di approssimazione va riformulato opportunamente.


next up previous
Next: Una matrice malcondizionata Up: Matrici di esempio Previous: Una matrice tridiagonale
Daniele Finocchiaro
1998-11-13