1 / 15

Matematikai algoritmusok

Matematikai algoritmusok. Kocsis Imre Illyés Gyula Gimnázium Dombóvár. Sir Isaac Newton 1642 - 1727. Alexandriai Euklidész k.e . 300 körül. Eratoszthenész k.e . 276 – k.e . 194. „A geometriához nem vezet királyi út.” ( Euklidész ). „ Ha valaha is messzebb láthattam az azért lehetett,

keiji
Download Presentation

Matematikai algoritmusok

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Matematikai algoritmusok Kocsis Imre Illyés Gyula Gimnázium Dombóvár Sir Isaac Newton1642 - 1727 Alexandriai Euklidészk.e. 300 körül Eratoszthenészk.e. 276 – k.e. 194 „A geometriához nem vezet királyi út.”(Euklidész) „Ha valaha is messzebb láthattam az azért lehetett, mert óriások vállán álltam.” (Newton) „Aki azt mondja, nem szereti a matematikát, az tulajdonképpen azt mondja, nem szeret gondolkozni.”(Rényi Alfréd) „A semmiből egy új, más világot teremtettem.”(Bolyai János)

  2. Válaszd ki valamelyik algoritmust! Az eratoszthenészi szita Az euklideszi algoritmus Newton gyökvonó algoritmusa A vetítés vége

  3. A prímszámok előállításának ma is használt módszere Eratoszthenész görög matemati-kustól származik. Az elnevezés utal az eljárás lényegére, mivel az 1-től n-ig felírt egész számok közül „kiszitáljuk” az összetett számokat. Amely számok fennmaradnak a „szitán” (az 1 kivételével) azok a prímek. Az eratoszthenészi szita Az eljárás: Írjuk fel a számokat 1-től n-ig, (itt például 100-ig) egyesével. Keressük meg az első olyan 1-nél nagyobb számot, amelyik még nincs sem kihúzva, sem bekarikázva. Elsőként ez a 2. Ezután húzzuk ki ennek többszöröseit, őt pedig karikázzuk be. Ismételjük meg a második lépéstől újra az eljárást. Természetesen egy összetett szám többször is kihúzásra kerülhet. Az algoritmus akkor álljon le, ha a második lépésnél talált szám négyzete már nagyobb, mint n. Nyilván elegendő csupán az 1 és közötti p prímekkel elvégezni a szitálást, mivel ha valamely a szám n-nél kisebb és összetett, akkor van -nél kisebb prím osztója. A 6. pont bizonyítása: Tehát beláttuk, hogy egy szám osztópárjai közül a nem nagyobb, legfeljebb akkora, mint a szám négyzetgyöke!

  4. Kattints a 3-ra Kattints az 5-re Kattints a 7-re Az algoritmus bemutatása Kattints a 2-re Készen vagyunk: megtaláltuk 100-ig a prímszámokat!

  5. Az algoritmus gyakorlása Gyakorlás módban a „szitálásra” alkalmas szám kiválasztása után a többszörösein kattints!(n és k maximuma 10)

  6. C++ nyelvű program voidprim(int n) { int* termszamok; termszamok=new int[n]; for (int i=0; i!=n; i++) //az n elemű tömb feltöltése a természetes számokkal { termszamok[i]=i; } termszamok[1]=0; // Az 1 nem prím float r=n; //elegendő az n gyökéig vizsgálni floatgyok=sqrt(r); for (int i=2; i<gyok; i++) { j=i; if (j<n && termszamok[j]!=0) { while (j+i<n) // i többszöröseit sorban kinullázzuk { j=j+i; termszamok[j]=0; // A tömb nem 0 elemei éppen a prímek } } delete[] termszamok; } Az algoritmus kódolása Pszeudokód ciklus i=0-tól n-ig termszamok[i]=i termszamok[1]=0, mert az 1 nem prím ciklus i=2-től az n szám gyökéig) { j=i; Ha j<n ÉS termszamok[i] nem 0 { ciklus amíg j+i<n { j=i+i termszamok[j]=0 } }} Feladatok: Mutassuk meg, hogy n szám prímtényezős felbontásában legfeljebb log2n tényező szerepel! Bizonyítsuk be, hogy tetszőleges pozitív egész k szám esetén létezik k darab egymás után következő összetett szám! Vissza a menühöz!

  7. Az egyik legismertebb ókori algoritmus. Euklidész írta le a módszert két természetes szám legnagyobb közös osztójának meghatározására. Ezt a módszert nevezzük Euklideszi algoritmusnak. Euklideszi algoritmus A maradékok szigorúan monoton csökkenő sorozata A maradék véges sok lépés után nulla lesz, hiszen amíg nem nulla, addig minden lépésben legalább eggyel csökkenni fog, tehát az utolsó lépésnél: A keresett legnagyobb közös osztó rn azaz az utolsó nem 0 maradék.

  8. Az algoritmus helyességének bizonyítása Az a és b bármely közös osztója osztja az r1-et is hiszen és két szám közös osztója a különbségüket is osztja Hasonlóan b és r1 bármely közös osztója osztja a-t is és két szám közös osztója az összegüket is osztja hiszen Ezekből következik, hogy a és b közös osztói megegyeznek b és r1 közös osztóival, és így a legnagyobb közös osztójuk is azonos: (a, b) = (b, r1) Ez a gondolatmenet minden lépésre ugyanígy megismételhető, azaz mivel: Az előzőek alapján tehát:

  9. Az Euklideszi algoritmus működése 1. lépés: a nagyobbat osztjuk a kisebbel maradékosan További lépések: az osztót osztjuk tovább a maradékkal a = 174 osztandó b = 96 osztó hányados maradék 174: 96 174 96 96 1 78 78 1 18 18 78 96: 78 4 6 6 18 78: 18 A végét jelzi 18: 6 3 0 A két szám legnagyobb közös osztója az utolsó nem 0 maradék: 6

  10. Az algoritmus gyakorlása Gyakorold, és ellenőrizd a munkádat!

  11. Folyamatábra Pszeudokód Pascal nyelvű program Az algoritmus kódolása program euklidesz;usescrt;var a, b, m : integer;beginclrscr;write('Kérem az a számot: ');readln(a);write('Kérem a b számot: ');readln(b);while (b<>0) dobegin     m:=a mod b;     a:=b;     b:=m;  end;writeln('LNKO(a,b) = ',a);readln;end. ELJÁRÁS euklidesz  BE: a, b  CIKLUS AMÍG b<>0    m:=a mod b    a:=b    b:=m  CIKLUS VÉGE  KI: aELJÁRÁS VÉGE Ki: a Be: a, b hamis b <> 0 m:= a mod b a:= b b:=m igaz Feladatok: Mutassuk meg, hogy az euklideszi algoritmus akár két lépésben befejeződhet még olyankor is, amikor az L.N.K.O. 1! Bizonyítsuk be, hogy az euklideszi algoritmus két egymás utáni lépésében a két szám szorzata legalább felére csökken! Bizonyítsuk be, hogy az a és b számok L.N.K.O.-ját az algoritmus legfeljebb log2a+log2b lépés után megadja! Vissza a menühöz!

  12. A Newton módszer egy approximációs (közelítés; ismeretlen mennyiségnek közelítő pontossággal történő meghatározására szolgáló eljárás) eljárás, amelynek alapvető ötlete, hogy a függvény egyik x*gyökéhez „közeli” x0 pontot ismerve próbálja meghatározni az f(x) függvény egy x* gyökét. Newton-féle gyökvonó algoritmus A kezdő becslésünk legyen x0, majd a P0(x0; f(x0)) pontban húzzunk érintőt a görbéhez. Ez az x tengelyt az x1 pontban metszi. Ez az x1 már jobb közelítésnek látszik, mint az x0 volt. Ezután húzzunk újabb érintőt a P1(x1; f(x1)) pontban. Ez az x tengelyt az x2 pontban metszi. És így tovább. A kapott x0, x1, x2,… pontok egyre jobb közelítései lesznek az x* gyöknek. Hogyan közelítsük meg az x* gyököt egyre jobban?

  13. Az x1x0P0 háromszögben: Ez a görbe P0 ponthoz tartozó érintőjének az iránytangense. Ez pedig az f függvény differenciálhányadosának az értéke az x0 helyen: Newton nevezetes képlete A két egyenletből: Átrendezve: Ezt a további lépésekre is alkalmazva: A végén Newton nevezetes formulája általánosan:

  14. A négyzetgyök „a” meghatározása Az előző eredményünket alkalmazzuk a meghatározására Tehát az alkalmazandó Newton-képletben a jobboldal: A szükséges indexeket is kitéve a teljes egyenlet: Átalakítva: Legyen a=2, ekkor x0=2, és: Négyzetük sorban: Egyre közelebb van a 2-höz!

  15. Az algoritmus kódolása Folyamatábra Pszeudokód Pascal nyelvű program program newton;usescrt;var a, x, p : real;beginclrscr;write(‘Kérem az a-t: ');readln(x);write('Mi legyen a pontosság: ');readln(p);  x:=1;while (abs(x-(a/x))>p) dobegin    x:=(x+a/x)/2;  end;writeln(‘az „a” gyöke = ',x);readln;end. ELJÁRÁS newton_gyökvonás  BE: a, pontosság  x:=1  CIKLUS AMÍG abszolútérték(x-a/x) > pontosság     x:=(x+a/x)/2  CIKLUS VÉGE  KI: xELJÁRÁS VÉGE Ki: x Be:a, p |x-a/x|>p hamis X:=(x+a/2)/2 igaz X:=1 Feladatok: Hasonló módon határozzuk meg a négyzetgyök 5 közelítő értékét! Határozzuk meg a köbgyök 2 közelítő értékét! Vissza a menühöz!

More Related