Skip to content

Commit 13f1c97

Browse files
levyryGilgames32
andcommitted
implement requested changes
I also rewrote some parts of the math appendix. Co-authored-by: Kovács Bálint <balintkovacs11@gmail.com>
1 parent cc8071f commit 13f1c97

13 files changed

Lines changed: 231 additions & 230 deletions

File tree

docs/notes/sem4/computer_graphics/appendix/math_appendix.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Matematikai kifejezések
22

3-
A jegyzetben sok matematikai kifejezéssel találkozhatunk, melyeknek egy részét a tárgy már feltételezi, hogy mindenki ismeri. Ebben a függelékben megpróbáljuk definiálni a legtöbb ilyen kifejezést, illetve egy példát adni rájuk.
3+
A jegyzetben sok matematikai kifejezéssel találkozhatunk, melyeknek egy részét a tárgy már feltételezi, hogy mindenki ismer. Ebben a függelékben megpróbáljuk definiálni a legtöbb ilyen kifejezést, illetve egy példát adni rájuk.
44

55
## Műveleti tulajdonságok
66

@@ -30,7 +30,7 @@ $$
3030
u * v = v * u
3131
$$
3232

33-
Ha egy művelet _nem_ kommutatív (antikommutatív), akkor az azt jelenti, hogy $u * v \neq v * u$. Egy példa egy nem kommutatív műveletre az kivonás:
33+
Ha egy művelet _nem_ kommutatív (antikommutatív), akkor az azt jelenti, hogy $u * v \neq v * u$. Egy példa egy nem kommutatív műveletre a kivonás:
3434

3535
$$
3636
-1 = \underbrace{1 - 2 \neq 2 - 1}_{
@@ -63,8 +63,7 @@ $$
6363

6464
### Skálázhatóság
6565

66-
Elsősorban vektorok esetén beszélünk róla.
67-
66+
Elsősorban vektorok esetén beszélünk róla a tárgy keretein belül.
6867

6968
!!! info Definíció
7069
Egy műveletre (legyen most $\ast$) akkor mondjuk, hogy skálázható, ha $a, b \in \R^n$ és $s \in \R$ esetén:
@@ -94,7 +93,7 @@ Egy példa erre a jegyzetben is említett skaláris szorzás.
9493
\binom{n}{k} = \frac{n^k}{k! (n-k)!}
9594
$$
9695

97-
ahol $n!$ az n szám faktoriálisát jelenti.
96+
ahol $n!$ az $n$ szám faktoriálisát jelenti.
9897

9998
Tehát például $n=2$-re:
10099

@@ -116,8 +115,7 @@ $$
116115

117116
### Folytonosság
118117

119-
120-
!!! info Definíció (egyszerűsített...)
118+
!!! info Definíció (egyszerűsített)
121119
Az $f$ függvény folytonos az $a$ pontban, ha
122120

123121
$$
@@ -126,6 +124,8 @@ $$
126124

127125
Az $f$ függvény _folytonos_, ha az értelmezési tartományának összes pontjában folytonos.
128126

127+
Ezek az $(\varepsilon, \delta)$ definíciók picit ijesztőek tudnak lenni elsőre. Ajánlom a [3Blue1Brown](https://youtu.be/kfF40MiS7zA?si=F_0bEfRMgJRAuLby&t=293) videót, ahol végig megy egy ilyen definíció értelmezésén.
128+
129129
A jegyzetben találkozhatunk $C^1$ és $C^2$ folytonossággal. Azokat az $f$ függvényeket, amelyek a fenti definíciónak eleget tesznek $C^0$ folytonosnak nevezzük. Egy függvényt $C^n$ folytonosnak nevezünk, ha az $n$. deriváltja is folytonos, azaz $f^{(n)}$ folytonos.
130130

131131
Például vegyük az $f: x \mapsto x^2 + 2$ függvényt. [Belátható](https://cdn.discordapp.com/emojis/1394642603701571605.webp?size=240), hogy $C^0$ folytonos. Nézzük a deriváltjait:
@@ -155,7 +155,7 @@ ami már nem egy folytonos függvény, tehát $g$ nem $C^2$ folytonos.
155155

156156
(Az alábbi egy egyszerűsítés, akit mélyebben érdekel a téma annak ajánlok pár félévet az [ELTE Matematika BSc. képzésén](https://ttk.elte.hu/content/matematika-bsc.t.7680))
157157

158-
Az absztrakt algebrában elkezdünk elmozdulni a hétköznapi, megszokott rendszerekben való számolásoktól, és inkább magukkal a _rendszerekkel_ akarunk foglalkozni. Sok ezer évig nagyon sok dolgot magától értetődőnek vettek a matematikusok. Ha megkérdeznéd Euklidészt, vagy akár Newtont, akkor nekik valószínűleg gőzük sem lenne ahhoz, hogy mi az a "kommutativitás". Persze tudják, hogy $2 + 1 = 1 + 2$, és hogy $2 - 1 \neq 1 - 2$, hiszen ez "egyértelmű", de ha megkérdeznéd, hogy miért van ez így, akkor ők is csak megvonnák a vállukat.
158+
Az absztrakt algebrában elkezdünk elmozdulni a hétköznapi, megszokott rendszerekben való számolásoktól, és inkább magukkal a _rendszerekkel_ akarunk foglalkozni. Sok ezer évig számos dolgot magától értetődőnek vettek a matematikusok. Ha megkérdeznéd Euklidészt, vagy akár Newtont, akkor nekik valószínűleg gőzük sem lenne ahhoz, hogy mi az a "kommutativitás". Persze tudják, hogy $2 + 1 = 1 + 2$, és hogy $2 - 1 \neq 1 - 2$, hiszen ez "egyértelmű", de ha megkérdeznéd, hogy miért van ez így, akkor ők is csak megvonnák a vállukat.
159159

160160
A huszadik század eleje felé a matematikusokat elkezdte érdekelni, hogy "oké, de most komolyan, miért tudom megcserélni a tényezőkeg az összeadásnál, de a kivonásnál nem?", és még fontosabban "mi lenne, ha mégis meg tudnám?". Nagyon sok áttörés született ebben a korban, az absztrakt algebrán kívül a [halmazelmélet](https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory) pontos definíciója, a [matematikai logika](https://en.wikipedia.org/wiki/Mathematical_logic), [topológia](https://hu.wikipedia.org/wiki/Topol%C3%B3gia), azon belül is a [mértékelmélet](https://hu.wikipedia.org/wiki/M%C3%A9rt%C3%A9k_(matematika)), mind ekkor jöttek létre.
161161

@@ -183,9 +183,9 @@ Ezeknek a nagy részére az lehet a reakciónk, hogy "hát persze, ez nem trivi
183183

184184
Léteznek további kibővítések is, például a _kommutatív gyűrű_ egy olyan gyűrű, ahol a $\ast$ művelet is kommutatív. A fent említett egész számok halmaza is egy kommutatív gyűrűt alkot.
185185

186-
A jegyzetben amikor gyűrűkről van szó, akkor általában magától értetődő, vagy "megszokott" műveleti tulajdonságokról beszélünk, amiket éppen most soroltunk fel pontosan.
186+
A jegyzetben amikor gyűrűkről van szó, akkor általában arra gondol a Mester, hogy a "megszokott" műveleti tulajdonságokról beszélünk, amiket éppen most soroltunk fel pontosan (tehát az összeadás, szorzás úgy működik, ahogy "számítunk rá").
187187

188-
A test (angolul _field_) fogalma is nagyon hasonló mint a gyűrűnek, csak még több "triviális" tulajdonságot köt meg. Vegyük észre például, hogy a fenti gyűrű definíciónkkal nem tudnánk a racionális számok halmazát definiálni. Nem köti meg, hogy kell léteznie multiplikatív inverzeknek, tehát nem tudnánk például definiálni az $1/2$-edet. A testek pont ezért lényegében egy olyan gyűrűk, ahol a $0$-tól különböző elemeknek van multiplikatív inverze. Precízebben a _test axiómák_ határozzák meg, hogy mi egy test, melyeket itt nem sorolnék fel, de online sok helyen elérhetőek[.](https://en.wikipedia.org/wiki/Field_(mathematics)#Classic_definition)
188+
A test (angolul _field_) fogalma is nagyon hasonló mint a gyűrűnek, csak még több "triviális" tulajdonságot köt meg. Vegyük észre például, hogy a fenti gyűrű definíciónkkal nem tudnánk a racionális számok halmazát definiálni. Nem köti meg, hogy kell léteznie multiplikatív inverzeknek, tehát nem tudnánk például definiálni az $1/2$-edet. A testek pont ezért lényegében egy olyan gyűrűk, ahol a $0$-tól különböző elemeknek van multiplikatív inverze. Precízebben a _test axiómák_ határozzák meg, hogy mi egy test, melyeket itt nem sorolnék fel, de online [sok helyen elérhetőek](https://en.wikipedia.org/wiki/Field_(mathematics)#Classic_definition).
189189

190190
### Monoid
191191

@@ -215,7 +215,7 @@ Eddig jók vagyunk! Létezik vajon identitás elemünk? Igen, az üres lista! L
215215

216216
tehát a listák halmaza $L$ és a `++` művelet tényleg egy monoidot alkotnak.
217217

218-
Ez nekünk miért hasznos? Nézzünk egy másik példát. Az egész számok és az $+$ is egy monoidot alkotnak. Ez nekünk azért jó, mert kihasználva a monoid axiómákat egy nagyobb számítást tetszőleges sok kisebb számításra bonthatunk, amelyek részeredményeit a végén összefűzhetünk. Például vegyük ezt, hogy Java-ban van egy listányi számunk, és arra vagyunk kíváncsi, hogy mennyi az összes szám összege:
218+
Ez nekünk miért hasznos? Nézzünk egy másik példát. Az egész számok és az $+$ is egy monoidot alkotnak. Ez nekünk azért jó, mert kihasználva a monoid axiómákat egy nagyobb számítást tetszőleges sok kisebb számításra bonthatunk, amelyek részeredményeit a végén összefűzhetjük. Például vegyük azt, hogy Java-ban van egy listányi számunk, és arra vagyunk kíváncsiak, hogy mennyi az összes szám összege:
219219

220220
```java
221221
public static void main(String[] args) {
@@ -226,7 +226,7 @@ public static void main(String[] args) {
226226
}
227227
```
228228

229-
Ehhez egy kezdő programozó egy `for` ciklust használna:
229+
Ehhez természetesen használhatunk egy `for` ciklust:
230230

231231
```java
232232
// ...
@@ -239,7 +239,7 @@ for (int i : numbers)
239239
// ...
240240
```
241241

242-
Az elegáns megoldáshoz használjuk ki, hogy egy monoiddal van dolgunk. Egyszerre mindig csak két számot szeretnénk összeadni, tehát valami olyasmit szeretnénk, ami végigmegy a listánkon, és _akkumulálja_ a részösszegeket, ahogy összeadogatjuk a szomszédos számokat. A Monoid elvén alapuló `reduce` függvény pontosan ezt csinálja nekünk:
242+
Könnyen párhuzamosíthatóvá tehetjük ezt viszont ha kihasználjuk, hogy egy monoiddal van dolgunk. Egyszerre mindig csak két számot szeretnénk összeadni, tehát valami olyasmit szeretnénk, ami végigmegy a listánkon, és _akkumulálja_ a részösszegeket, ahogy összeadogatjuk a szomszédos számokat. A monoid elvén alapuló `reduce` függvény pontosan ezt csinálja:
243243

244244
```java
245245
// ...
@@ -254,11 +254,11 @@ int sum = numbers.parallelStream().reduce(
254254
(a, b) -> a + b // összeadja a párhuzamosan számolt részösszegeket
255255
);
256256

257-
//...
257+
// ...
258258
```
259259

260260
Mivel az összeadás asszociatív, a program feldarabolhatja az összeadást. Például az `(1 + 2 + 3) + (4 + 5 + 6)` ugyanazt az eredményt adja, mint az `1 + (2 + 3) + 4 + (5 + 6)`. Így tehát akár több szálon is össze tudjuk adni a listának egy-egy részlistáját, amiket a végén szintén összeadunk. Ennél az elemi példánál persze a `for` ciklus is megfelelő, viszont bonyolultabb számítások esetén az, hogy lényegében "ingyen" kaptuk meg a párhuzamosságot az nagyon kényelmes.
261261

262-
Ha elindulunk ezen az úton, akkor eljuthatunk a _monádok_ fogalmáig, amiket már minden programozó használt életében, és szerette őket, akkor is, ha pontosan nem tudta, hogy azt használta. Ha használtál már Javascriptben `Promise`-t, vagy Kotlinban `?.` operátort, vagy ha [hívtál már meg több függvényt egymás után](https://en.wikipedia.org/wiki/Function_composition_(computer_science)#Composing_function_calls) akkor már használtál monádokat.
262+
Ha elindulunk ezen az úton, akkor eljuthatunk a _monádok_ fogalmáig, amiket már minden programozó használt életében és szerette őket, akkor is, ha pontosan nem is tudta, hogy azokat használta. Ha használtál már JavaScriptben `Promise`-t, vagy Kotlinban `?.` operátort, vagy ha [hívtál már meg több függvényt egymás után](https://en.wikipedia.org/wiki/Function_composition_(computer_science)#Composing_function_calls), akkor már használtál monádokat.
263263

264-
A napjainkban egyre több modern nyelvben van sok funkcionális elem (Rust, Kotlin, Swift, Go) és régebbi nyelvek új verziói is sokat tartalmaznak (Java, C++). Az alapképzésben sajnos alig jut idő a funkcionális programozásra, viszont az OO-t a torkunkon is lenyomják. Ha mélyebben érdekel a téma, akkor nagyon tudom ajánlani a [Haskell nyelv](https://learnyouahaskell.github.io/introduction.html) megtanulását, illetve a [Deklaratív programozás](https://portal.vik.bme.hu/kepzes/targyak/VISZAD01/) kötvál és a [Funkcionális programozás C++-ban](https://portal.vik.bme.hu/kepzes/targyak/VITMAV47) szabvál elvégzését.
264+
Egyre több modern nyelvben van jelentős mennyiségű funkcionális elem (Rust, Kotlin, Swift) és régebbi nyelvek új verziói is sokat vettek át (Java, C++). Az alapképzésben sajnos alig jut idő a funkcionális programozásra. Ha mélyebben érdekel a téma, akkor ajánlom valamilyen funkcionális nyelv megtanulását (mint például a [Haskell](https://learnyouahaskell.github.io/introduction.html)), illetve a [Deklaratív programozás](https://portal.vik.bme.hu/kepzes/targyak/VISZAD01/) kötvál és a [Funkcionális programozás C++-ban](https://portal.vik.bme.hu/kepzes/targyak/VITMAV47) szabvál elvégzését.

docs/notes/sem4/computer_graphics/img/chapter_7/7_rücsi.png renamed to docs/notes/sem4/computer_graphics/img/chapter_7/7_rucsi.png

File renamed without changes.

docs/notes/sem4/computer_graphics/index.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Ez a jegyzet egy hallgatók által készített és karbantartott projekt, mely m
88

99
- Egy [házifeladat sablon](https://github.com/levyry/grafika-hf-template) is készült a tárgyhoz, mellyel nem kell függőségek levadászásával, vagy a text editorod beállításaival foglalkoznod a házi írás helyett.
1010
- A tárgy [VIK Wiki oldalán](https://vik.wiki/Sz%C3%A1m%C3%ADt%C3%B3g%C3%A9pes_grafika) megtalálod a tárgy követelményeit, illetve további segédanyagokat, tippeket.
11-
- Szirmay tanár úr [YouTube csatornájára](https://www.youtube.com/@laszloszirmay-kalos5413) többször is hivatkozik a jegyzet. Mindenképpen ajánljuk az előadásvideók nézését, melyhez van egy [playlist](https://www.youtube.com/playlist?list=PLiH4g_VR3i0Pz0vAyjPzPCXDqLqHPfW2p).
11+
- Szirmay tanár úr YouTube csatornájára többször is hivatkozik a jegyzet. Mindenképpen ajánljuk az előadásvideók nézését, melyhez készült egy [playlist](https://www.youtube.com/playlist?list=PLiH4g_VR3i0Pz0vAyjPzPCXDqLqHPfW2p).
1212

1313
## Visszajelzések
1414

@@ -19,7 +19,3 @@ Ahogy telnek a félévek a tárgytematika megváltozhat, új segédanyagok és k
1919
### Matematikai kifejezések
2020

2121
A jegyzetben sok matematikai kifejezéssel találkozhatunk, melyeknek egy részét a tárgy már feltételezi, hogy mindenki ismeri. Az [$A.$ függelékben](appendix/math_appendix.md) található a legtöbb ilyen kifejezés definíciója, illetve egy példa rá. Reméljük, hogy ez segít mindenkit ugyan arra a szintre hozni.
22-
23-
## Maintainers
24-
25-
Orbán "$\lambda$evy" Levente ([GitHub](https://github.com/levyry))

0 commit comments

Comments
 (0)