Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Sommario
Introduzione Alcuni comandi elementari di R Creazione di matrici e vettori e accesso ai loro elementi Alcuni particolari tipi di matrice Operazioni con le matrici La libreria Matrix
Prima di iniziare con lo studio del software R (Version 1.8.1) applicato allAlgebra Lineare, introduciamo alcuni comandi elementari, che verranno costantemente utilizzati negli esempi proposti.
Per una pi completa descrizione del linguaggio R si rimanda al libro Laboratorio di Statistica con R di Iacus e Masarotto, Mc Graw Hill 2003.
Il simbolo # rappresenta in R un indicatore di commento. Negli esempi proposti nei seguenti lucidi, tale simbolo verr usato per inserire dei commenti esplicativi ai comandi via via utilizzati in R
Note introduttive sulluso di R: concatenare tra loro pi elementi tramite la funzione c()
La funzione c() serve a concatenare tra loro gli elementi che vengono forniti come argomento.
> # creazione di un "vettore" y contenente gli elementi 25, -22, 32, 0, 12 > y<-c(25,-22,32,0,12) > y [1] 25 -22 32 0 12
> # NOTA BENE: con il termine generico "vettore, in R non si fa riferimento > # > # alla nozione di vettore usuale dell'algebra lineare ma semplicemente ad una stringa di valori consecutivi
linsieme degli elementi che costituiscono la matrice; il numero di righe che dovr avere la matrice (nrow=numero di righe); il numero di colonne che dovr avere la matrice (ncol=numero di colonne); il modo in cui R dovr riempire la matrice. Per default R riempie la matrice per colonne. Se si vuole forzare il riempimento per riga si deve specificare lopzione byrow=T.
> # creazione della matrice A di dimensione 23 (2 righe per 3 colonne) > A<-matrix(c(1,-4,5,6,0,2),nrow=2,ncol=3) > A [,1] [,2] [,3] [1,] [2,] 1 -4 5 6 0 2
> # creazione della matrice A di dimensione 23 (2 righe per 3 colonne) > # utilizzando l'opzione byrow=T (che permette il riempimento per righe) > A<-matrix(c(1,5,0,-4,6,2),nrow=2,ncol=3,byrow=T) > A [,1] [,2] [,3] [1,] [2,] 1 -4 5 6 0 2
> # creazione del vettore colonna "a" di dimensione 31 (3 righe per 1 colonna) > a<-matrix(c(4,5,2),nrow=3,ncol=1) > a [,1] [1,] [2,] [3,] 4 5 2
> # creazione del vettore riga "a1" di dimensione 13 (1 riga per 3 colonne) > a1<-matrix(c(3,5,2),nrow=1,ncol=3) > a1 [,1] [,2] [,3] [1,] 3 5 2
> ## accesso all'elemento di posto 2,3 (seconda riga, terza colonna) > A[2,3] [1] 2 > ## selezione della prima riga della matrice A > A[1,] [1] 1 5 0 > ## selezione della seconda colonna della matrice A > A[,2] [1] 5 6 > ## selezione della prima e della terza colonna della matrice A > A[,c(1,3)] [,1] [,2] [1,] [2,] 1 -4 0 2
# creazione della matrice diagonale A # con elementi sulla diagonale pari a 1,5,-2,-8 A<-diag(c(1,5,-2,-8)) A [,1] [,2] [,3] [,4] [1,] 1 0 0 0 [2,] 0 5 0 0 [3,] 0 0 -2 0 [4,] 0 0 0 -8 > # estrazione della diagonale della matrice A > diagonale<-diag(A) > diagonale [1] 1 5 -2 -8
> # creazione di una matrice identit di dimensioni 22 > I2<-diag(c(1,1)) > I2 [,1] [,2] [1,] 1 0 [2,] 0 1 > # creazione di una matrice identit di dimensioni 44 > I4<-diag(c(1,1,1,1)) > I4 [,1] [,2] [,3] [,4] [1,] 1 0 0 0 [2,] 0 1 0 0 [3,] 0 0 1 0 [4,] 0 0 0 1
> # dati la matrice A e posto lo scalare k uguale a 2 > A [,1] [,2] [,3] [,4] [,5] [1,] 10 9 8 7 6 [2,] 5 4 3 3 1 [3,] 2 3 4 5 8 [4,] 3 2 7 8 9 [5,] 6 7 8 9 10 > k<-2 > # calcoliamo la matrice C come prodotto dello scalare k per la matrice A, > # attraverso l'operatore "*" > C<-(k*A) > C [,1] [,2] [,3] [,4] [,5] [1,] 20 18 16 14 12 [2,] 10 8 6 6 2 [3,] 4 6 8 10 16 [4,] 6 4 14 16 18 [5,] 12 14 16 18 20
> # date le matrice A e B > A [,1] [,2] [,3] [1,] 0 2 4 [2,] 2 4 6 > B [,1] [,2] [1,] 3 3 [2,] 1 6 [3,] 0 1 > # calcoliamo la matrice C come prodotto delle matrici A e B, > # attraverso l'operatore " %*% " > C<-(A%*%B) > C [,1] [,2] [1,] 2 16 [2,] 10 36
> # dati i vettori "a" e "b" > a [,1] [,2] [,3] [1,] 3 4 5 > b [,1] [1,] 4 [2,] 5 [3,] 6 > # calcoliamo la matrice C come prodotto dei vettori "a" e "b" > # attraverso l'operatore " %*% " > C<-(a%*%b) > C [,1] [1,] 62
> # data la matrice quadrata A > A [,1] [,2] [1,] 1 5 [2,] 2 -3 > # calcoliamo la potenza seconda di A > A%*%A [,1] [,2] [1,] 11 -10 [2,] -4 19 > # calcoliamo la potenza terza di A > A%*%A%*%A [,1] [,2] [1,] -9 85 [2,] 34 -77
> # dato il vettore colonna "a" > a [,1] [1,] [2,] [3,] 4 5 2
> # calcoliamo il vettore trasposto di "a" (che naturalmente sar un vettore riga) > t(a) [,1] [,2] [,3] [1,] 4 5 2
La libreria Matrix