Matematikai alapok. Dr. Iványi Péter



Hasonló dokumentumok
Matematikai alapok. Dr. Iványi Péter

Assembly Matematika Assembly-ben. Iványi Péter

Információs Technológia

Máté: Számítógép architektúrák

Digitális technika VIMIAA01

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

INFORMATIKA MATEMATIKAI ALAPJAI

2015, Diszkrét matematika

Feladat: Hogyan tudunk létrehozni egy olyan vector nevű tömb típust, amely egy háromdimenziós térbeli vektort reprezentál?

Kódolás, hibajavítás. Tervezte és készítette Géczy LászlL. szló 2002

Máté: Számítógép architektúrák

3. Gyakorlat Ismerkedés a Java nyelvvel

Analízis 1. (BSc) vizsgakérdések Programtervez informatikus szak tanév 2. félév

Programozás 3. Dr. Iványi Péter

A meteorológia az időjárás tudománya

Mintavételezés: Kvantálás:

Vektorok. Octave: alapok. A fizika numerikus módszerei I. mf1n1a06- mf1n2a06 Csabai István

Számítógép architektúra kidolgozott tételsor

Analóg és digitális jelek. Az adattárolás mértékegységei. Bit. Bájt. Nagy mennyiségû adatok mérése

Véletlenszám generátorok

6. előadás. Matlab 1. (Ismerkedés, környezet, adattípusok) Dr. Szörényi Miklós, Dr. Kallós Gábor. Széchenyi István Egyetem

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

Analízis előadás és gyakorlat vázlat

2. Digitális hálózatok...60

3. gyakorlat. Kettes számrendszer: {0, 1} Tízes számrendszer: {0, 1, 2,..., 9} 16-os (hexadecimális számrendszer): {0, 1, 2,..., 9, A, B, C, D, E, F}

Mintavételes szabályozás mikrovezérlő segítségével

Matematika emelt szint a évfolyam számára

2. Hatványozás, gyökvonás

XIII. Bolyai Konferencia Bodnár József Eötvös József Collegium, ELTE TTK, III. matematikus. A véletlen nyomában

8. Mohó algoritmusok Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

C programnyelv 1. Kedves Kollegina, Kolléga!

Nevezetes függvények

Analízisfeladat-gyűjtemény IV.

3. SZÁMÍTÁSOK HIBÁI BEVEZETÉS A NUMERIKUS MÓDSZEREKBE

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

E-Laboratórium 1 Kombinációs digitális áramkörök alkalmazása Elméleti leírás

Assembly programozás: 2. gyakorlat

E7-DTSZ konfigurációs leírás

Adatbázisok* tulajdonságai

5. Fejezet : Lebegőpontos számok

Adattípusok. Max. 2GByte

Tanmenetjavaslat a 6. osztályos matematika kísérleti tankönyvhöz

Mesterséges Intelligencia I. (I602, IB602)

Bevezetés a C++ programozásba

MATEMATIKA TAGOZAT 5-8. BEVEZETŐ. 5. évfolyam

XXI. Országos Ajtonyi István Irányítástechnikai Programozó Verseny

Adattípusok. Max. 2GByte

Természetes számok: a legegyszerűbb halmazok elemeinek. halmazokat alkothatunk, ezek elemszámai természetes 3+2=5

Hossó Aranka Márta. Matematika. pontozófüzet. a speciális szakiskola osztálya számára összeállított. Felmérő feladatokhoz. Novitas Kft.

Bevezetés a programozásba. 12. Előadás: 8 királynő

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

MATEMATIKA ÉVFOLYAM

C# gyorstalpaló. Készítette: Major Péter

Kifejezések. Kozsik Tamás. December 11, 2016

Számítógépes Hálózatok. 6. gyakorlat

Erdélyi Magyar TudományEgyetem (EMTE

Matematikai programozás gyakorlatok

Matematika. Specializáció évfolyam

INFO1 Számok és karakterek

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

3. Hőmérők elkészítése

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Fixpontos és lebegőpontos DSP Számrendszerek

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Gábor Dénes Főiskola Győr. Mikroszámítógépek. Előadás vázlat. 2004/2005 tanév 4. szemeszter. Készítette: Markó Imre 2006

INFORMATIKAI ALAPISMERETEK

Alapfogalmak. Dr. Kallós Gábor A Neumann-elv. Számolóeszközök és számítógépek. A számítógép felépítése

Vektorugrás védelmi funkció blokk

Az INTEL D-2920 analóg mikroprocesszor alkalmazása

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

MATEMATIKA 9. osztály Segédanyag 4 óra/hét

TSZA-04/V. Rendszerismertető: Teljesítmény szabályzó automatika / vill

5. Fejezet : Lebegőpontos számok. Lebegőpontos számok

A 3D képgenerálás komplexitása

23. ISMERKEDÉS A MŰVELETI ERŐSÍTŐKKEL

Matematika Tanszék MOE (PE MIK) MMAM143VB 1 / 34

Fizika InfoRmatika Kémia Alapok. Az Erdélyi Magyar Műszaki Tudományos Társaság kiadványa. Megjelenik kéthavonta (tanévenként 6 szám)

2) = 0 ahol x 1 és x 2 az ax 2 + bx + c = 0 ( a,b, c R és a 0 )

7. Szisztolikus rendszerek (Eberhard Zehendner)

Digitális Rendszerek és Számítógép Architektúrák

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

A C# PROGRAMOZÁSI NYELV

Informatikai Rendszerek Alapjai

Nemzeti alaptanterv 2012 MATEMATIKA

Bevezetés a mikrovezérlők programozásába: WS2812 RGB LED-ek vezérlése

Labor gyakorlat Mikrovezérlők

A 2011/2012. tanévi FIZIKA Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai és megoldásai fizikából. I.

INFORMATIKAI ALAPISMERETEK

Visszatérítő nyomaték és visszatérítő kar

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk

Máté: Számítógép architektúrák

FIR SZŰRŐK TELJESÍTMÉNYÉNEK JAVÍTÁSA C/C++-BAN

Labor gyakorlat Mikrovezérlők

2019/02/11 10:01 1/10 Logika

1. Kombinációs hálózatok mérési gyakorlatai

HELYI TANTERV MATEMATIKA (emelt szintű csoportoknak) Alapelvek, célok

Programozás 5. Dr. Iványi Péter

REKURZIÓ. Rekurzív: önmagát ismétlő valami (tevékenység, adatszerkezet stb.) Rekurzív függvény: függvény, amely meghívja saját magát.

ELŐADÁS SZÁMÍTÓGÉP MŰKÖDÉSE FIZIKA ÉS INFORMATIKA

Átírás:

Matematikai alapok Dr. Iványi Péter

Számok A leggyakrabban használt adat típus Egész számok Valós számok

Bináris számábrázolás Kettes számrendszer Bitek: 0 és 1 Byte: 8 bit 128 64 32 16 8 4 2 1 1 1 1 1 1 1 1 1 bináris decimális 1111 1111 = 1+2+4+8+16+32+64+128 = 255

Egész számok Egész szám (integer): 4 byte (32 bites processzorokon) Maximum: 2147483647 Minimum: -2147483648

Boolean algebra Bináris számok között műveletek NOT (igazságtábla) A NOT(A) 1 0 0 1 Példa: NOT(1011) 0100

Boolean algebra AND: csak akkor igaz ha mindkét bit igaz Példa: A B A AND B 0 0 0 0 1 0 1 0 0 1 1 1 1010 AND 1000 1000

Boolean algebra OR: akkor igaz ha az egyik bit igaz Példa: A B A OR B 0 0 0 0 1 1 1 0 1 1 1 1 1010 AND 1000 1010

XOR: exkluzív OR Példa: Boolean algebra A B A XOR B 0 0 0 0 1 1 1 0 1 1 1 0 1010 AND 1000 0010

Boolean algebra Bármilyen boolean művelet definiálható AND és OR műveletekkel, például A B A XOR B 0 0 0 0 1 1 1 0 1 1 1 0 Csak az igaz eredményeket kell összekapcsolni: (A=0 AND B=1) OR (A=1 AND B=0)

Lebegőpontos számok Folytonos Diszkrét matematika Számok bináris ábrázolása IEEE 754 float: 32 biten van ábrázolva Ez azt jelenti, hogy 2 32 valós számot lehet pontosan reprezentálni Ezzel szemben végtelen sok valós szám van Ábrázolható tartomány: ±1.40129846432481707e-45 ±3.40282346638528860e+38

32 bit: Lebegőpontos számok s : előjel bit (1 bit) e : exponenciális kitevő (8 bit) m : mantissza (23 bit) ( 1) s m 2 ( e 127) seeeeeeeemmmmmmmmmmmmmmmmmmmmmm 31 0

Lebegőpontos számok m mantissza: (0-22 bit) 210-1 = 0.2 10 0 = 0.02 10 1 ugyanaz ezért normalizálva van az érték, mint bináris tört Bináris törtek 0.1101 = 1/2 + 1/4 + 1/16 = 13/16 = 0.825 Nem minden szám reprezentálható: 0.1 = 1/16 + 1/32 + 1/256 + 1/512 + 1/4096 + 1/8192 +... vagyis az első 23 bitet használjuk csak, a maradékot eldobjuk 0.000110011001100110011...

Lebegőpontos számok Mantissza a tizedes ponttól jobbra levő rész Automatikusan feltételezünk egy 1-est a tizedes pont előtt 1.mmmmm... De így hogyan reprezentálhatjuk a zérust: Ha minden bit zérus De akkor hogyan representáljuk 1.0 et, hiszen a tizedes pont előtti 1-et automatikusan feltételezzük

Lebegőpontos számok Megoldás: az exponenciális biteket 127-et módosítjuk e kitevő: (30-23 bit) 5 esetén: 127 + 5 = 132 binárisan 10000101-5 esetén 127 5 = 122 binárisan 01111010

Lebegőpontos számok Egy példa a lebegőpontos szám ábrázolásra: 0.085: bits: 31 30-23 22-0 binary: 0 1111011 01011100001010001111011 decimal: 0 123 3019899 2 e-127 (1 + m / 2 23 ) = 2-4 (1 + 3019899/8388608) = 11408507/134217728 = 0.085000000894069671630859375

Lebegőpontos számok Speciálisan reprezentált számok: Minusz végtelen (-inf): ha az összes exponenciális bit 1 előjel bit 1 Plusz végtelen (+inf): ha az összes exponenciális bit 1 előjel bit 0 NaN : Not a Number ha az összes exponenciális bit 1 valamelyik mantissza bit 1

Lebegőpontos számok binary: 0 1111111 0000000000000000000000 decimális: 1 binary: 0 1111110 0000000000000000000000 decimális: 0.5

Pontosság és teljesség Két különböző fogalom Pontosság: Az érték mennyire van közel a valódi értékhez Teljesség: Mennyi információ van az adott értékről

Pontosak Egész számok Ha van egy kettes számom és ahhoz egyet hozzáadok, akkor biztos hogy hármat fogok kapni Bármilyen műveletet végzünk és az értelmezési tartományba esik a válasz, akkor mindig pontos értéket kapunk Ugyanakkor nem teljesek, abban az értelemben, hogy nem képesek például a tört részeket reprezentálni

Lebegőpontos számok Fordított helyzet Teljesek: Önkényesen soha nem hagynak el információt a számról Elvileg minden számot tudnak reprezentálni ha elég bit áll rendelkezésre De nem pontosak Kerekítési hiba (Roundoff error) Kioltó hiba (Cancelation error)

Kerekítési hiba #include <stdio.h> int main() { double x1 = 0.3; double x2 = 0.1 + 0.1 + 0.1; double x3 = 0.5; double x4 = 0.1 + 0.1 + 0.1 + 0.1 + 0.1; } printf("%.20f\n", x2); if(x1 == x2) printf("egyenlo\n"); else printf("nem egyenlo\n"); printf("%.20f\n", x4); if(x3 == x4) printf("egyenlo\n"); else printf("nem egyenlo\n"); return(0);

A futtatás eredménye: Kerekítési hiba $ num3.exe 0.30000000000000004441 nem egyenlo 0.50000000000000000000 egyenlo

Kerekítési hiba Négyzetgyök számítása Newton módszerrel double EPSILON = 0.0; double t = c; while (t*t - c > EPSILON) t = (c/t + t) / 2.0; Azt várjuk hogy mindig: t 2 c >

Kerekítési hiba #include <stdio.h> int main() { double eps = 0.0; double c = 4.0; /* bemenet */ double t = c; while(t*t - c > eps) { t = (c/t + t) / 2.0; } printf("%f\n", t); return(0); }

Kerekítési hiba c=4.0 c=10.0 a program a helyes eredményt adja esetén a program végtelen ciklusba kerül A program elvileg akkor ér véget ha t 2 valójában t 2 < c esetén áll le. = c,de Ugyanakkor a folytonos matematika garantálja, hogy ez nem következhet be!!! Oka: kerekítési hiba

Lebegőpontos számok Kernighan és Plauger: A lebegőpontos számok olyanok mint egy kupac homok. Amikor elmozdítunk egy kicsit, el is veszítünk egy kicsit és csak piszok marad a kezünkben.

#include <stdio.h> Kioltó hiba int main() { double x1 = 10.000000000000004; double x2 = 10.000000000000000; double y1 = 10.00000000000004; double y2 = 10.00000000000000; double z = (y1 - y2) / (x1 - x2); printf("%f\n", z); return(0); }

Kioltó hiba A várt eredmény: 0.000000000000004 / 0.00000000000004 = 10.0 A kapott eredmény 11.5

Stabilitás Egy matematikai probléma jól kondicionált ha a bemeneti paraméterek kis változására az eredmény is mértékben változik. Egy algoritmus numerikusan stabil ha bemeneti paraméterek kis változására az eredmény is kis mértékben változik. A művészet és tudomány az, hogy numerikusan stabil algoritmusokat találjunk jól kondicionált problémák megoldására.

Stabilitás A pontosság függ a probléma kondicionáltságától és az algoritmus stabilitásától. Pontatlanságot okozhat, ha: Stabil algoritmust alkalmazunk rosszul kondicionált problémára; vagy Instabil algoritmust alkalmazunk jól kondicionált problémára

Instabilitás Probléma: az f(x) = exp(x) függvény Jól kondicionált probléma Algoritmus: a Taylor sorozat első négy elemét használjuk g(x) = 1 + x + x 2 / 2 + x 3 / 3 f(1) = 2.718282 g(1) = 2.666667

Instabilitás Ha x < 0 akkor az algoritmus instabil!!! De ha az e -x függvény Taylor sorát vesszük az már stabil lesz.

Rosszul kondicionáltság x n 2 = ( R + 1) xn 1 R ( xn 1) Vegyük a fenti egyenletet Kezdő érték: x 0 = 0.5 R=3 100 iterációt futtatunk A műveleteket többféleképpen csoportosítjuk

Rosszul kondicionáltság n (R+1)x-R(xx) (R+1)x-(Rx)x ((R+1)-(Rx))x x + R(x-xx) pontos 50 0.0675670955 0.0637469566 0.0599878799 0.0615028942 0.0622361944 100 0.0000671271 0.1194574394 1.2564956763 1.0428230334 0.7428865400 Négy különböző értéket kaptunk!!! Az összeadás, szorzás, kivonás stabil, de A probléma rosszul kondicionált. Ha R > 2.57 az egyenlet kaotikus!

Hibák az életben

Ariane 5 European Space Agency 10 év, 7 billió dollárba került a fejlesztés 1996 június 4-én felrobbant A rakéta és terhének összértéke: 500 millió dollár Ok: Szoftver, numerikus hiba

Ariane 5 Az irányító rendszer 36.7 másodperccel a fellövés után a rakéta oldal irányú sebességét reprezentáló számot próbálta konvertálni, egy 64 bites számot 16 bites formátumra A rendszert leállítja magát, mert érvénytelen adatot kap. A másodleges rendszer is leáll, hiszen ugyanaz a szoftver. Az irányító rendszer így hibás utasítást ad, mintha egy nem létező fordulatot kellene kompenzálni. A rakéta hirtelen irányt váltott (bár nem volt rá szükség) Olyan erők ébredtek melyre az önmegsemmisítés bekapcsolt 39 másodperccel a fellövés után

Patriot rakéta 1991 február 25, Öböl háború Patriot nem tudta eltalálni az iraki Scud rakétát 28 katona halt meg és 100 sérült meg Ok: Szoftver, numerikus hiba

Patriot rakéta Az egy tized másodpercekben mért időt a rendszer 1/10 el szorozta meg hogy másodpercekben kapja meg az időt Az adatot 24 biten reprezentálta 1/10 et nem lehet pontosan reprezentálni binárisan, így a 24. bit utáni rész levágódik. Ez egy kerekítési hiba. Sokszor elvégezve a szorzást a hiba növekszik: 100 órás üzem esetén az eltérés: 0.34 másodperc

Patriot rakéta Scud sebessége: 1.676 m/s Így több mint fél kilómétert tesz meg a Scud 0.34 másodperc alatt