VectorLab šipky, které umí počítat

Tohle je statická kopie kapitoly pro vyhledávače. Interaktivní verze má animované obrázky, kontrolní otázky a tlačítka, která příklad načtou do kalkulačky.

Projekce: rozložit vektor na „podél“ a „napříč“

Otázka „kolik z a míří podél b“ je v technice všudypřítomná. Kolik ze zatížení jde do osy šroubu a kolik ho smýká napříč. Kolik z rychlosti jde po dráze a kolik ji opouští. Kolik z naměřené hodnoty model vysvětlí a co zbude jako reziduum.

Odpověď je jeden vzorec, který skoro každý umí nazpaměť a málokdo umí odůvodnit:

proj_b(a) = (a · b / |b|²) · b     a = proj_b(a) + (a − proj_b(a))projekce a rozklad

Otázka za všechny: odkud se vzala ta druhá mocnina? Nepamatuje se — odvodí se, a je v ní vidět, že se b použije dvakrát: jednou jako měřítko, kterým se měří „jak daleko“, podruhé jako směr, kterým se ta délka odnese.

xybproja − projaθdélka stínu (se znaménkem)2,1066proj = (2,107, 0,000)(a−proj)·b = 0,000000nula ⇒ opravdu kolmé
  1. kolik z a míří podél b?

    Tohle je nejužitečnější otázka v celé kapitole. Síla podél osy šroubu, rychlost podél dráhy, ta část měření, kterou model vysvětluje — všechno je tahle jedna úloha.

  2. spusť kolmici z hrotu a na přímku b

    Pata kolmice je ten bod, který na přímce b leží nejblíž hrotu a. Že je „podél“ totéž co „nejblíž“, není definice — je to důsledek, a v kapitole 10 se z toho stane celá metoda nejmenších čtverců.

  3. délka = |a| cos θ = 2,107

    Pravoúhlý trojúhelník: přilehlá odvěsna je přepona krát kosinus. Se znaménkem — při tupém úhlu vyjde záporná a stín leží na druhé straně.

  4. délka = |a| · a·b/(|a||b|) = a·b/|b|

    Za cos θ se dosadí kapitola 4 a |a| se vykrátí. Zůstane a·b děleno |b| — a to je celý důvod, proč se skalární součin v praxi počítá pořád: dá se z něj číst délka stínu bez jediného úhlu.

  5. směr = = b/|b|

    Délka sama o sobě není vektor. Směr je jednotkový vektor b — a tady se b používá podruhé.

  6. proj = (a·b / |b|²) · b

    Délka krát směr. Dvě dělení |b| se potkají a udělají |b|² — proto tam ta druhá mocnina je. Není to překlep ani konvence: b se použilo dvakrát, jednou jako měřítko a jednou jako směr.

  7. a − proj b, protože (a − proj)·b = 0,000000

    Co zbylo, je na b kolmé — a nemusí se to věřit, dá se to ověřit skalárním součinem. Tenhle rozklad na „část podél“ a „zbytek“ je stejný pohyb, kterým Gram-Schmidt v kapitole 9 staví ortonormální bázi.

Sedmý krok je kontrola: zbytek se vynásobí s b a musí vyjít nula. To se nemusí věřit, dá se to spočítat.

Když je b jednotkový, mocnina zmizí. Pro |b| = 1 je proj = (a·b)·b a pro tento případ jsou obě podoby stejné. Právě proto se v grafice a robotice směry vždycky normalizují dopředu — všechny další vzorce se tím zkrátí a jeden zdroj chyb zmizí.

Práce je skalární součin

Fyzikálně nejznámější použití: práce, kterou vykoná síla po dráze, je F · d. Vodorovná složka síly táhne, svislá jenom přitlačuje k podložce a nekoná nic.

xydF35°práce W = F·d131,1 Jsíla pomáhásložka podél dráhy65,5 Nsložka kolmá — nekoná nic45,9 N
W = |F|·|d|·cos θ = 80 × 2,0 × 0,8192 = 131,06 J
Táhni úhlem přes 90°. Práce změní znaménko — síla přestane pomáhat a začne brzdit. U 90° je nulová, i když je síla plná.

Že člověk tlačící do zdi vyčerpáním padne a přitom nevykoná žádnou práci, je klasický školní paradox. Ve vektorech žádný paradox není: dráha je nulová, takže součin je nulový, a je hotovo.

Kam to vede dál

Rozklad „část podél + zbytek“ je pořád tentýž pohyb, a objeví se ještě mnohokrát:

  • Gram-Schmidt (kapitola 9) staví ortonormální bázi tak, že opakovaně odečítá průměty. Nic víc v tom není.
  • Nejmenší čtverce — proložení dat přímkou je projekce vektoru měření do podprostoru, na který model dosáhne. Viz OptiLab.
  • Kalmanův filtr je táž projekce, jen prováděná postupně a s vahami podle nejistoty. Viz FilterLab.

Vzorce v této kapitole

proj_b(a) — vektorový průmět a do b
proj_b(a) = (a·b / |b|²)·b [—] kap. 5
comp_b(a) — skalární průmět (se znaménkem)
comp_b(a) = a·b / |b| = |a| cos θ [—] kap. 5
W — práce síly po dráze
W = F · d = |F||d| cos θ [J] ISO 80000-4