játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5448
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2520

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2188
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
(C++) DirectX programozás 7. - Matematika összefoglaló 2.: Lineáris algebra 2005.10.02 13:39



DirectX programozás 7. - Matematika összefoglaló 2.: Lineáris algebra


A lineáris algebra fõleg vektorterekkel és bennük értelmezett transzformációkkal foglalkozik. Grafika szempontjából nagyon fontos dolog. Sok leírást láttam már a mátrixokról, csupán azt nem magyarázzák el, mik azok pontosan és mire jók. Ezzel fogunk most megismerkedni.

Hangsúlyozom, hibák elõfordulhatnak, felfedezésükért köszönettel tartozom.

Vektortér fogalma(lineáris tér)

Most picit el kell rugaszkodnunk a már megismert vektoroktól, ugyanis a 3D-s vektorok tere például vektortér, de 15D-s vektorok is vektorteret alkotnak. Sõt, ha vesszük az egy intervallumon deriválható függvényeket a függvényösszeadással és a számmal szorzással, akkor azok is vektorteret alkotnak. Ezért inkább meg kell ismernünk a vektortér definícióját!

Legyen a valós számok halmaza! Egy V halmaz az számtest felett vektortér, ha kielégíti az alábbiakat:
  • létezik egy összeadásnak nevezett mûvelet(jele +), amire igaz, hogy ha a,b,cV
    • a+bV
    • kommutativ: a+b=b+a
    • asszociatív: (a+b)+c=a+(b+c)
    • létezik egy nullelem(jele 0,vagy 0), amire 0V és a+0=a
    • minden elemhez van additív inverz: a+(-a)=0
  • létezik skalárral szorzás, ahol c,d és a,bV
    • c*aV
    • asszociatív: (c*d)*a=c*(d*a)
    • disztributiv:
      • c*(a+b)=c*a+c*b
      • (c+d)*a=c*a+d*a
    • létezik egységelem(jele: 1 vagy 1), melyre 1*a=a

Most nyílván az a kérdés, ez mire jó? Ezt én is kitalálhattam volna... Mivel bizonyítani semmit nem fogunk ezért nem fogjuk látni, de a bizonyítások nagy része kihasználja, hogy a vektortérre ezek igazak. Ezek szerint akkor lineáris tér, vagy vektortér a 3D-s vektorok tere, ha az összeadást és a skalárral szorzást az elõzõ részben leírtak szerint értelmezzük. Természetesen az n dimenziós vektorokra is így fogjuk értelmezni a mûveleteket. De nézzünk egy érdekes példát! Legyen V most a másodfokú polinomok halmaza! Vektortér-e? Kikövetkeztethetõ, hogy nem, mert legyen pl.

a=x2+3x+4
b= - x2+x

a+b=4x+4

ami persze nem másodfokú, így nem eleme a V halmaznak. A legfeljebb másodfokú függvények halmaza már vektortér.

Most egy kis jelöléstechnikát vezetünk be. Ezentúl a vektorokat így fogjuk jelölni(ha v(x1,x2...xn):
x1,x2...xn-t a vektor koodinátáinak nevezzük.Ez már elõremutat a mátrixos forma felé. Az összeadást és a számmal szorzást ezentúl a szokásos módon definiáljuk, azaz összeadásnál a megfelelõ koordinátákat adjuk össze, számmal szorzásnál pedig az összes koodinátát szorozzuk a számmal.

Fontos megismerkedni egy alapvetõ fogalommal, a lineáris kombinációval! Legyen V vektortér! Ekkor a v1,v2,...,vn vektorok lineáris kombinációja:


, ahol c1,c2,...,cn. Ez nem egyenlet, hanem a szummás jelölés csupán csak egy egyszerûbb jelölés, azaz 1-tõl n-ig való összegzés. Azt hiszem ezen nincs mit magyarázni, ez így van.

Másik fontos fogalom az altér. Ha V vektortér(mint halmaz) egy U részhalmaza vektortér, ha a mûveleteket úgy értelmezzük, mint V-ben, akkor U altere V-nek. Altérre könnyû példát mutatni: például a 3D-s vektorok altere a 2D-s vektorok. Vagy a legfeljebb n-edfokú polinomok altere a legfeljebb (n-5)-ödfokú polinomok tere.
Bizonyítsuk szemléletesen az, hogy a 2D-s vektorok alteret alkotnak a 3D-s vektorok alatt. Természetesen a vektortér kikötéseit, hogy pl. létezik összeadás már az biztosítja, hogy kimondtuk, hogy a V vektortér mûveleteit használjuk. V pedig vektortér. Így a 3D-s vektorok összeadását használva 2D-ben a kikötések egy része teljesül. Most már csak az a kérdés, hogy ez az összeadás kivezet-e a halmazból, azaz két vektor összege kimutat-e a síkukból? Erre a válasz az, hogy nem mutat ki, hiszen tudjuk, hogy két vektor összege is a síkukba esik. Ezért természetesen altér.

Ezért kimondhatjuk, hogy ha V vektortér, akkor V U részhalmaza akkor és csak akkor vektortér, ha tetszõleges u1,u2U vektorra és ekkor bármilyen c1,c2 esetén

c1u1+c2u2U

Tehát szavakkal: U bármely két vektorának lineáris kombinációja is U-ban van. Ezt ismerhetjük már középiskolából is az alábbi tételben: SÍKBAN bármely nem párhuzamos két vektorral a SÍK összes vektora elõállítható. De csak a SÍK összes vektora.
Így ha a térben vesszük egy sík vektorait, akkor azok alteret alkotnak.

Hozzátenném, hogy a lináris kombináció nem ismeretlen középiskolából sem, hiszen a késõbb látni fogjuk, hogy a koordináták lényegében a lineáris kombináció együtthatói. Hiszen pl. a (3,4) pontba mutató vektor Descartes-féle koordinátarendszerben:

3i+4j

Ez pedig lineáris kombináció.

Vegyünk újra egy V vektorteret! Generált térnek nevezzük a v1,v2,...,vnV összes lineáris kombinációinak halmazát, méghozzá a vn vektorok által generált térnek.. Ez definíció, de példát is hozunk: térben egy sík generált tér, hiszen bármely két nem párhuzamos vektor a térben generál egy síkot.

Most pedig a lineáris algebra legfontosabb alapvetõ fogalmával ismerkedünk meg, ez pedig a lineáris függetlenség.

Legyen V vektortér! v1,v2,...,vnV vektorok lineárisan függetlenek, ha a nullelemet a lineáris kombinációjuk csak triviálisan, nulla együtthatókkal állítják elõ:

c1v1+c2v2+...+cnvn=0
akkor és csak akkor ha
c1,c2,...,cn=0

Ha ez nem teljesül, tehát van akár egy nem nulla együttható, akkor már nem lineárisan függetlenek, tehát lineárisan összefüggõek.
Vegyük például a
vektorokat. Látható, hogy lineáris kombinációjukkal a nulla csupán 0 együtthatókkal állítható elõ. De például a
vektorok nem lineárisan függetlenek, hiszen c1=5 és c2=-1 együtthatókkal elõállítható a 0. Nézzünk három vektorra példát!
Ezek nem lineárisan függetlenek, hiszen ha mondjuk c3=1, és c2=-2 és c1=-4, akkor a lineáris kombinációjuk 0 lesz. Ebbõl a példából észrevehetjük: bármelyik vektor elõállítható a két másik lineáris kombinációjával, ez pedig azt jelenti, hogy
amibõl
tehát ha egy vektorrendszerben egy vektor elõállítható a többi lineáris kombinációjával, akkor az a rendszer lineárisan összefüggõ(hiszen itt c3=-1). Ez fordítva is igaz: a lineáris összefüggõség azt jelenti, hogy van egy vektor, mely a többi lineáris kombinációjaként elõállítható.

A példákból azt is észrevehetjük, hogy két dimenziós vektortérben két vektor általában független, viszont három már mindig összefüggõ. Ez abból következik szemléletesen, hogy síkban(2D) a sík vektorai két nem párhuzamos vektorral mindig elõállíthatók lineáris kombinációként. Természetesen két párhuzamos vektor összefüggõ, mert bármelyik elõállítható a másik skalárszorosaként.

Triviális, hogy ha a vektorok közt van nullvektor, akkor a rendszer összefüggõ, hiszen a nullvektor együtthatója akármekkora lehet.

Ezek ismeretében bevezethetõ a bázis fogalma, ami lineárisan független generátorrendszert jelent. Tehát olyan vektorok melyek függetlenek egymástól, és generálják az adott vektorteret. Azért fontos a bázis bevezetése, mert a vektortér bármely vektora EGYÉRTELMÛEN elõállítható a bázisvektorok lineáris kombinációjaként. A kombináció együtthatóit nevezzük a vektor adott bázisbeli koordinátáinak. Tehát egy vektort a koordinátái csak adott bázisrendszerben határozzák meg egyértelmûen. Magyarul a koordináták függenek a bázistól.

A bázis vektorainak a száma határozza meg a vektortér dimenzióját. Bizonyítható, hogyha egy vektortér egyik bázisának a vektorainak a száma n, akkor az összes bázisának a vektorainak a száma n.

Nézzük például a síkot! A síkban akármelyik vektort elõállíthatjuk két nem párhuzamos vektor segítségével. A két vektor generátorrendszer, és ha nem párhuzamosak, akkor lineárisan függetlenek is. Tehát egy sík bázisa lehet akármelyik két nem párhuzamos vektora. Mivel a sík bázisainak a vektorainak a száma 2, ezért a sík két dimenziós. Így definiálható az n dimenziós tér.

Térben nyilván három nem egysíkú vektor generálja a teret, és ezek lineárisan függetlenek is. Ezért a tér 3 dimenziós.

Szokásos használni a Descartes-féle orthonormált bázisrendszert, mely azt jelenti, hogy három egymásra merõleges egységvektort veszünk bázisnak. Ezek nyilván generálják a teret, és lineárisan függetlenek is. Jelük: i,j,k. Ezekhez negyedik vektort hozzávéve megszûnnek lineárisan függetlennek lenni, tehát ez a negyedik vektor elõállítható az i,j,k lineáris kombinációjaként. Amikor azt mondjuk, hogy egy vektor koordinátái x,y,z, akkor a szokásos i,j,k bázisra gondolunk, így arra a vektorra, amely:

Most belemélyedünk egy gyakorlatiasabb dologba, amely már a lineáris algebra használhatóságát emeli ki. Ez pedig a bázistranszformáció. Picit kavarásos dolog, tehát nagy odafigyelést igényel(mármint megérteni, alkalmazni könnyû).

De errõl majd legközelebb, addig pedig javaslom az ezen dokumentum újraolvasását.

Crusader
2005. június 25.


A cikksorozat további részei:
DirectX programozás 1. - Bevezetés, Windows ablak létrehozása, Idõzítõ
DirectX programozás 2. - DirectDraw inicializálása, használata
DirectX programozás 3. - DirectDraw megjelenítés 1.
DirectX programozás 4. - DirectDraw megjelenítés 2.
DirectX programozás 5. - Izometrikus grafika
DirectX programozás 6. - Matematika összefoglaló 1.
DirectX programozás 7. - Matematika összefoglaló 2.: Lineáris algebra
DirectX programozás 8. - DirectInput
DirectX programozás 9. - DirectSound, Ogg Vorbis lejátszás
DirectX programozás 10. - Izometrikus grafika 2.
DirectX programozás 11. - Objektumorientált programozás

Értékelés: 0

Új hozzászólás
szatti          2010.10.23 21:04
Hiba az oldalon!
Nagyon érdekelne a dolog, de a képletekből és mindenhonnan hiányoznak a gifek és így elég nehéz értelmezni a tartalmat!