Matrixrekening: Matrices in R

Theorie Basiseigenschappen en creatie van matrices

Matrices zijn in R 2-dimensionale arrays. Je kunt denken aan een opbouw van rijvectoren van gelijke lengte die onder elkaar gezet worden. Je kunt de afmeting van een matrix specificeren met de dim functie.

> A <- 1:6         # 1-dimensionale array met 6 elementen
> dim(A) <- c(2,3) # converteer naar 2-dimensionale array met 2 rijen en 2 kolommmen
> A;               # toon als 2x3 matrix
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> B <- matrix( 1:6, ncol=2, by) # alternatieve definitie van een matrix
> B
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
> dim(B)   # B is een 3x2 kolomsgewijs opgevulde matrix
[1] 3 2
dimension =
     2     3
> C <- matrix( 1:6, ncol=2, byrow=TRUE); # C is een 3x2 rijgewijs opgevulde matrix
> C
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6		

\(\phantom{x}\)

Andere veelgebruikte methoden om arrays te maken illustreren we aan de hand van voorbeelden.

Constructie van een matrix via herhalingslussen

> A <- matrix(0, nrow=3, ncol=4); A  # 3x4 nulmatrix
     [,1] [,2] [,3] [,4]
[1,]    0    0    0    0
[2,]    0    0    0    0
[3,]    0    0    0    0
> for (i in 1:3) { 
    for (j in 1:4) { 
      A[i,j] <- i^j # definitie van een matrixelement
    }
  }   
> A [,1] [,2] [,3] [,4] [1,] 1 1 1 1 [2,] 2 4 8 16 [3,] 3 9 27 81

Constructie van een matrix via een indexeringsfunctie

> A <- outer(1:3, 1:4, FUN=function(i,j){i^j}); A
     [,1] [,2] [,3] [,4]
[1,]    1    1    1    1
[2,]    2    4    8   16
[3,]    3    9   27   81

Constructie van een speciale matrix Er bestaan ook speciale functies om matrices en vectoren met enen en nullen te creëren en om diagonaalmatrices te maken, namelijkdiag:

> Z <- matrix(0, 2, 4); Z   # 2x4 nulmatrix 
     [,1] [,2] [,3] [,4]
[1,]    0    0    0    0
[2,]    0    0    0    0
> I <- diag(3); I           # 3x3 identiteitsmatrix 
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    0
[3,]    0    0    1
> J <- matrix(1, 3, 3); J   # 3x3 matrix met alle elements gelijk aan 1
     [,1] [,2] [,3]
[1,]    1    1    1
[2,]    1    1    1
[3,]    1    1    1
> D <- diag(1:3); D         # diagonaalmatrix
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    2    0
[3,]    0    0    3

Constructie van een matrix door stapeling Arrays kunnen ook horizontaal en verticaal gestapeld worden:

> A
     [,1] [,2] [,3] [,4]
[1,]    1    1    1    1
[2,]    2    4    8   16
[3,]    3    9   27   81
> I
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    0
[3,]    0    0    1
> AI <- cbind(A,I); AI       # horizontale stapeling van matrices
     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    1    1    1    1    1    0    0
[2,]    2    4    8   16    0    1    0
[3,]    3    9   27   81    0    0    1
> ZAZ <- rbind(Z,A,Z); ZAZ   # verticale stapeling van matrices
     [,1] [,2] [,3] [,4]
[1,]    0    0    0    0
[2,]    0    0    0    0
[3,]    1    1    1    1
[4,]    2    4    8   16
[5,]    3    9   27   81
[6,]    0    0    0    0
[7,]    0    0    0    0

Constructie van een willekeurige matrix Je kunt ook willekeurig gegenereerde matrices creëren.

> # random 3x2 matrix met getallen tussen 0 en 1
> matrix(runif(6), nrow=3) [,1] [,2] [1,] 0.4605161 0.03090664 [2,] 0.9818785 0.82348871 [3,] 0.4128821 0.65200366
> # random 2x2 matrix via de standaardnormale verdeling > matrix(rnorm(4), nrow=2) [,1] [,2] [1,] -0.3502606 0.8576934 [2,] -1.6379942 0.9516872
> # random 2x3 matrix met gehele getallen in segment [5, 8] > matrix(sample(5:8, 6, replace=TRUE), nrow=2) [,1] [,2] [,3] [1,] 8 5 7 [2,] 7 6 5
About us ⋅ Help ⋅ Privacy ⋅ Terms and conditions
Copyright © 2023 SOWISO