Cvičenie 2: Skaláre, vektory, matice a vlastné čísla v R

Autor

Júlia Kurčíková

Publikované

21. októbra 2026

Úvod

Tento html dokument je stručným cvičením zo základných príkazov v R. Z vytvoreného .Rmd dokumentu som vybrala na ukážku prácu so skalármi, numerickými vektormi, maticami a vlastnými číslami. Na konci každej sekcie je malé cvičenie, ktoré je následne aj vyriešené v jazyku R.

Skaláre

Skalár je jedna číselná hodnota, na rozdiel od vektora, ktorý v sebe nesie aj informáciu o smere. Základné aritmetické operátory na prácu so skalármi sú +, -, *, / a ^; operátor %% určí zvyšok po delení.

vklad <- 1250
rocna_sadzba <- 0.035
roky <- 4

buduca_hodnota <- vklad * (1 + rocna_sadzba)^roky
buduca_hodnota
[1] 1434.404

Malé cvičenie

Na začiatku roka mala firma príjem 2 400 eur. V druhom štvrťroku sa príjem zvýšil o 15 %, v treťom klesol o 8 % a vo štvrtom opäť vzrástol o 10 %. Vypočítajte príjem na konci roka.

prijem_zaciatok <- 2400
prijem_koniec <- prijem_zaciatok * 1.15 * 0.92 * 1.10

round(prijem_koniec, 2)
[1] 2793.12

Numerické vektory

Vektor vytvoríme napríklad pomocou c(), postupnosť celých čísel pomocou : a pravidelnú postupnosť funkciou seq(). Pri výbere prvkov môžeme použiť logickú podmienku v hranatých zátvorkách.

predaje <- c(42, 51, 47, 63, 58, 69)
mesiace <- 1:6
predaje_nad_55 <- predaje[predaje > 55]

mesiace; predaje; predaje_nad_55
[1] 1 2 3 4 5 6
[1] 42 51 47 63 58 69
[1] 63 58 69
mean(predaje)
[1] 55

Malé cvičenie

Vytvorte vektor denných teplôt od -6 do 12 stupňov. Vyberte iba teploty deliteľné tromi a vypočítajte ich súčet. Zistite tiež, koľko takých dní vektor obsahuje.

teploty <- -6:12
nasobky_troch <- teploty[teploty %% 3 == 0]

nasobky_troch
[1] -6 -3  0  3  6  9 12
sum(nasobky_troch)
[1] 21
length(nasobky_troch)
[1] 7

Matice

Matica je usporiadaná tabuľka hodnôt. Funkcia matrix() ju vytvorí, rowSums() a colSums() vypočítajú súčty po riadkoch a stĺpcoch. Transpozíciu vytvorí t() a %*% znamená maticové násobenie.

A <- matrix(c(2, 1,
              1, 3), nrow = 2, byrow = TRUE) # nrow - pocet riadkov
                                             # byrow - hodnoty sa zadaju po riadkoch
B <- matrix(c(4, 0,
              2, 5), nrow = 2, byrow = TRUE)

A + B
     [,1] [,2]
[1,]    6    1
[2,]    3    8
A %*% B
     [,1] [,2]
[1,]   10    5
[2,]   10   15
t(A)
     [,1] [,2]
[1,]    2    1
[2,]    1    3

Malé cvičenie

Do matice \(M\) s tromi riadkami a štyrmi stĺpcami vložte po riadkoch hodnoty 3 až 14. Vypočítajte súčty v jednotlivých stĺpcoch a maticu \(M^T M\).

M <- matrix(3:14, nrow = 3, ncol = 4, byrow = TRUE)
M
     [,1] [,2] [,3] [,4]
[1,]    3    4    5    6
[2,]    7    8    9   10
[3,]   11   12   13   14
colSums(M)
[1] 21 24 27 30
t(M) %*% M
     [,1] [,2] [,3] [,4]
[1,]  179  200  221  242
[2,]  200  224  248  272
[3,]  221  248  275  302
[4,]  242  272  302  332

Vlastné čísla a vlastné vektory

Pre štvorcovú maticu \(A\) sú vlastné číslo \(\lambda\) a vlastný vektor \(v\) (nenulový) také, že platí

\[A v = \lambda v.\]

V R ich vypočíta funkcia eigen(). Objekt vytvorený touto funkciou obsahuje vlastné čísla v položke $values a vlastné vektory v položke $vectors.

A <- matrix(c(3, 1,
              1, 3), nrow = 2, byrow = TRUE)
eigen_A <- eigen(A)

eigen_A$values
[1] 4 2
eigen_A$vectors
          [,1]       [,2]
[1,] 0.7071068 -0.7071068
[2,] 0.7071068  0.7071068

Malé cvičenie

Pre maticu

\[C = \begin{pmatrix} 6 & 2 \\ 2 & 6 \end{pmatrix}\]

určite vlastné čísla a vlastné vektory a určte jej kovariančnú maticu. Následne overte vzťah \(Cv_1 = \lambda_1v_1\) pre prvý vlastný vektor.

C <- matrix(c(6, 2,
              2, 6), nrow = 2, byrow = TRUE)
eigen_C <- eigen(C)

# Vlastné čísla a k nim prislúchajúce vlastné vektory
eigen_C$values
[1] 8 4
eigen_C$vectors
          [,1]       [,2]
[1,] 0.7071068 -0.7071068
[2,] 0.7071068  0.7071068
# Kovariančná matica

cov_matrix <- cov(C)
cov_matrix
     [,1] [,2]
[1,]    8   -8
[2,]   -8    8
# Overenie rovnosti pre prvý vlastný pár
lambda_1 <- eigen_C$values[1]
v_1 <- eigen_C$vectors[, 1]

C %*% v_1
         [,1]
[1,] 5.656854
[2,] 5.656854
lambda_1 * v_1
[1] 5.656854 5.656854

Zhrnutie

V cvičení boli použité skalárne výpočty, tvorba a filtrovanie numerických vektorov, práca s maticami a výpočet vlastných čísel a vektorov.