Kód
knitr::opts_chunk$set(
echo = TRUE,
message = FALSE,
warning = FALSE
)Tento dokument demonštruje vybrané základné operácie v jazyku R na príkladoch z oblasti dátovej analýzy pre udržateľnú energetiku.
Obnoviteľné zdroje energie, ako sú solárne, veterné alebo vodné elektrárne, produkujú veľké množstvo dát. Pomocou programovacieho jazyka R môžeme tieto údaje spracovávať, porovnávať a analyzovať.
V dokumente budem pracovať s:
Na miestach označených ako Malé cvičenie budem demonštrovať použitie jednotlivých príkazov na vlastných príkladoch z oblasti energetiky.
V nasledujúcom chunke nastavím základné možnosti zobrazovania R kódu.
knitr::opts_chunk$set(
echo = TRUE,
message = FALSE,
warning = FALSE
)Skalár predstavuje jednu numerickú hodnotu. V oblasti energetiky môže ísť napríklad o množstvo vyrobenej alebo spotrebovanej energie.
Predpokladajme, že solárna elektráreň vyrobila počas jedného dňa 420 kWh elektrickej energie a spotreba bola 350 kWh.
produkcia <- 420
spotreba <- 350
produkcia[1] 420
spotreba[1] 350
S týmito hodnotami môžeme vykonávať základné aritmetické operácie.
sucet <- produkcia + spotreba
rozdiel <- produkcia - spotreba
podiel <- produkcia / spotreba
dvojnasobna_produkcia <- produkcia * 2
mocnina <- produkcia ^ 2
sucet[1] 770
rozdiel[1] 70
podiel[1] 1.2
dvojnasobna_produkcia[1] 840
mocnina[1] 176400
Rozdiel medzi produkciou a spotrebou nám ukazuje energetický prebytok alebo nedostatok.
energeticka_bilancia <- produkcia - spotreba
energeticka_bilancia[1] 70
Ak je výsledok kladný, vyrobilo sa viac energie, ako sa spotrebovalo.
Pri dátovej analýze môžeme potrebovať hodnoty zaokrúhliť.
priemerna_produkcia <- 387.68
round(priemerna_produkcia)[1] 388
ceiling(priemerna_produkcia)[1] 388
floor(priemerna_produkcia)[1] 387
Funkcia round() zaokrúhli číslo na najbližšie celé číslo, ceiling() smerom nahor a floor() smerom nadol.
Solárna elektráreň vyrobila za jeden deň 485 kWh energie. Spotreba bola 370 kWh. Vypočítajte energetický prebytok a percentuálny pomer produkcie k spotrebe.
Najskôr vytvorím potrebné premenné.
denna_produkcia <- 485
denna_spotreba <- 370Energetický prebytok vypočítam ako rozdiel produkcie a spotreby.
prebytok <- denna_produkcia - denna_spotreba
prebytok[1] 115
Následne vypočítam pomer produkcie k spotrebe v percentách.
pomer <- denna_produkcia / denna_spotreba * 100
round(pomer, 2)[1] 131.08
V dátach sa okrem numerických hodnôt často nachádzajú aj textové informácie. V energetike môže ísť napríklad o názov elektrárne, typ zdroja alebo lokalitu.
zdroj <- "Solarna energia"
lokalita <- "Bratislava"
zdroj[1] "Solarna energia"
lokalita[1] "Bratislava"
Textové premenné môžeme spájať pomocou funkcie paste().
elektraren <- paste(zdroj, lokalita)
elektraren[1] "Solarna energia Bratislava"
Pomocou paste0() spojíme text bez automatickej medzery.
oznacenie <- paste0("SOLAR_", "BA")
oznacenie[1] "SOLAR_BA"
Môžeme použiť aj vlastný oddeľovač.
zdroje <- paste("Solarna", "Veterna", "Vodna", sep = ", ")
zdroje[1] "Solarna, Veterna, Vodna"
Funkcia nchar() zistí počet znakov v textovej premennej.
nazov <- "Obnovitelna energia"
nchar(nazov)[1] 19
Funkcia substr() umožňuje vybrať určitú časť textu.
substr(nazov, 1, 11)[1] "Obnovitelna"
Vytvorte textové premenné obsahujúce typ elektrárne a mesto. Následne ich spojte do jedného názvu.
typ_elektrarne <- "Veterna elektraren"
mesto <- "Trnava"
nazov_elektrarne <- paste(typ_elektrarne, "-", mesto)
nazov_elektrarne[1] "Veterna elektraren - Trnava"
Zistím aj počet znakov výsledného názvu.
nchar(nazov_elektrarne)[1] 27
Logické hodnoty môžu nadobúdať hodnotu TRUE alebo FALSE.
solarna <- TRUE
fosilna <- FALSE
!solarna[1] FALSE
solarna & fosilna[1] FALSE
solarna | fosilna[1] TRUE
xor(solarna, fosilna)[1] TRUE
Operátor ! predstavuje negáciu, & znamená AND a | znamená OR.
Logické podmienky môžeme využiť napríklad pri porovnávaní produkcie a spotreby energie.
produkcia <- 500
spotreba <- 420
produkcia > spotreba[1] TRUE
produkcia == spotreba[1] FALSE
produkcia != spotreba[1] TRUE
Výsledkom každého porovnania je hodnota TRUE alebo FALSE.
Predpokladajme, že elektráreň je považovaná za dostatočne výkonnú, ak produkuje viac ako 400 kWh, ale menej ako 700 kWh denne.
produkcia <- 520
produkcia > 400 & produkcia < 700[1] TRUE
Môžeme vytvoriť aj inú podmienku.
produkcia < 200 | produkcia > 800[1] FALSE
Viacero logických hodnôt môžeme uložiť do jedného vektora.
splneny_limit <- c(TRUE, TRUE, FALSE, TRUE, FALSE)
splneny_limit[1] TRUE TRUE FALSE TRUE FALSE
Solárna elektráreň vyrobila 460 kWh energie a denná spotreba bola 410 kWh. Zistite pomocou logickej podmienky, či produkcia dokázala pokryť spotrebu.
solarna_produkcia <- 460
denna_spotreba <- 410
solarna_produkcia >= denna_spotreba[1] TRUE
Výsledok TRUE znamená, že produkcia bola dostatočná na pokrytie spotreby.
Pridám aj podmienku, podľa ktorej musí byť produkcia aspoň 400 kWh a zároveň musí byť vyššia ako spotreba.
solarna_produkcia >= 400 & solarna_produkcia >= denna_spotreba[1] TRUE
Vektory umožňujú uložiť viacero hodnôt. Môžeme ich použiť napríklad na uloženie produkcie energie počas viacerých dní.
solarna_produkcia <- c(180, 220, 310, 420, 380, 270, 450)
solarna_produkcia[1] 180 220 310 420 380 270 450
Postupnosť čísel môžeme vytvoriť pomocou operátora :.
dni <- 1:7
dni[1] 1 2 3 4 5 6 7
Funkcia seq() umožňuje vytvoriť postupnosť s určitým krokom.
vykon <- seq(from = 100, to = 500, by = 50)
vykon[1] 100 150 200 250 300 350 400 450 500
Funkcia rep() umožňuje opakovať rovnakú hodnotu.
minimalny_limit <- rep(250, times = 7)
minimalny_limit[1] 250 250 250 250 250 250 250
Môžeme generovať aj náhodné hodnoty.
nahodne_hodnoty <- runif(5)
nahodne_hodnoty[1] 0.56813450 0.94671199 0.96398090 0.04475958 0.80191122
Predpokladajme, že máme dennú produkciu solárnej elektrárne.
produkcia <- c(200, 250, 300, 350, 400)
produkcia[1] 200 250 300 350 400
Každú hodnotu môžeme napríklad zvýšiť o 20 kWh.
produkcia + 20[1] 220 270 320 370 420
Alebo môžeme všetky hodnoty zvýšiť o 10 %.
produkcia * 1.10[1] 220 275 330 385 440
Hodnoty môžeme tiež deliť.
produkcia / 2[1] 100 125 150 175 200
Môžeme porovnať napríklad produkciu a spotrebu počas piatich dní.
produkcia <- c(300, 350, 420, 380, 450)
spotreba <- c(320, 330, 390, 400, 410)
produkcia[1] 300 350 420 380 450
spotreba[1] 320 330 390 400 410
Rozdiel produkcie a spotreby:
bilancia <- produkcia - spotreba
bilancia[1] -20 20 30 -20 40
Kladná hodnota predstavuje prebytok a záporná hodnota nedostatok energie.
Počet sledovaných dní môžeme zistiť pomocou length().
length(produkcia)[1] 5
Predpokladajme, že máme produkciu počas siedmich dní.
vykon_dni <- c(250, 410, 380, 520, 290, 610, 450)
vykon_dni[1] 250 410 380 520 290 610 450
Prvý deň:
vykon_dni[1][1] 250
Druhý až štvrtý deň:
vykon_dni[2:4][1] 410 380 520
Všetky dni s produkciou vyššou ako 400 kWh:
vykon_dni[vykon_dni > 400][1] 410 520 610 450
Pozície týchto dní:
which(vykon_dni > 400)[1] 2 4 6 7
Pri zbere reálnych dát sa môže stať, že niektoré údaje chýbajú.
merania <- c(320, 350, NA, 410, 390, NA, 450)
merania[1] 320 350 NA 410 390 NA 450
Pomocou is.na() zistíme, ktoré hodnoty chýbajú.
is.na(merania)[1] FALSE FALSE TRUE FALSE FALSE TRUE FALSE
Priemer bez odstránenia chýbajúcich hodnôt:
mean(merania)[1] NA
Priemer po odstránení chýbajúcich hodnôt:
mean(merania, na.rm = TRUE)[1] 384
Predpokladajme, že máme produkciu solárnej elektrárne počas desiatich dní.
produkcia_10_dni <- c(310, 340, 290, 410, 450, 380, 360, 470, 420, 390)
produkcia_10_dni [1] 310 340 290 410 450 380 360 470 420 390
Vypočítame priemernú produkciu.
mean(produkcia_10_dni)[1] 382
Štandardnú odchýlku:
sd(produkcia_10_dni)[1] 58.2714
Maximálnu produkciu:
max(produkcia_10_dni)[1] 470
Minimálnu produkciu:
min(produkcia_10_dni)[1] 290
Základný štatistický prehľad:
summary(produkcia_10_dni) Min. 1st Qu. Median Mean 3rd Qu. Max.
290.0 345.0 385.0 382.0 417.5 470.0
Hodnoty môžeme zoradiť od najnižšej po najvyššiu.
sort(produkcia_10_dni) [1] 290 310 340 360 380 390 410 420 450 470
Alebo od najvyššej po najnižšiu.
sort(produkcia_10_dni, decreasing = TRUE) [1] 470 450 420 410 390 380 360 340 310 290
Máme údaje o dennej produkcii solárnej elektrárne počas desiatich dní. Vypočítajte celkovú a priemernú produkciu a vyberte dni, počas ktorých bola produkcia vyššia ako 350 kWh.
solarna_10_dni <- c(280, 320, 370, 410, 290, 450, 390, 340, 430, 360)
solarna_10_dni [1] 280 320 370 410 290 450 390 340 430 360
Celková produkcia:
sum(solarna_10_dni)[1] 3640
Priemerná produkcia:
mean(solarna_10_dni)[1] 364
Vyberiem hodnoty vyššie ako 350 kWh.
vysoka_produkcia <- solarna_10_dni[solarna_10_dni > 350]
vysoka_produkcia[1] 370 410 450 390 430 360
Zistím aj dni, počas ktorých bola táto podmienka splnená.
which(solarna_10_dni > 350)[1] 3 4 6 7 9 10
Operátor %% môžeme použiť na zistenie zvyšku po delení.
Ako jednoduchý príklad vytvorím čísla jednotlivých dní.
dni <- 1:14
dni [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Vyberiem párne dni.
parne_dni <- dni[dni %% 2 == 0]
parne_dni[1] 2 4 6 8 10 12 14
Vyberiem nepárne dni.
neparne_dni <- dni[dni %% 2 != 0]
neparne_dni[1] 1 3 5 7 9 11 13
Matice môžeme v energetike použiť napríklad na uloženie údajov o viacerých typoch obnoviteľných zdrojov v rôznych obdobiach.
Vytvorím maticu, v ktorej riadky predstavujú solárnu, veternú a vodnú energiu a stĺpce predstavujú štyri obdobia.
energia <- matrix(c(
150, 260, 420, 290,
310, 350, 370, 330,
500, 520, 490, 510
), nrow = 3, byrow = TRUE)
energia [,1] [,2] [,3] [,4]
[1,] 150 260 420 290
[2,] 310 350 370 330
[3,] 500 520 490 510
Hodnoty sú zadané po riadkoch pomocou byrow = TRUE.
Rozmery matice zistíme pomocou funkcie dim().
dim(energia)[1] 3 4
Počet riadkov:
nrow(energia)[1] 3
Počet stĺpcov:
ncol(energia)[1] 4
Môžeme vybrať konkrétnu hodnotu. Napríklad hodnotu v prvom riadku a druhom stĺpci.
energia[1, 2][1] 260
Celý prvý riadok predstavujúci solárnu energiu:
energia[1, ][1] 150 260 420 290
Celý druhý stĺpec:
energia[, 2][1] 260 350 520
Vybrať môžeme aj časť matice.
energia[1:2, 2:3] [,1] [,2]
[1,] 260 420
[2,] 350 370
Vytvorím dve jednoduché matice predstavujúce produkciu energie v dvoch sledovaných obdobiach.
A <- matrix(c(
200, 250,
300, 350
), nrow = 2, byrow = TRUE)
B <- matrix(c(
50, 70,
80, 100
), nrow = 2, byrow = TRUE)
A [,1] [,2]
[1,] 200 250
[2,] 300 350
B [,1] [,2]
[1,] 50 70
[2,] 80 100
Sčítanie matíc:
A + B [,1] [,2]
[1,] 250 320
[2,] 380 450
Násobenie zodpovedajúcich prvkov:
A * B [,1] [,2]
[1,] 10000 17500
[2,] 24000 35000
Maticové násobenie:
A %*% B [,1] [,2]
[1,] 30000 39000
[2,] 43000 56000
Transpozícia matice:
t(A) [,1] [,2]
[1,] 200 300
[2,] 250 350
Determinant:
det(A)[1] -5000
Inverzná matica:
solve(A) [,1] [,2]
[1,] -0.07 0.05
[2,] 0.06 -0.04
Predpokladajme, že máme samostatný vektor solárnej a veternej produkcie.
solarna <- c(300, 350, 420)
veterna <- c(250, 310, 380)
C <- cbind(solarna, veterna)
C solarna veterna
[1,] 300 250
[2,] 350 310
[3,] 420 380
Pomocou rbind() ich môžeme spojiť po riadkoch.
D <- rbind(solarna, veterna)
D [,1] [,2] [,3]
solarna 300 350 420
veterna 250 310 380
Použijem maticu produkcie troch obnoviteľných zdrojov počas štyroch období.
produkcia_matica <- matrix(c(
200, 350, 500, 300,
280, 320, 400, 350,
450, 470, 460, 480
), nrow = 3, byrow = TRUE)
produkcia_matica [,1] [,2] [,3] [,4]
[1,] 200 350 500 300
[2,] 280 320 400 350
[3,] 450 470 460 480
Celkovú produkciu každého zdroja vypočítam pomocou:
apply(produkcia_matica, 1, sum)[1] 1350 1350 1860
Priemernú produkciu v jednotlivých obdobiach:
apply(produkcia_matica, 2, mean)[1] 310.0000 380.0000 453.3333 376.6667
Môžeme použiť aj rowSums() a colSums().
rowSums(produkcia_matica)[1] 1350 1350 1860
colSums(produkcia_matica)[1] 930 1140 1360 1130
Máme údaje o produkcii troch obnoviteľných zdrojov energie počas štyroch štvrťrokov. Riadky predstavujú solárnu, veternú a vodnú energiu. Vypočítajte celkovú produkciu každého zdroja, priemernú produkciu v jednotlivých štvrťrokoch a súčin matíc \(M^T M\).
Najskôr vytvorím maticu.
M2 <- matrix(c(
180, 350, 620, 300,
320, 380, 410, 360,
520, 540, 510, 530
), nrow = 3, byrow = TRUE)
M2 [,1] [,2] [,3] [,4]
[1,] 180 350 620 300
[2,] 320 380 410 360
[3,] 520 540 510 530
Celková produkcia jednotlivých zdrojov:
rowSums(M2)[1] 1450 1470 2100
Priemerná produkcia v jednotlivých štvrťrokoch:
apply(M2, 2, mean)[1] 340.0000 423.3333 513.3333 396.6667
Transponovaná matica:
t(M2) [,1] [,2] [,3]
[1,] 180 320 520
[2,] 350 380 540
[3,] 620 410 510
[4,] 300 360 530
Súčin matíc \(M^T M\):
t(M2) %*% M2 [,1] [,2] [,3] [,4]
[1,] 405200 465400 508000 444800
[2,] 465400 558500 648200 528000
[3,] 508000 648200 812600 603900
[4,] 444800 528000 603900 500500
Nech \(\mathbf A\) je štvorcová matica. Vlastné číslo \(\lambda\) a príslušný vlastný vektor \(\mathbf v\) spĺňajú vzťah
\[ \mathbf A \mathbf v = \lambda \mathbf v. \]
Vlastné čísla a vlastné vektory sa využívajú aj pri dátovej analýze. Môžu byť užitočné napríklad pri analýze vzťahov medzi viacerými premennými alebo pri práci s variančno-kovariančnými maticami.
Použijem jednoduchú symetrickú maticu.
\[ \mathbf A = \begin{pmatrix} 4 & 2 \\ 2 & 4 \end{pmatrix} \]
V R ju vytvorím nasledovne:
A_eig <- matrix(c(
4, 2,
2, 4
), nrow = 2, byrow = TRUE)
A_eig [,1] [,2]
[1,] 4 2
[2,] 2 4
Matica je symetrická, pretože platí \(A^T=A\).
t(A_eig) [,1] [,2]
[1,] 4 2
[2,] 2 4
Na výpočet vlastných čísel a vlastných vektorov použijem funkciu eigen().
eig_A <- eigen(A_eig, symmetric = TRUE)
eig_Aeigen() decomposition
$values
[1] 6 2
$vectors
[,1] [,2]
[1,] 0.7071068 -0.7071068
[2,] 0.7071068 0.7071068
Výsledok môžeme rozdeliť na vlastné čísla a vlastné vektory.
lambda_A <- eig_A$values
V_A <- eig_A$vectors
lambda_A[1] 6 2
V_A [,1] [,2]
[1,] 0.7071068 -0.7071068
[2,] 0.7071068 0.7071068
Vlastné čísla získame pomocou:
eig_A$values[1] 6 2
Vlastné vektory získame pomocou:
eig_A$vectors [,1] [,2]
[1,] 0.7071068 -0.7071068
[2,] 0.7071068 0.7071068
Prvé vlastné číslo:
eig_A$values[1][1] 6
Prvý vlastný vektor:
eig_A$vectors[, 1][1] 0.7071068 0.7071068
Ak potrebujeme iba vlastné čísla, môžeme použiť argument only.values = TRUE.
eigen(A_eig, symmetric = TRUE, only.values = TRUE)$values[1] 6 2
Vyberiem prvé vlastné číslo a prvý vlastný vektor.
lambda_1 <- lambda_A[1]
v_1 <- V_A[, 1]
lambda_1[1] 6
v_1[1] 0.7071068 0.7071068
Vypočítam ľavú stranu rovnice.
lava_strana <- as.vector(A_eig %*% v_1)
lava_strana[1] 4.242641 4.242641
A pravú stranu:
prava_strana <- lambda_1 * v_1
prava_strana[1] 4.242641 4.242641
Porovnaním výsledkov môžeme overiť vzťah
\[ \mathbf A\mathbf v = \lambda\mathbf v. \]
lava_strana[1] 4.242641 4.242641
prava_strana[1] 4.242641 4.242641
Ako ďalší príklad vytvorím symetrickú maticu 3 × 3, ktorú môžeme chápať ako zjednodušenú maticu vzťahov medzi tromi energetickými premennými.
B_eig <- matrix(c(
5, 1, 0,
1, 5, 0,
0, 0, 3
), nrow = 3, byrow = TRUE)
B_eig [,1] [,2] [,3]
[1,] 5 1 0
[2,] 1 5 0
[3,] 0 0 3
Vypočítam vlastné čísla a vlastné vektory.
eig_B <- eigen(B_eig, symmetric = TRUE)
eig_B$values[1] 6 4 3
eig_B$vectors [,1] [,2] [,3]
[1,] 0.7071068 0.7071068 0
[2,] 0.7071068 -0.7071068 0
[3,] 0.0000000 0.0000000 1
Súčty štvorcov prvkov jednotlivých vlastných vektorov:
colSums(eig_B$vectors^2)[1] 1 1 1
Pre štvorcovú maticu platí, že súčet vlastných čísel sa rovná stope matice.
c(
sucet_vlastnych_cisel = sum(eig_B$values),
stopa_matice = sum(diag(B_eig))
)sucet_vlastnych_cisel stopa_matice
13 13
Súčin vlastných čísel sa rovná determinantu matice.
c(
sucin_vlastnych_cisel = prod(eig_B$values),
determinant = det(B_eig)
)sucin_vlastnych_cisel determinant
72 72
Máme zjednodušenú variančno-kovariančnú maticu troch premenných súvisiacich s obnoviteľnou energetikou. Premenné predstavujú solárnu produkciu, veternú produkciu a spotrebu energie. Vypočítajte vlastné čísla a vlastné vektory tejto matice.
Použijem nasledujúcu symetrickú maticu:
\[ C = \begin{pmatrix} 0.000210 & 0.000015 & 0.000095 \\ 0.000015 & 0.000045 & 0.000070 \\ 0.000095 & 0.000070 & 0.000850 \end{pmatrix} \]
Najskôr vytvorím maticu v R.
C <- matrix(c(
0.000210, 0.000015, 0.000095,
0.000015, 0.000045, 0.000070,
0.000095, 0.000070, 0.000850
), nrow = 3, byrow = TRUE)
C [,1] [,2] [,3]
[1,] 2.1e-04 1.5e-05 9.5e-05
[2,] 1.5e-05 4.5e-05 7.0e-05
[3,] 9.5e-05 7.0e-05 8.5e-04
Skontrolujem jej rozmery.
dim(C)[1] 3 3
Keďže ide o symetrickú maticu, jej transpozícia je rovnaká ako pôvodná matica.
t(C) [,1] [,2] [,3]
[1,] 2.1e-04 1.5e-05 9.5e-05
[2,] 1.5e-05 4.5e-05 7.0e-05
[3,] 9.5e-05 7.0e-05 8.5e-04
Vlastné čísla a vlastné vektory vypočítam pomocou funkcie eigen().
eig_C <- eigen(C, symmetric = TRUE)
eig_Ceigen() decomposition
$values
[1] 8.699886e-04 1.963398e-04 3.867159e-05
$vectors
[,1] [,2] [,3]
[1,] -0.14386288 0.98869358 0.04229041
[2,] -0.08626312 0.03004323 -0.99581930
[3,] -0.98583069 -0.14690953 0.08096569
Samostatne vypíšem vlastné čísla.
vlastne_cisla <- eig_C$values
vlastne_cisla[1] 8.699886e-04 1.963398e-04 3.867159e-05
A vlastné vektory.
vlastne_vektory <- eig_C$vectors
vlastne_vektory [,1] [,2] [,3]
[1,] -0.14386288 0.98869358 0.04229041
[2,] -0.08626312 0.03004323 -0.99581930
[3,] -0.98583069 -0.14690953 0.08096569
Prvé vlastné číslo:
eig_C$values[1][1] 0.0008699886
Prvý vlastný vektor:
eig_C$vectors[, 1][1] -0.14386288 -0.08626312 -0.98583069
Nakoniec overím vzťah medzi prvým vlastným číslom a prvým vlastným vektorom.
lambda_C <- eig_C$values[1]
v_C <- eig_C$vectors[, 1]
lava_strana_C <- as.vector(C %*% v_C)
prava_strana_C <- lambda_C * v_C
lava_strana_C[1] -1.251591e-04 -7.504793e-05 -8.576615e-04
prava_strana_C[1] -1.251591e-04 -7.504793e-05 -8.576615e-04
Rovnaké hodnoty na oboch stranách potvrdzujú vzťah
\[ C\mathbf v = \lambda\mathbf v. \]
V tomto dokumente som demonštroval vybrané základné operácie programovacieho jazyka R na príkladoch z oblasti dátovej analýzy pre udržateľnú energetiku.
Pracoval som s numerickými hodnotami, textovými a logickými premennými, numerickými vektormi a maticami. Na údajoch o produkcii a spotrebe energie som použil základné aritmetické operácie, podmienky, indexovanie a štatistické funkcie.
Pri práci s maticami som analyzoval údaje o viacerých obnoviteľných zdrojoch energie a použil operácie ako transpozícia, maticové násobenie alebo výpočet súčtov a priemerov.
V poslednej časti som pomocou funkcie eigen() vypočítal vlastné čísla a vlastné vektory symetrických matíc a overil vzťah medzi maticou, vlastným číslom a vlastným vektorom.