You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/notes/sem4/computer_graphics/appendix/math_appendix.md
+16-16Lines changed: 16 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Matematikai kifejezések
2
2
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.
4
4
5
5
## Műveleti tulajdonságok
6
6
@@ -30,7 +30,7 @@ $$
30
30
u * v = v * u
31
31
$$
32
32
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:
34
34
35
35
$$
36
36
-1 = \underbrace{1 - 2 \neq 2 - 1}_{
@@ -63,8 +63,7 @@ $$
63
63
64
64
### Skálázhatóság
65
65
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.
68
67
69
68
!!! info Definíció
70
69
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.
94
93
\binom{n}{k} = \frac{n^k}{k! (n-k)!}
95
94
$$
96
95
97
-
ahol $n!$ az n szám faktoriálisát jelenti.
96
+
ahol $n!$ az $n$ szám faktoriálisát jelenti.
98
97
99
98
Tehát például $n=2$-re:
100
99
@@ -116,8 +115,7 @@ $$
116
115
117
116
### Folytonosság
118
117
119
-
120
-
!!! info Definíció (egyszerűsített...)
118
+
!!! info Definíció (egyszerűsített)
121
119
Az $f$ függvény folytonos az $a$ pontban, ha
122
120
123
121
$$
@@ -126,6 +124,8 @@ $$
126
124
127
125
Az $f$ függvény _folytonos_, ha az értelmezési tartományának összes pontjában folytonos.
128
126
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
+
129
129
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.
130
130
131
131
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.
155
155
156
156
(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))
157
157
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.
159
159
160
160
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.
161
161
@@ -183,9 +183,9 @@ Ezeknek a nagy részére az lehet a reakciónk, hogy "hát persze, ez nem trivi
183
183
184
184
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.
185
185
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á").
187
187
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).
189
189
190
190
### Monoid
191
191
@@ -215,7 +215,7 @@ Eddig jók vagyunk! Létezik vajon identitás elemünk? Igen, az üres lista! L
215
215
216
216
tehát a listák halmaza $L$ és a `++` művelet tényleg egy monoidot alkotnak.
217
217
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:
219
219
220
220
```java
221
221
publicstaticvoid main(String[] args) {
@@ -226,7 +226,7 @@ public static void main(String[] args) {
226
226
}
227
227
```
228
228
229
-
Ehhez egy kezdő programozó egy `for` ciklust használna:
229
+
Ehhez természetesen használhatunk egy `for` ciklust:
230
230
231
231
```java
232
232
// ...
@@ -239,7 +239,7 @@ for (int i : numbers)
239
239
// ...
240
240
```
241
241
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:
243
243
244
244
```java
245
245
// ...
@@ -254,11 +254,11 @@ int sum = numbers.parallelStream().reduce(
254
254
(a, b) -> a + b // összeadja a párhuzamosan számolt részösszegeket
255
255
);
256
256
257
-
//...
257
+
//...
258
258
```
259
259
260
260
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.
261
261
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.
263
263
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.
Copy file name to clipboardExpand all lines: docs/notes/sem4/computer_graphics/index.md
+1-5Lines changed: 1 addition & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ Ez a jegyzet egy hallgatók által készített és karbantartott projekt, mely m
8
8
9
9
- 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.
10
10
- 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).
12
12
13
13
## Visszajelzések
14
14
@@ -19,7 +19,3 @@ Ahogy telnek a félévek a tárgytematika megváltozhat, új segédanyagok és k
19
19
### Matematikai kifejezések
20
20
21
21
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.
0 commit comments