Vektorové a maticové výpočty

JupyterLab
Numpy
Vektory
Matice
Operácie
Lineárna algebra
Autor

Jakub Šperka

Publikované

18. septembra 2025

📐 Úvod

Vektory a matice sú základnými stavebnými prvkami lineárnej algebry, ktorá tvorí nevyhnutný základ pre množstvo vedných oblastí. Ich pochopenie je kľúčové pre prácu v oblastiach ako napríklad:

  • 📊 Dátová analýza – ukladanie a spracovanie veľkých súborov čísel

  • 🤖 Strojové učenie – reprezentácia modelov, parametrov a váh

  • 🛰 Geoinformatika a geodézia – transformácie súradníc a priestorové výpočty, riešenie sústav rovníc popisujúcich rôzne systémy

V tejto kapitole si ukážeme:

  • Základné operácie s vektormi a maticami

  • Pokročilejšie maticové operácie

  • Riešenie sústav lineárnych rovníc

❕ Všetky príklady budeme realizovať v jazyku Python pomocou knižnice NumPy, ktorá je optimalizovaná pre rýchle a efektívne výpočty.


🧮 Vektory – základné operácie

Vektor je usporiadaná postupnosť čísel (1D pole). Najčastejšie reprezentuje súradnice bodu alebo hodnoty veličín.

Import knižnice a vytvorenie vektorov

Kód
import numpy as np

# Vytvorenie vektorov
v = np.array([1, 2, 3])
u = np.array([4, 5, 6])

print("v =", v)
print("u =", u)
v = [1 2 3]
u = [4 5 6]

Sčítanie a odčítanie

Kód
print("v + u =", v + u) # Sčítanie
print("v - u =", v - u) # Odčítanie
v + u = [5 7 9]
v - u = [-3 -3 -3]

Skalárne operácie (po prvkoch)

Kód
print("2 * v =", 2 * v)
print("v / 2 =", v / 2)
2 * v = [2 4 6]
v / 2 = [0.5 1.  1.5]

Skalárny súčin (Dot product)

Kód
dot_product = np.dot(v, u)  # alebo v @ u
print("v · u =", dot_product)
v · u = 32

💡 Alternatívnym zápisom skalárneho súčinu je operátor @ pre maticové násobenie, pri vektroch však funguje aj ako skalárny súčin.

Vektorový súčin (Cross product)

Kód
cross_product = np.cross(v, u)
print("v x u =", cross_product)
v x u = [-3  6 -3]

Normy (dĺžky)

Kód
print("||v|| =", np.linalg.norm(v))
print("||u|| =", np.linalg.norm(u))
||v|| = 3.7416573867739413
||u|| = 8.774964387392123

🔢 Matice – základné operácie

Matica je 2D pole (riadky × stĺpce). Používa sa na reprezentáciu lineárnych zobrazení a sústav rovníc.

Vytvorenie matíc

Kód
A = np.array([[1, 2],
              [3, 4]])
B = np.array([[5, 6],
              [7, 8]])

print("A =\n", A)
print("B =\n", B)
A =
 [[1 2]
 [3 4]]
B =
 [[5 6]
 [7 8]]

Sčítanie a odčítanie

Kód
# Sčítanie, odčítanie
print("A + B =\n", A + B)
print("A - B =\n", A - B)
A + B =
 [[ 6  8]
 [10 12]]
A - B =
 [[-4 -4]
 [-4 -4]]

Násobenie po prvkoch

Kód
print("A * B (po prvkoch) =\n", A * B)
A * B (po prvkoch) =
 [[ 5 12]
 [21 32]]

Maticové násobenie (lineárna algebra)

Kód
print("A @ B =\n", A @ B)       # ekvivalent np.dot(A, B)
print("B @ A =\n", B @ A)
A @ B =
 [[19 22]
 [43 50]]
B @ A =
 [[23 34]
 [31 46]]

💡 Ekvivalentným spôsobom maticového násobebia je aj použitie funkcie np.dot().

Kód
print("A @ B =\n", np.dot(A,B))
print("B @ A =\n", np.dot(B,A))
A @ B =
 [[19 22]
 [43 50]]
B @ A =
 [[23 34]
 [31 46]]

Transpozícia

print(“A^T =”, A.T) print(“A^T =”, np.transpose(A))

💡 Ekvivalentným spôsobom transpozície je aj použitie funkcie np.transpose().


🚀 Užitočné funkcie lineárnej algebry (np.linalg)

Determinant matice

Kód
det_A = np.linalg.det(A)
print("det(A) =", det_A)
det(A) = -2.0000000000000004

Hodnosť matice

Kód
rank_A = np.linalg.matrix_rank(A)
print("rank(A) =", rank_A)
rank(A) = 2

Inverzia matice

Kód
inv_A = np.linalg.inv(A)
print("A^{-1} =\n", inv_A)
A^{-1} =
 [[-2.   1. ]
 [ 1.5 -0.5]]

🧱 Jednotkové a diagonálne matice

Jednotková matica

Kód
I = np.eye(3)
print("I =\n", I)
I =
 [[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

Diagonálna matica matica

Kód
D = np.diag([1.0, 2.0, 3.0])
print("D =\n", D)
D =
 [[1. 0. 0.]
 [0. 2. 0.]
 [0. 0. 3.]]

Hodnota na diagonále

Kód
diag_D = np.diag(D)
print("diag_D =\n", diag_D)
diag_D =
 [1. 2. 3.]

💡 Všimnite si, že funkcia np.diag() mení svoju funckionalitu v závislosti od vstupných argumentov. V prípade, že vstupom je vektor vytvorí štvorcovú maticu s hodnotami tohto vektora na diagonále. V prípade, že argumetom je matica, funkcia vráti hodnoty na hlavnej diagonále matice.


🧩 Riešenie sústav lineárnych rovníc

🧮 Pomocou funkcie np.linalg.solve

Kód
A1 = np.array([[2.0, 1.0],
               [3.0, 4.0]])
b1 = np.array([8.0, 18.0])

x1 = np.linalg.solve(A1, b1)
print("Riešenie A1 x = b1:", x1)
Riešenie A1 x = b1: [2.8 2.4]

🗞️ Pomocou inverznej matice

Kód
A2 = np.array([[2.0, 1.0],
               [3.0, 4.0]])
b2 = np.array([8.0, 18.0])

x2 = np.linalg.inv(A2) @ b2
print("Riešenie A2 x = b2:", x2)
Riešenie A2 x = b2: [2.8 2.4]

🧠 Zhrnutie

  • Používajte vektorové a maticové operácie z balíčka NumPy(sú rýchlejšie než slučky v Pythone).
  • @ je operátor pre maticové násobenie: A @ B.
  • Modul np.linalg obsahuje pokročilejšie nástoroje lineárnej algebry`.

📚 Oficiálna dokumentácia NumPy

Podrobný popis funkcií, ich parametrov a príkladov použitia nájdete v oficiálnej dokumentácii knižnice NumPy na adrese: https://numpy.org/doc/stable/.


🎞️ Videonávod