Rechnen mit Vektoren und Matrizen

Rechnen mit Vektoren

Viele mathematische Operatoren sind komponentenweise definiert

> x <- 1:6 
> x + 2
## [1] 3 4 5 6 7 8
> (y <- rep(10, 6))
## [1] 10 10 10 10 10 10
> x * y
## [1] 10 20 30 40 50 60

Sind die verwendeten Vektoren nicht gleich lang, so wird der kürzere Vektor zyklisch fortgesetzt, wie man hier sieht

> y / c(5,10)
## [1] 2 1 2 1 2 1

Ebenso arbeiten zahlreiche Funktionen komponentenweise auf einem Vektor

> c(exp(1:3), sin(1:3))
## [1]  2.7182818  7.3890561 20.0855369  0.8414710  0.9092974  0.1411200

Andere Funktionen berechnen schnell skalare Zusammenfassungen von Vektoren, z.B.

> max(x)
## [1] 6
> sum(x)
## [1] 21
> mean(x)
## [1] 3.5
Funktion Beschreibung
sum() Summe der Elemente
prod() Produkt der Elemente
max(), min() Maximum, Minimum
union() Vereinigung der Elemente zweier Vektoren
intersect() Schnitt der Elemente zweier Vektoren
rev() Reihenfolge invertieren
sort() Sortieren
order() Reihenfolge im unsortierten Vektor
... ...

Rechnen mit Matrizen

%*% bezeichnet die Matrixmultiplikation. Die Inverse einer Matrix berechnet man mit solve().

> A <- c(1, 2, 2, 1)
> dim(A) <- c(2,2)
> (A_inv <- solve(A))
##            [,1]       [,2]
## [1,] -0.3333333  0.6666667
## [2,]  0.6666667 -0.3333333
> A_inv %*% A
##      [,1] [,2]
## [1,]    1    0
## [2,]    0    1

Die Funktion crossprod() berechnet für die Eingabe x und y den Befehl t(x) %*% y. Handelt es sich bei x und y um eindimensionale Vektoren, so ist dies nichts anderers als das Skalarprodukt dieser Vektoren.

> t(2:4)
##      [,1] [,2] [,3]
## [1,]    2    3    4
> t(2:4) %*% 1:3
##      [,1]
## [1,]   20
> crossprod(2:4, 1:3)
##      [,1]
## [1,]   20

tcrossprod() hingegen berechnet x %*% t(y).

> tcrossprod(2:4, 1:3)
##      [,1] [,2] [,3]
## [1,]    2    4    6
## [2,]    3    6    9
## [3,]    4    8   12
Funktion Beschreibung
t() Transponierte Matrix
det() Determinante
solve() Matrixinverse
solve(A,b) Löst das Gleichungssystem
crossprod(X,Y)
tcrossprod(X,Y)
qr() QR-Zerlegung
eigen() Eigenwerte und -vektoren
%*% Matrixmultiplikation
nrow(), ncol() Zeilen-, Spaltenanzahl