2018, Diszkrét matematika

Hasonló dokumentumok
2016, Diszkrét matematika

2018, Diszkrét matematika

2016, Diszkrét matematika

2015, Diszkrét matematika

2018, Diszkrét matematika

2015, Diszkrét matematika

2016, Diszkrét matematika

2017, Diszkrét matematika

2018, Diszkre t matematika. 10. elo ada s

2016, Diszkrét matematika

2016, Diszkrét matematika

1. Egészítsük ki az alábbi Python függvényt úgy, hogy a függvény meghatározza, egy listába, az első n szám faktoriális értékét:

2018, Diszkrét matematika

2018, Funkcionális programozás

Kalkulus. Komplex számok

2018, Diszkrét matematika

Matematika 11. osztály

Imperatív programozás

2018, Diszkre t matematika. 8. elo ada s

KOVÁCS BÉLA, MATEMATIKA I.

Diszkrét matematika 1. estis képzés

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

x = 1 = ı (imaginárius egység), illetve x 12 = 1 ± 1 4 2

Sapientia Egyetem, Matematika-Informatika Tanszék.

GAZDASÁGMATEMATIKA KÖZÉPHALADÓ SZINTEN

Komplex számok. Wettl Ferenc előadása alapján Wettl Ferenc előadása alapján Komplex számok / 18

Assembly programozás: 2. gyakorlat

1. Komplex számok. x 2 = 1 és x 2 + x + 1 = 0. egyenletek megoldását számnak tekinthessük:

Hatványozás. A hatványozás azonosságai

Halmazelméleti alapfogalmak

Diszkrét matematika I.

Diszkrét matematika 1.

Osztályozóvizsga és javítóvizsga témakörei Matematika 9. évfolyam

2016/2017. Matematika 9.Kny

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

Halmazok Halmazok, részhalmaz, halmazműveletek, halmazok elemszáma

Typotex Kiadó. Bevezetés

SZÁMRENDSZEREK KÉSZÍTETTE: JURÁNYINÉ BESENYEI GABRIELLA

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

A SZÁMFOGALOM KIALAKÍTÁSA

MATEMATIKA TANMENET SZAKKÖZÉPISKOLA 9.A-9.C-9.D OSZTÁLY HETI 4 ÓRA 37 HÉT/ ÖSSZ 148 ÓRA

Osztályozó- és javítóvizsga témakörei MATEMATIKA tantárgyból

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

2018, Funkcionális programozás

OOP: Java 1.Gy: Java alapok

2016/2017. Matematika 9.Kny

Számrendszerek. Bináris, hexadecimális

Intergrált Intenzív Matematika Érettségi

Komplex számok. (a, b) + (c, d) := (a + c, b + d)

Osztályozó- és javítóvizsga témakörei MATEMATIKA tantárgyból 2016 / tanév

TANMENET. Matematika

Komplex számok. Komplex számok és alakjaik, számolás komplex számokkal.

Nagy Gábor compalg.inf.elte.hu/ nagy

Megoldások. Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) 1. Számítsd ki a következő kifejezések pontos értékét!

2018, Funkcionális programozás

A Newton-Raphson iteráció kezdeti értéktől való érzékenysége

dimenziója Szirmay-Kalos László N= 1/r D D= (logn) / (log 1/r) D= (log4) / (log 3) = 1.26 N = 4, r = 1/3 Vonalzó ( l ) db r =1/3 N = 4 r 2 N 2 N m r m

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI EMELT SZINT Trigonometria

Analízis elo adások. Vajda István szeptember 10. Neumann János Informatika Kar Óbudai Egyetem. Vajda István (Óbudai Egyetem)

MATE-INFO UBB verseny, március 25. MATEMATIKA írásbeli vizsga

2019, Diszkrét matematika. 1. el adás

Matematika. Specializáció évfolyam

MATEMATIKA EMELT SZINTŰ SZÓBELI VIZSGA TÉMAKÖREI (TÉTELEK) 2012

MATEMATIKA TANMENET. 9. osztály. 4 óra/hét. Budapest, szeptember

Exponenciális és logaritmikus kifejezések Megoldások

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

MATEMATIKA TANMENET SZAKKÖZÉPISKOLA 9.A, 9.D. OSZTÁLY HETI 4 ÓRA 37 HÉT ÖSSZ: 148 ÓRA

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

MATEMATIKA ÉRETTSÉGI VIZSGA ÁLTALÁNOS KÖVETELMÉNYEI

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

A valós számok halmaza

2018, Funkcionális programozás

Sapientia Egyetem, Matematika-Informatika Tanszék.

DIGITÁLIS TECHNIKA I BINÁRIS SZÁMRENDSZER BEVEZETŐ ÁTTEKINTÉS BINÁRIS SZÁMRENDSZER HELYÉRTÉK. Dr. Lovassy Rita Dr.

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI EMELT SZINT Exponenciális és Logaritmikus kifejezések

Egyenletek, egyenlőtlenségek V.

Trigonometria Megoldások. 1) Igazolja, hogy ha egy háromszög szögeire érvényes az alábbi összefüggés: sin : sin = cos + : cos +, ( ) ( )

First Prev Next Last Go Back Full Screen Close Quit. Matematika I

Komplex számok. Wettl Ferenc szeptember 14. Wettl Ferenc Komplex számok szeptember / 23

Az osztályozó, javító és különbözeti vizsgák (tanulmányok alatti vizsgák) témakörei matematika tantárgyból

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI EMELT SZINT Exponenciális és Logaritmikus kifejezések

Osztályozó- és javítóvizsga. Matematika tantárgyból

Fraktálok. Klasszikus fraktálpéldák I. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék

Imperatív programozás

Nagy Gábor compalg.inf.elte.hu/ nagy

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Komputeralgebra Rendszerek

Vezérlési szerkezetek Vezérlési szerkezetek: feltételes elágazás és ciklusok

Diszkrét matematika I.

Az osztályozóvizsgák követelményrendszere 9. évfolyam

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

4. Fejezet : Az egész számok (integer) ábrázolása

Matematika 8. osztály

Matematika emelt szint a évfolyam számára

2016, Funkcionális programozás

Az Összetett hálózatok vizsgálata elektronikus tantárgy részletes követeleményrendszere

Diszkrét matematika 2. estis képzés

Átírás:

Diszkrét matematika 5. előadás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia 2018, őszi félév

Miről volt szó az elmúlt előadáson? Python alapfogalmak: függvények, paraméterátadás, a decimal modul számtartományok: irracionális számok, valós számok híresebb irracionális számok ( 2, π, e, φ) értéke a sin értéke az log értéke a k-ik gyök értéke: Newton módszerrel

Miről lesz szó? számtartományok: komplex számok másodfokú egyenlet komplex gyökei műveletek komplex számokkal: szorzat, hatványozás, stb fraktálok: Mandelbrot, Julia számrendszerek

Komplex számok A komplex számok a valós számhalmaz egy olyan bővítése, melyben negatív számok esetén is értelmezett a gyökvonás, halmazjelölés: C. három modell alapján is értelmezhető: halmazelméleti, geometriai, algebrai modell alapján halmazelméleti modell: C = {(a, b) a R, b R}, azaz a számhalmazt rendezett számpárok alkotják, ahol az elemek valós számok, imaginárius rész: az a komplex szám amelynek négyzete -1, jele az i a komplex számok a + bi alakban írhatóak fel, ahol a valós rész, b az imarinárius rész ha b = 0, akkor valós számot kapunk a valós számok körében megismert műveleti tulajdonságok megmaradnak additív semleges elem: z = 0 + 0i multiplikatív semleges elem: z = 1 + 0i additív inverz elem: z = a bi, multiplikatív inverz elem: 1/z = a/(a 2 + b 2 ) b/(a 2 + b 2 )i, z 0

Műveletek komplex számokkal Műveleti szabályok: a = a 1 + a 2i abs(a) = a1 2 + a2 2, a komplex szám nagysága b = b 1 + b 2i a + b = (a 1 + b 1) + (a 2 + b 2)i a b = (a 1 b 1) + (a 2 b 2)i a b = (a 1 b 1 a 2 b 2) + (a 2 b 1 + a 1 b 2)i 1 b 1 = b (b1 2 + b2 2 ) b 2 (b1 2 + b2 2 ) i a b = a 1 b http://www.welchlabs.com/resources/ (1)

Komplex számok Pythonban >>> a = complex(2, 4) >>> a.imag 4.0 >>> a.real 2.0 >>> abs(a) 4.47213595499958 >>> b = complex(1,10) >>> a + b (3 + 14j) >>> a - b (1-6j) >>> a * b (-38 + 24j) >>> a / b (0.4158415841584159-0.15841584158415842j)

Algoritmusok Pythonban 1. feladat Határozzuk meg egy másodfokú egyenlet gyökeit. import math def megyenlet2 (a, b, c): if a == 0: return egyenlet(b, c) delta = b*b - 4*a*c if delta < 0: valosr = -b / (2*a) imagr = math.sqrt( abs (delta)) / (2 * a) gy1 = complex(valosr, imagr) gy2 = complex(valosr, -imagr) return (gy1, gy2) if delta == 0: gy = -b/(2*a) return (gy, gy) if delta > 0: gy1 = (-b + math.sqrt(delta)) / (2*a) gy2 = (-b - math.sqrt(delta)) / (2*a) return ( gy1, gy2 )

Két komplex szám szorzata 2. feladat Határozzuk meg az a = a1 + a2i és b = b1 + b2i komplex számok szorzatát, ahol alkalmazzuk, hogy a b = (a 1 b 1 a 2 b 2) + (a 2 b 1 + a 1 b 2)i def szorzatc(a, b): a1, a2 = a b1, b2 = b vresz = a1 * b1 - a2 * b2 iresz = a2 * b1 + a1 * b2 return (vresz, iresz) >>> szorzatc((2.5, 5.4), (3.34, 101.5)) (-539.75, 271.786) >>> a = complex(2.5, 5.4) >>> b = complex(3.34, 101.5) >>> a * b (-539.75+271.786j)

Komplex számok hatványozása 3. feladat Határozzuk meg a n -t, ahol a = (a1, a2) egy komplex szám; alkalmazzuk a gyorshatványozás algoritmusát. def my_powc (a, n): res = (1, 0) while True: if n % 2 == 1: res = szorzatc(res, a) if n == 1: break a = szorzatc(a, a) n = n // 2 return res >>> my_powc((2.5, 5.4), 3) (-203.07500000000002, -56.21400000000003) >>> a = complex(2.5, 5.4) >>> pow(a, 3) (-203.07500000000002-56.21400000000003j)

Mandelbrot fraktál Fraktálok: kiindulva egy komplex számból, egy iterációs folyamat eredményeként a képernyőre kirajzolt pontok fraktál alakzatokat hozhatnak létre minél nagyobb az iteráció szám, annál jobb a kirajzolt kép minősége a Mandelbrot halmaz iterációs képlete: z 0 = c z n+1 = (z n) 2 + c, ahol a c komplex szám értéket a programozó álĺıtja be a Mandelbrot halmaz azokat a c komplex számokat fogja tartalmazni, amelyekre a z n sorozat nem tart a végtelenbe, a z n sorozat a végtelenbe tart, ha az abszolútértéke nagyobb lesz mint 2.

Algoritmusok Pythonban 4. feladat Határozzuk meg a Mandelbrot halmaz elemeit. Egy halmazbeli elem esetén rajzoljunk #-t a képernyőre, másképp space-t. def fman(): L1 = [a*0.07 for a in range (-15, 16)] L2 = [a*0.04 for a in range (-50, 26)] for y in L1: L = "" for x in L2: c = complex(x, y) z = c for i in range (40): z = z ** 2 + c if abs(z) > 2: L += " " break if abs(z) <= 2: L += "#" print (L)

Julia fraktál 5. feladat Határozzuk meg a Julia halmaz elemeit. A Julia halmaz iterációs képlete ugyanaz, mint a Mandelbrot halmazé, azzal a különbséggel, hogy a c értéke itt konstans, legyen c = 1 0.25i. def fjulia(): L1 = [a*0.07 for a in range (-15, 16)] L2 = [a*0.04 for a in range (-40, 36)] c = complex (-1, -0.25) for y in L1: L = "" for x in L2: z = complex(x, y) for i in range (40): z = z ** 2 + c if abs(z) > 2: L += " " break if abs(z) <= 2: L += "#" print (L)

Megjegyzések az L1, L2 intervallumokat módosíthatjuk, a kirajzolt alakzat nagyobb lesz: L1 = [a*0.05 for a in range (-20, 21)] L2 = [a*0.02 for a in range (-80, 31)] a grafikus megjelenítéshez használjuk a pygmae csomagot (lehet mást is): http://www.pygame.org/download.shtml a grafikus megjelenítés forrása: http://fractalart.gallery/mandelbrot-set-in-python-pygame

Mandelbrot fraktál, grafikus megjelenítés from pygame.locals import * import pygame def mainma(): width, height = 600, 600 screen = pygame.display.set_mode((width,height),doublebuf) xaxis = width / 1.5 yaxis = height / 2 scale = 190 iterations = 40 for iy in range(height): for ix in range(width): c = complex((ix - xaxis)/scale, (iy - yaxis)/scale) z = c

Mandelbrot fraktál, grafikus megjelenítés for i in range(iterations): z = z**2 + c if abs(z) > 2: color = (255, 255, 255) break #end for if abs(z) <= 2: color = (0, 0, 0) screen.set_at((ix, iy), color) screen.set_at((ix, height - iy), color) #end for, for pygame.display.update() while True: event = pygame.event.poll() if (event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE)): break #end def mainma() pygame.quit()

Mandelbrot fraktál

Julia fraktál, grafikus megjelenítés from pygame.locals import * import pygame def mainju(): width, height = 600, 600 screen = pygame.display.set_mode((width,height),doublebuf) xaxis = width / 2 yaxis = height / 2 scale = 170 iterations = 40 c = complex (0, -0.8) for iy in range(height): for ix in range(width): z = complex((ix - xaxis)/scale, (iy - yaxis)/scale) for i in range(iterations): z = z**2 + c if abs(z) > 2.0: color = (i%16, i%16*8, i%16*16) break #end for

Julia fraktál, grafikus megjelenítés if abs(z) <= 2: color = (0, 0, 0) screen.set_at((ix, iy), color) screen.set_at((width, height), color) #end for, for pygame.display.update() while True: event = pygame.event.poll() if (event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE)): break #end def mainju() pygame.quit()

Julia fraktál c = complex (0, -0.8) if abs(z) > 2.0: color = (i%16, i%16*8, i%16*16) break if abs(z) <= 2: color = (0, 0, 0)

Julia fraktál c = complex (-0.824, -0.17711) if abs(z) > 2.0: v = 765*i /40 if v > 510: color = (255, 255, v%255) elif v > 255: color = (255, v%255, 0) else: color = (v%255, 0, 0) if abs(z) <= 2: color = (0, 0, 0)

Julia fraktál További c értékek a Julia fraktálhoz: c = complex (0.285, 0.013) c = complex (-0.295, -0.55) c = complex (-0.63, -0.407) c = complex (-0.624, 0.435) c = complex (-1, -0.25) c = complex (-1, -0)

Számrendszerek egész számok: bármely 1-nél nagyobb számrendszerben ábrázolhatóak, a számítástechnikában gyakran használt számrendszerek: 10, 2, 8, 16, 256, 2-es számrendszer: bináris számrendszer, 8-as számrendszer: oktális számrendszer, 16-os számrendszer: hexadecimális számrendszer, legyen n az a szám, amit átszeretnénk írni b számrendszerbe, ekkor, Z -al jelölve a nem negatív egész számok halmazát: n = a k b k + a k 1 b k 1 + + a 1b 1 + a 0b 0, ahol k Z, a i Z, és a i < b, minden i {0,..., k} értékre és a k 0, 2-es számrendszerben 2 szimbólum van: 0, 1, 16-os számrendszerben 16 szimbólum van: 0, 1, 2,..., 9, A, B, C, D, E, F, 256-os számrendszerben 256 szimbólum van.

Számrendszerek, példák 2-es számrendszerben 2 szimbólum van: 0, 1, Pl. Mennyi (215) 10, 2-es számrendszerbeli alakja? fennáll: 215 = 128 + 64 + 16 + 4 + 2 + 1 = 1 2 7 + 1 2 6 + 0 2 5 + 1 2 4 + 0 2 3 + 1 2 2 + 1 2 1 + 1 2 0. tehát: (215) 10 = (1101 0111) 2. Pl. (1 0111 0010) 2, melyik 10-es számrendszerbeli számnak felel meg? fennáll: 1 2 8 + 0 2 7 + 1 2 6 + 1 2 5 + 1 2 4 + 0 2 3 + 0 2 2 + 1 2 1 + 0 2 0 = 256 + 64 + 32 + 16 + 2 = 370. tehát: (1 0111 0010) 2 = (370) 10.

Számrendszerek, példák 8-as számrendszerben 8 szimbólum van: 0, 1, 2, 3, 4, 5, 6, 7. Pl. Mi (215) 10, 8-as számrendszerbeli alakja? fennáll: 215 = 3 8 2 + 2 8 1 + 7 8 0 tehát: (215) 10 = (327) 8. Pl. (6702) 8, melyik 10-es számrendszerbeli számnak felel meg? fennáll: 6702 = 6 8 3 + 7 8 2 + 0 8 1 + 2 8 0 = 3072 + 448 + 2 = 3522. tehát: (6702) 8 = (3522) 10.

Számrendszerek, példák 16-as számrendszerben 16 szimbólum van: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Pl. Mi (7432) 10, 16-os számrendszerbeli alakja? fennáll: 7432 = 1 16 3 + 13 16 2 + 0 16 1 + 8 16 0 tehát: (7432) 10 = (1D08) 16. Pl. (E2D07) 16, melyik 10-es számrendszerbeli számnak felel meg? fennáll: E2D07 = 14 16 4 + 2 16 3 + 13 16 2 + 0 16 1 + 7 16 0 = 917504 + 8192 + 3328 + 7. tehát: (E2D07) 16 = (929031) 10.

Algoritmus: 10-es számrendszerből b számrendszerbe n-et elosztjuk b-vel, legyen az osztási egész rész q 0, a maradék a 0, ekkor fennáll: n = b q 0 + a 0, ahol 0 a 0 < b. q 0-ot elosztjuk b-vel, legyen az osztási egész rész q 1, a maradék a 1, ekkor fennáll : q 0 = b q 1 + a 1, ahol 0 a 1 < b. addig folytatjuk az osztást, amíg 0 osztási egész részt kapunk, a osztási folyamat során előállt maradékok alkotják a b számrendszerbeli számjegyeket: a k, a k 1,... a a, a 0 Pl. Alakítsuk át 7432-t 16-os számrendszerbe: 7432 = 464 16 + 8 464 = 29 16 + 0 29 = 1 16 + 13 1 = 0 16 + 1

Algoritmusok Pythonban 6. feladat Írjunk programot, amely átalakít egy számot 10-es számrendszerből b számrendszerbe. Az eredmény egy lista típusú adat lesz, amely tartalmazza a b számrendszerbeli számjegyeket. def conv_10b(nr, b): L = [] while nr > 0: L = [nr % b] + L nr = nr // b return L >>> conv_10b(14, 2) [1, 1, 1, 0] Ha az L = [nr % b] + L sor helyett az L = L + [nr % b] sort írjuk, akkor fordított sorrendet kapunk.

Algoritmusok Pythonban Ha az eredményt stringként akarom kezelni: def conv_10bstr(nr, b): L = while nr > 0: L = + str(nr % b) + L nr = nr // b return L >>> conv_10bstr(53428, 16) 13 0 11 4 >>> conv_10bstr(53428, 2) 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0