Werken met R bij wiskunde: Lineaire algebra in R
Stelsels oplossen via solve en rref
R heeft voldoende ingebouwde faciliteiten om stelsels lineaire vergelijkingen numeriek op te lossen. We illustreren ze aan de hand van het stelsel met één oplossing, namelijk
We beginnen met het stelsel van vergelijkingen in te toetsen in een R sessie via bijpassende matrixvorm
> A <- matrix(c(1, 2, 3,
+ 0, 1, 2,
+ 3, 1, 1), nrow=3, byrow=TRUE)
> A
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 0 1 2
[3,] 3 1 1
> b <- matrix(c(2, 1, 3), nrow=3); b
[,1]
[1,] 2
[2,] 1
[3,] 3
We kunnen nu solve
gebruiken om de vector te vinden zodanig dat
> v <- solve(A,b); v
[,1]
[1,] 1
[2,] -1
[3,] 1
Voordeel van de matrixvorm is dat je de theorie voor het oplossen van vergelijkingen beter in de hand hebt. Zo kun je bijvoorbeeld Gauss-eliminatie toepassen om het stelsel op te lossen. De naam van de functie rref
uit het pracma
R pakket is een acroniem voor reduced row echelon form, iets wat wij de (rij)gereduceerde trapvorm noemen.
> Ab <- cbind(A,b); Ab # de gerande matrix
[,1] [,2] [,3] [,4]
[1,] 1 2 3 2
[2,] 0 1 2 1
[3,] 3 1 1 3
> library(pracma)
> M <- rref(Ab); M # berekening van de gereduceerde trapvorm
[,1] [,2] [,3] [,4]
[1,] 1 0 0 1
[2,] 0 1 0 -1
[3,] 0 0 1 1 > M(,4) # selectie van de vierde kolom
[1] 1 -1 1
Ontgrendel volledige toegang