Vlastné čísla, vlastné vektory

Author

Chiara Púčeková

Published

October 1, 2026

Vlastné čísla a vlastné vektory matíc

Pre štvorcovú maticu \(\mathbf A\) platí, že vlastné číslo \(\lambda\) a príslušný vlastný vektor \(\mathbf v \ne \mathbf 0\) spĺňajú vzťah

\[ \mathbf A \mathbf v = \lambda \mathbf v. \] Hodnota \(\lambda\) určuje, ako sa pri násobení maticou mení veľkosť prípadne orientácia vlastného vektora.

Jednoduchý príklad matica: 2x2

Použijeme symetrickú maticu :

\[ \mathbf A = \begin{pmatrix} 4 & 1 \\ 1 & 4 \end{pmatrix}. \] Vlastné čísla vypočítame zo vzťahu

\[ \det(\mathbf A-\lambda \mathbf I)=0. \] Pre našu maticu dostávame

\[ \mathbf A-\lambda \mathbf I = \begin{pmatrix} 4-\lambda & 1 \\ 1 & 4-\lambda \end{pmatrix}. \] Determinant je

\[ \det(\mathbf{A}-\lambda \mathbf{I})=(4-\lambda)^2-1. \] Po úprave dostaneme charakteristickú rovnicu

\[ (4-\lambda)^2-1=\lambda^2-8\lambda+15=(\lambda-5)(\lambda-3)=0. \] Vlastné čísla sú teda

\[ \lambda_1=5, \qquad \lambda_2=3. \]

Výpočet vlastného vektora pre \(\lambda_1=5\)

Vlastný vektor vypočítame zo vzťahu \[ (\mathbf A-\lambda_1\mathbf I)\mathbf h_1=\mathbf 0. \] Po dosadení \(\lambda_1=5\) dostaneme

\[ \begin{pmatrix} -1 & 1 \\ 1 & -1 \end{pmatrix} \begin{pmatrix} h_{11} \\ h_{21} \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \end{pmatrix} \] Získame sústavu rovníc

\[ -h_{11}+h_{21}=0, \] \[ h_{11}-h_{21}=0. \] Z toho vyplýva

\[ h_{11}=h_{21}. \] Pri normalizácii vlastného vektora platí

\[ \sqrt{h_{11}^2+h_{21}^2}=1. \] Dostávame

\[ h_{11}=h_{21}=\sqrt{\frac{1}{2}}. \] Vlastný vektor prislúchajúci vlastnému číslu \(\lambda_1=5\) je teda \[ \mathbf h_1= \begin{pmatrix} \sqrt{\frac{1}{2}}\\ \sqrt{\frac{1}{2}} \end{pmatrix}. \]

Výpočet vlastného vektora pre \(\lambda_2=3\)

Pre druhé vlastné číslo použijeme rovnaký posup

\[ (\mathbf A-\lambda_2\mathbf I)\mathbf h_2=\mathbf 0. \] Po dosadení \(\lambda_2=3\) dostávame

\[ \begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix} \begin{pmatrix} h_{12}\\ h_{22} \end{pmatrix} = \begin{pmatrix} 0\\ 0 \end{pmatrix} \] Dostávame podmienku

\[ h_{12}+h_{22}=0, \]

z ktorej vyplýva

\[ h_{22}=-h_{12}. \]

Pri normalizácii platí

\[ \sqrt{h_{12}^2+h_{22}^2}=1. \]

Môžeme teda zvoliť \[ h_{12}=\sqrt{\frac{1}{2}}, \qquad h_{22}=-\sqrt{\frac{1}{2}}. \]

Vlastný vektor prislúchajúci vlastnému číslu \(\lambda_2=3\) je

\[ \mathbf h_2= \begin{pmatrix} \sqrt{\frac{1}{2}}\\ -\sqrt{\frac{1}{2}} \end{pmatrix}. \]

Overenie pre prvý vlastný vektor

Pre prvý vlastný vektor platí

\[ \mathbf A\mathbf h_1 = \begin{pmatrix} 4&1\\ 1&4 \end{pmatrix} \begin{pmatrix} \sqrt{\frac{1}{2}}\\ \sqrt{\frac{1}{2}} \end{pmatrix} = 5 \begin{pmatrix} \sqrt{\frac{1}{2}}\\ \sqrt{\frac{1}{2}} \end{pmatrix}. \] Teda platí

\[ \mathbf A\mathbf h_1=\lambda_1\mathbf h_1. \]

Matice vlastných čísel a vlastných vektorov

Dostávame dvojice vlastných čísel a vlastných vektorov : \[ \lambda_1=5, \qquad \mathbf h_1= \begin{pmatrix} \sqrt{\frac{1}{2}}\\ \sqrt{\frac{1}{2}} \end{pmatrix} \] \[ \lambda_2=3, \qquad \mathbf h_2= \begin{pmatrix} \sqrt{\frac{1}{2}}\\ -\sqrt{\frac{1}{2}} \end{pmatrix} \] Keďže matica \(\mathbf A\) je symetrická, vlastné vektory prislúchajúce rôznym vlastným číslam sú navzájom ortogonálne. \[ \mathbf h_1^T\mathbf h_2 = \frac{1}{2}-\frac{1}{2} = 0 \]

Výpočet pomocou R funkcie eigen

Code
A_eig <- matrix(c(4,1,
                1,4),
                nrow = 2, byrow = TRUE)
A_eig
     [,1] [,2]
[1,]    4    1
[2,]    1    4

Vypočítame vlastné čísla a vlastné vektory

Code
eig_A <- eigen(A_eig, symmetric = TRUE)

eig_A
eigen() decomposition
$values
[1] 5 3

$vectors
          [,1]       [,2]
[1,] 0.7071068 -0.7071068
[2,] 0.7071068  0.7071068

Výsledok môžeme vypísať aj samostatne

Code
lambda_A <- eig_A$values
V_A <- eig_A$vectors

lambda_A
[1] 5 3
Code
V_A
          [,1]       [,2]
[1,] 0.7071068 -0.7071068
[2,] 0.7071068  0.7071068

Znak “$” umožňuje vybrať konkrétnu časť výsledku, keď chceme vypočítať iba vlastné čísla tak použijeme

Code
eigen(A_eig, symmetric = TRUE, only.values = TRUE)$values
[1] 5 3

Overenie vzťahu \(Av = \lambda v\)

Na overenie použijeme prvé vlastné číslo a prvý vlastný vektor

Code
lambda_1 <- lambda_A[1]
v_1 <- V_A[, 1]

lava_strana <- as.vector(A_eig %*% v_1)
prava_strana <- lambda_1 * v_1

cat("Ľavá strana je ", paste(lava_strana, collapse = ","),
    "a pravá strana je" , paste(prava_strana, collapse = ","), ".", sep = "")
Ľavá strana je 3.53553390593274,3.53553390593274a pravá strana je3.53553390593274,3.53553390593274.

Geometrické znázornenie

Code
local({
  povodne <- par(mfrow = c(1, 2), mar = c(4, 4, 3, 1))
  on.exit(par(povodne))
  
  priklady <- list(c(1, 1), c(1, -1))
  nazvy <- c("Vlastný vektor: lambda = 5",
             "Vlastný vektor: lambda = 3")
  
  for (j in seq_along(priklady)) {
    x_plot <- priklady[[j]]
    Ax_plot <- as.vector(A_eig %*% x_plot)
    
    plot(NA, xlim = c(-2, 6), ylim = c(-6, 6),
         asp = 1,
         xlab = "Prvá súradnica",
         ylab = "Druhá súradnica",
         main = nazvy[j],
         cex.main = 0.85)
    abline(h = 0, v = 0, col = "grey80")
    arrows (0, 0, Ax_plot[1], Ax_plot[2],
            col = "darkorange2", lwd = 4, length = 0.12)
    arrows(0, 0, x_plot[1], x_plot[2],
           col = "steelblue4", lwd = 2, lty = 2, length = 0.10)
    
    legend("topleft",
           legend = c("x", "Ax"),
           col = c("steelblue4", "darkorange2"),
           lty = c(2, 1),
           lwd = c(2, 4),
           bty = "n",
           cex = 0.8)
  }
})

Vlastné vektory a ich obrazy po vynásobení maticou

Matica 3x3 príklad

Code
B_eig <- matrix(c(3, 1, 0,
                  1, 3, 0, 
                  0, 0, 5),
                nrow = 3, byrow = TRUE)

B_eig
     [,1] [,2] [,3]
[1,]    3    1    0
[2,]    1    3    0
[3,]    0    0    5
Code
eig_B <- eigen(B_eig, symmetric = TRUE)

eig_B$values
[1] 5 4 2
Code
eig_B$vectors
     [,1]      [,2]       [,3]
[1,]    0 0.7071068  0.7071068
[2,]    0 0.7071068 -0.7071068
[3,]    1 0.0000000  0.0000000

Overíme, že súčty štvorcov prvkov jednotlivých vlastných vektorov sú rovné 1.

Code
colSums(eig_B$vectors^2)
[1] 1 1 1

Overíme, aj všetky tri vlastné páry

Code
max(abs(B_eig %*% eig_B$vectors -
          eig_B$vectors %*% diag(eig_B$values)))
[1] 8.881784e-16

Súčet, stopa, determinant

Code
c(sucet_vlastnych_cisel = sum(eig_B$values),
  stopa_matice = sum(diag(B_eig)))
sucet_vlastnych_cisel          stopa_matice 
                   11                    11 

Obidve hodnoty sú rovné 11.

Code
c(sucin_vlastnych_cisel = prod(eig_B$values),
  determinant = det(B_eig))
sucin_vlastnych_cisel           determinant 
                   40                    40 
Obidve hodnoty sú rovné 40. ::: {.callout-tip}

Malé cvičenie

Pre vlastnú symetrickú maticu 3 × 3 vypočítame vlastné čísla a vlastné vektory.

Najskôr vytvoríme vektor hodnôt a následne z neho maticu.

Code
hodnoty <- c(
  0.000225, 0.000012, 0.000095,
  0.000012, 0.000081, 0.000047,
  0.000095, 0.000047, 0.000625
)

E <- matrix(hodnoty, nrow = 3, byrow = TRUE)

E
         [,1]    [,2]     [,3]
[1,] 0.000225 1.2e-05 0.000095
[2,] 0.000012 8.1e-05 0.000047
[3,] 0.000095 4.7e-05 0.000625

Pomocou funkcie eigen() vypočítame vlastné čísla a vlastné vektory.

Code
eig_E <- eigen(E, symmetric = TRUE)

eig_E
eigen() decomposition
$values
[1] 6.505440e-04 2.035988e-04 7.685721e-05

$vectors
            [,1]        [,2]        [,3]
[1,] -0.21937295  0.97520511  0.02916352
[2,] -0.08482918  0.01071313 -0.99633791
[3,] -0.97194625 -0.22104351  0.08037568

Samostatne vypíšeme vlastné čísla.

Code
eig_E$values
[1] 6.505440e-04 2.035988e-04 7.685721e-05

Samostatne vypíšeme vlastné vektory.

Code
eig_E$vectors
            [,1]        [,2]        [,3]
[1,] -0.21937295  0.97520511  0.02916352
[2,] -0.08482918  0.01071313 -0.99633791
[3,] -0.97194625 -0.22104351  0.08037568

:::