next up previous


Informática. Exame de Prácticas
Setembro, 2003

Escribir un programa que calcule a matriz de covarianza $ \Sigma$ dun conxunto de N vectores d-dimensionais {$ \bf x_{i}^{}$, i = 1,..., N}, sendo $ \bf x_{i}^{}$ = (xi1,..., xid). O elemento ij da matriz de covarianza $ \Sigma$ (cadrada de orde d) defínese como:

$\displaystyle \Sigma_{{ij}}^{}$ = $\displaystyle {\frac{{1}}{{N}}}$$\displaystyle \sum_{{k = 1}}^{N}$(xki - $\displaystyle \langle$xi$\displaystyle \rangle$)(xkj - $\displaystyle \langle$xj$\displaystyle \rangle$) (1)

Onde $ \langle$xi$ \rangle$ é o valor medio da compoñente i dos vectores $ \bf x_{k}^{}$:

$\displaystyle \langle$xi$\displaystyle \rangle$ = $\displaystyle {\frac{{1}}{{N}}}$$\displaystyle \sum_{{k = 1}}^{N}$xki (2)

O programa debe ler por teclado o nome do arquivo onde se atopan os vectores, o número N de vectores e a súa dimensión d. Despois desto, debe chamar a un subprograma onde abra o arquivo e lea os vectores (cada vector está almacenado nunha liña distinta no arquivo). Logo, debe chamar a outro subprograma que calcule as medias $ \langle$xi$ \rangle$, i = 1,..., d. Por último, debe chamar a un subprograma que calcule cada elemento $ \Sigma_{{ij}}^{}$, i, j = 1,..., d, mediante a fórmula [*]. Finalmente, debe chamar a outro subprograma que imprima a matriz $ \Sigma$ (fila a fila).

NOTA: Empregar o arquivo vectores.dat que se proporciona (N = 12, d = 5).


next up previous
© 2006, Dr. Manuel Fernández Delgado, Universidad de Santiago de Compostela, Departamento de Electrónica e Computación