Komputeralgebra Rendszerek Számkezelés Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék 2015. február 24. TARTALOMJEGYZÉK 1 of 53
TARTALOMJEGYZÉK 1 TARTALOMJEGYZÉK 2 Az egzakt aritmetika Bignum aritmetika Néhány szó a típusokról Egészek Racionális számok A köztes tárrobbanás 3 Valós számok A MAPLE valósai A SAGE valósai 4 Algebrai számok Algebrai számok a MAPLE -ben Algebrai számok a SAGE -ben 5 Komplex számok Komplex számok a MAPLE -ben Komplex számok a SAGE -ben TARTALOMJEGYZÉK 2 of 53
BIGNUM ARITMETIKA A komputeralgebra rendszerek az aktuálisan használt matematikai struktúrában pontosan számolnak; ez a tetszőleges pontosságú aritmetika, vagy többszörös pontosságú aritmetika. A begépelt számról. esetleg kifejezésről a forma alapján azonnal eldöntik, mely struktúrába 1 tartoznak. 1 Ez a MAPLE esetén többnyire egész-, racionális-, vagy komplex szám lehet,vagy efölötti polinom SAGE esetén egész- vagy racionális szám, vagy a szimbolikus gyűrű egy eleme Az egzakt aritmetika 3 of 53
BIGNUM ARITMETIKA A komputeralgebra rendszerek az aktuálisan használt matematikai struktúrában pontosan számolnak; ez a tetszőleges pontosságú aritmetika, vagy többszörös pontosságú aritmetika. A begépelt számról. esetleg kifejezésről a forma alapján azonnal eldöntik, mely struktúrába 1 tartoznak. A műveleteket az adott struktúrában hajtják végre (figyelembe véve a tartalmazási relációkat). 1 Ez a MAPLE esetén többnyire egész-, racionális-, vagy komplex szám lehet,vagy efölötti polinom SAGE esetén egész- vagy racionális szám, vagy a szimbolikus gyűrű egy eleme Az egzakt aritmetika 4 of 53
BIGNUM ARITMETIKA A komputeralgebra rendszerek az aktuálisan használt matematikai struktúrában pontosan számolnak; ez a tetszőleges pontosságú aritmetika, vagy többszörös pontosságú aritmetika. A begépelt számról. esetleg kifejezésről a forma alapján azonnal eldöntik, mely struktúrába 1 tartoznak. A műveleteket az adott struktúrában hajtják végre (figyelembe véve a tartalmazási relációkat). Az eredmény a legbővebb alkalmazott struktúrában a pontos eredmény 1 Ez a MAPLE esetén többnyire egész-, racionális-, vagy komplex szám lehet,vagy efölötti polinom SAGE esetén egész- vagy racionális szám, vagy a szimbolikus gyűrű egy eleme Az egzakt aritmetika 5 of 53
NÉHÁNY SZÓ A TÍPUSOKRÓL A nem-szimbolikus nyelvek típusai a számítógépes megvalósíthatóság alapján modellezik a típusokat, nem tükrözik egyértelműen a matematikai hovatartozását egy objektumnak. Az egzakt aritmetika 6 of 53
NÉHÁNY SZÓ A TÍPUSOKRÓL A nem-szimbolikus nyelvek típusai a számítógépes megvalósíthatóság alapján modellezik a típusokat, nem tükrözik egyértelműen a matematikai hovatartozását egy objektumnak. A komputeralgebra rendszerek a matematikai tipizálást használják, ezért a típusok mindig algebra struktúrák, és halamzok, illetve az ezekkel végzett műveletek eredménystruktúrái, halmazai. Az egzakt aritmetika 7 of 53
NÉHÁNY SZÓ A TÍPUSOKRÓL A nem-szimbolikus nyelvek típusai a számítógépes megvalósíthatóság alapján modellezik a típusokat, nem tükrözik egyértelműen a matematikai hovatartozását egy objektumnak. A komputeralgebra rendszerek a matematikai tipizálást használják, ezért a típusok mindig algebra struktúrák, és halamzok, illetve az ezekkel végzett műveletek eredménystruktúrái, halmazai. a típuskezelés dinamikus Az egzakt aritmetika 8 of 53
EGÉSZEK I A MAPLE és a SAGE is szabad könyvtárat használ: GMP ill. MPIR (az előző forkja). Az egzakt aritmetika 9 of 53
EGÉSZEK I A MAPLE és a SAGE is szabad könyvtárat használ: GMP ill. MPIR (az előző forkja). A reprezentáció helyiértékes, nem bináris. Az egzakt aritmetika 10 of 53
EGÉSZEK I A MAPLE és a SAGE is szabad könyvtárat használ: GMP ill. MPIR (az előző forkja). A reprezentáció helyiértékes, nem bináris. Automatikusan felismert típus. Az egzakt aritmetika 11 of 53
EGÉSZEK I A MAPLE és a SAGE is szabad könyvtárat használ: GMP ill. MPIR (az előző forkja). A reprezentáció helyiértékes, nem bináris. Automatikusan felismert típus. Műveletek: az alapműveletek közül az osztás eredménye lehet racionális. Az egzakt aritmetika 12 of 53
EGÉSZEK II A MAPLE egészei Az egzakt aritmetika 13 of 53
EGÉSZEK II A MAPLE egészei Dinamikus adatvektor int± n i 0 i 1... i n Az egzakt aritmetika 14 of 53
EGÉSZEK II A MAPLE egészei Dinamikus adatvektor int± n i 0 i 1... i n Kis egészek: egy szóban (C adatkezelés) Az egzakt aritmetika 15 of 53
EGÉSZEK II A MAPLE egészei Dinamikus adatvektor int± n i 0 i 1... i n Kis egészek: egy szóban (C adatkezelés) A számrendszer alapszáma: 10 000. Az egzakt aritmetika 16 of 53
EGÉSZEK II A MAPLE egészei Dinamikus adatvektor int± n i 0 i 1... i n Kis egészek: egy szóban (C adatkezelés) A számrendszer alapszáma: 10 000. A SAGE egészei A ZZ tartomány elemei, objektumként is kezelhetők. Az egzakt aritmetika 17 of 53
EGÉSZEK III Alapvető számelméleti függvények: lnko, bővített lnko, prímtesztelés( igcd, igcdex, isprime,illetve gcd, xgcd, is_prime ) Az egzakt aritmetika 18 of 53
EGÉSZEK III Alapvető számelméleti függvények: lnko, bővített lnko, prímtesztelés( igcd, igcdex, isprime,illetve gcd, xgcd, is_prime ) maradékos osztás (iquo, irem illetve %, //) Az egzakt aritmetika 19 of 53
EGÉSZEK III Alapvető számelméleti függvények: lnko, bővített lnko, prímtesztelés( igcd, igcdex, isprime,illetve gcd, xgcd, is_prime ) maradékos osztás (iquo, irem illetve %, //) prímfaktorizáció (ifactor, ifactors,illetve factor) Az egzakt aritmetika 20 of 53
EGÉSZEK III Alapvető számelméleti függvények: lnko, bővített lnko, prímtesztelés( igcd, igcdex, isprime,illetve gcd, xgcd, is_prime ) maradékos osztás (iquo, irem illetve %, //) prímfaktorizáció (ifactor, ifactors,illetve factor) Az egzakt aritmetika 21 of 53
EGÉSZEK III Alapvető számelméleti függvények: lnko, bővített lnko, prímtesztelés( igcd, igcdex, isprime,illetve gcd, xgcd, is_prime ) maradékos osztás (iquo, irem illetve %, //) prímfaktorizáció (ifactor, ifactors,illetve factor) A SAGE függvényei a számok objektum-tulajdonságaként is alkalmazható. Az egzakt aritmetika 22 of 53
RACIONÁLIS SZÁMOK I Ha az egészek ábrázolása adott, a CAS-ok a racionális számokat ugyanúgy ábrázolják: rac. rac. rac. int int int int Az összenyilazás a MAPLE jellegzetessége Az egzakt aritmetika 23 of 53
RACIONÁLIS SZÁMOK II Mind a MAPLE mind a SAGE automatikus egyszerűsítést végez: a számláló és a nevező lnko-jával osztja a számlálót és a nevezőt Az egzakt aritmetika 24 of 53
RACIONÁLIS SZÁMOK II Mind a MAPLE mind a SAGE automatikus egyszerűsítést végez: a számláló és a nevező lnko-jával osztja a számlálót és a nevezőt A számláló és a nevező hasonló nevű függvényekkel külön kezelhető: numer(), denom() Az egzakt aritmetika 25 of 53
A KÖZTES TÁRROBBANÁS Az egzakt aritmetika következménye a köztes tárrobbanás: 1 Nem-szimbolikus rendszerben tárolhatatlan: 3535 15131 + 3835 3444319 = 12302581430 5209890789. (A számláló és a nevező relatív prím) Az egzakt aritmetika 26 of 53
A KÖZTES TÁRROBBANÁS Az egzakt aritmetika következménye a köztes tárrobbanás: 1 Nem-szimbolikus rendszerben tárolhatatlan: 3535 15131 + 3835 3444319 = 12302581430 5209890789. (A számláló és a nevező relatív prím) 2 Amikor a közbülső számítás a lényeg: 5 151 + 35 449 + 45209 203397 = 4596704401 13790113203 = 1 3. Az egzakt aritmetika 27 of 53
A KÖZTES TÁRROBBANÁS Az egzakt aritmetika következménye a köztes tárrobbanás: 1 Nem-szimbolikus rendszerben tárolhatatlan: 3535 15131 + 3835 3444319 = 12302581430 5209890789. (A számláló és a nevező relatív prím) 2 Amikor a közbülső számítás a lényeg: 5 151 + 35 449 + 45209 203397 = 4596704401 13790113203 = 1 3. Az egzakt aritmetika 28 of 53
A KÖZTES TÁRROBBANÁS Az egzakt aritmetika következménye a köztes tárrobbanás: 1 Nem-szimbolikus rendszerben tárolhatatlan: 3535 15131 + 3835 3444319 = 12302581430 5209890789. (A számláló és a nevező relatív prím) 2 Amikor a közbülső számítás a lényeg: 5 151 + 35 449 + 45209 203397 = 4596704401 13790113203 = 1 3. A legnagyobb közös osztót mindenképpen kiszámítása és az automatikus egyszerűsítés mindig megtörténik. Az egzakt aritmetika 29 of 53
Valós számok 30 of 53 TARTALOMJEGYZÉK Az egzakt aritmetika Valós számok Algebrai számok Komplex számok LEBEGŐPONTOS ÉS HARDWARE LEBEGŐPONTOS SZÁMOK Belső ábrázolás adatvektora: FLOAT mantissza karakterisztika
Valós számok 31 of 53 TARTALOMJEGYZÉK Az egzakt aritmetika Valós számok Algebrai számok Komplex számok LEBEGŐPONTOS ÉS HARDWARE LEBEGŐPONTOS SZÁMOK Belső ábrázolás adatvektora: FLOAT mantissza karakterisztika A kitevő kezelése a C egyszeres pontosságú artimetikájával
Valós számok 32 of 53 TARTALOMJEGYZÉK Az egzakt aritmetika Valós számok Algebrai számok Komplex számok LEBEGŐPONTOS ÉS HARDWARE LEBEGŐPONTOS SZÁMOK Belső ábrázolás adatvektora: FLOAT mantissza karakterisztika A kitevő kezelése a C egyszeres pontosságú artimetikájával Lebegőbontos szám megadása: 0.000001, 0.1 10 5, Float(10, 7)
Valós számok 33 of 53 TARTALOMJEGYZÉK Az egzakt aritmetika Valós számok Algebrai számok Komplex számok LEBEGŐPONTOS ÉS HARDWARE LEBEGŐPONTOS SZÁMOK Belső ábrázolás adatvektora: FLOAT mantissza karakterisztika A kitevő kezelése a C egyszeres pontosságú artimetikájával Lebegőbontos szám megadása: 0.000001, 0.1 10 5, Float(10, 7) evalf(...), convert(...)
Valós számok 34 of 53 TARTALOMJEGYZÉK Az egzakt aritmetika Valós számok Algebrai számok Komplex számok LEBEGŐPONTOS ÉS HARDWARE LEBEGŐPONTOS SZÁMOK Belső ábrázolás adatvektora: FLOAT mantissza karakterisztika A kitevő kezelése a C egyszeres pontosságú artimetikájával Lebegőbontos szám megadása: 0.000001, 0.1 10 5, Float(10, 7) evalf(...), convert(...) interface(displayprecision=n): kijelzési pontosság, n = 1 az alaphelyzet
Valós számok 35 of 53 TARTALOMJEGYZÉK Az egzakt aritmetika Valós számok Algebrai számok Komplex számok LEBEGŐPONTOS ÉS HARDWARE LEBEGŐPONTOS SZÁMOK Belső ábrázolás adatvektora: FLOAT mantissza karakterisztika A kitevő kezelése a C egyszeres pontosságú artimetikájával Lebegőbontos szám megadása: 0.000001, 0.1 10 5, Float(10, 7) evalf(...), convert(...) interface(displayprecision=n): kijelzési pontosság, n = 1 az alaphelyzet A evalhf procedúra - HW lebegőpontos aritmetika, a grafika használja. Az eredményeket duplapontosan adja, (Digits=15)
Valós számok 36 of 53 TARTALOMJEGYZÉK Az egzakt aritmetika Valós számok Algebrai számok Komplex számok TETSZŐLEGES- ÉS DUPLA PONTOSSÁGÚ LEBEGŐPONTOS SZÁMOK Tetszőleges pontosságú számok
Valós számok 37 of 53 TARTALOMJEGYZÉK Az egzakt aritmetika Valós számok Algebrai számok Komplex számok TETSZŐLEGES- ÉS DUPLA PONTOSSÁGÚ LEBEGŐPONTOS SZÁMOK Tetszőleges pontosságú számok Ez felel meg a MAPLE lebegőpontosnak
Valós számok 38 of 53 TARTALOMJEGYZÉK Az egzakt aritmetika Valós számok Algebrai számok Komplex számok TETSZŐLEGES- ÉS DUPLA PONTOSSÁGÚ LEBEGŐPONTOS SZÁMOK Tetszőleges pontosságú számok Ez felel meg a MAPLE lebegőpontosnak A RR gyűrű elemei, alapértelmezetten 53-bites pontosságú, gyűrűdefinícióval ez módosítható
Valós számok 39 of 53 TARTALOMJEGYZÉK Az egzakt aritmetika Valós számok Algebrai számok Komplex számok TETSZŐLEGES- ÉS DUPLA PONTOSSÁGÚ LEBEGŐPONTOS SZÁMOK Tetszőleges pontosságú számok Ez felel meg a MAPLE lebegőpontosnak A RR gyűrű elemei, alapértelmezetten 53-bites pontosságú, gyűrűdefinícióval ez módosítható Konverzió a.n(), a SAGE megkülönbözteti paraméterként az értékes jegyeket és a pontosságot
Valós számok 40 of 53 TARTALOMJEGYZÉK Az egzakt aritmetika Valós számok Algebrai számok Komplex számok TETSZŐLEGES- ÉS DUPLA PONTOSSÁGÚ LEBEGŐPONTOS SZÁMOK Tetszőleges pontosságú számok Ez felel meg a MAPLE lebegőpontosnak A RR gyűrű elemei, alapértelmezetten 53-bites pontosságú, gyűrűdefinícióval ez módosítható Konverzió a.n(), a SAGE megkülönbözteti paraméterként az értékes jegyeket és a pontosságot Dupla pontos számok
Valós számok 41 of 53 TARTALOMJEGYZÉK Az egzakt aritmetika Valós számok Algebrai számok Komplex számok TETSZŐLEGES- ÉS DUPLA PONTOSSÁGÚ LEBEGŐPONTOS SZÁMOK Tetszőleges pontosságú számok Ez felel meg a MAPLE lebegőpontosnak A RR gyűrű elemei, alapértelmezetten 53-bites pontosságú, gyűrűdefinícióval ez módosítható Konverzió a.n(), a SAGE megkülönbözteti paraméterként az értékes jegyeket és a pontosságot Dupla pontos számok A hardware lebegőpontosnak felel meg, az RDF-gyűrű a szülő-objektum.
Valós számok 42 of 53 TARTALOMJEGYZÉK Az egzakt aritmetika Valós számok Algebrai számok Komplex számok TETSZŐLEGES- ÉS DUPLA PONTOSSÁGÚ LEBEGŐPONTOS SZÁMOK Tetszőleges pontosságú számok Ez felel meg a MAPLE lebegőpontosnak A RR gyűrű elemei, alapértelmezetten 53-bites pontosságú, gyűrűdefinícióval ez módosítható Konverzió a.n(), a SAGE megkülönbözteti paraméterként az értékes jegyeket és a pontosságot Dupla pontos számok A hardware lebegőpontosnak felel meg, az RDF-gyűrű a szülő-objektum. A pontosság 15 bit.
ALGEBRAI SZÁMOK A MAPLE -BEN I nem alapvető adattípus Ábrázolás: a RootOf procedúra segítségével Példa alpha:= RootOf(x^7-2): simplify(alpha^7); 2 Az α értékkel ugyanúgy dolgozhatunk ezután, mint más értékkel. Algebrai számok 43 of 53
Algebrai számok 44 of 53
ALGEBRAI SZÁMOK A SAGE-BEN I A megvalósításban itt már komoly különbség van a két rendszer között. A SAGE -ben a racionális számkör az alapértelmezett, de a többi szám-struktúrában explicite definiálni kell a Q testbővítését. Példa: K.<a> = NumberField(x^7-2) a^7 2 Innentől kezdve a K testet is használhatjuk, az összes a + 1, 2 a alakú kifejezés e test eleme. Algebrai számok 45 of 53
KOMPLEX SZÁMOK A MAPLE -BEN Az i helyett I-t használ Ez felülírható: például j-re interface(imaginaryunit=j) Komplex számok 46 of 53
KOMPLEX SZÁMOK A MAPLE -BEN Az i helyett I-t használ Ez felülírható: például j-re interface(imaginaryunit=j) Megadás literálként a+b I, vagy konstruktorral Complex(a,b). Komplex számok 47 of 53
KOMPLEX SZÁMOK A MAPLE -BEN Az i helyett I-t használ Ez felülírható: például j-re interface(imaginaryunit=j) Megadás literálként a+b I, vagy konstruktorral Complex(a,b). Az alapvető adatok Re(), Im(), conjugate(), abs(),argument(). Komplex számok 48 of 53
KOMPLEX SZÁMOK A MAPLE -BEN Az i helyett I-t használ Ez felülírható: például j-re interface(imaginaryunit=j) Megadás literálként a+b I, vagy konstruktorral Complex(a,b). Az alapvető adatok Re(), Im(), conjugate(), abs(),argument(). Komplex előjel: csgn(). Komplex számok 49 of 53
KOMPLEX SZÁMOK A MAPLE -BEN Az i helyett I-t használ Ez felülírható: például j-re interface(imaginaryunit=j) Megadás literálként a+b I, vagy konstruktorral Complex(a,b). Az alapvető adatok Re(), Im(), conjugate(), abs(),argument(). Komplex előjel: csgn(). A csgn(0) érték a _Envsignum0 környezeti változóval állítható. Komplex számok 50 of 53
KOMPLEX SZÁMOK A MAPLE -BEN Az i helyett I-t használ Ez felülírható: például j-re interface(imaginaryunit=j) Megadás literálként a+b I, vagy konstruktorral Complex(a,b). Az alapvető adatok Re(), Im(), conjugate(), abs(),argument(). Komplex előjel: csgn(). A csgn(0) érték a _Envsignum0 környezeti változóval állítható. Különböző kiértékelő függvények: evalc szimbolikusan kezeli a komplex számot, evalf, evalhf a valós és komplex részt lebegőpontosan. Komplex számok 51 of 53
KOMPLEX SZÁMOK A SAGE -BEN I A szigorú algebrai felépítés miatt az RR bővítése a ComplexField avagy CC test, így konkrét értékekkel kell számolni: Példa: a = CC(12 + i); a 12.0000000000000 + 1.00000000000000*I A komplex számról információk: a.abs(), a.arg(), a.imag(), a.real(), a.conjugate(). Ugyanúgy, mint a valós számokban, definiálhatók a komplex dupla-pontosnak is. Komplex számok 52 of 53
KOMPLEX SZÁMOK A SAGE -BEN II A Sage szimbolikus gyűrűje fölött szimbolikusan is számolhatunk komplexekkel a = 1 + i; a Symbolic Ring a.imag() 1 a*a.conjugate() 2 A függvények ugyanazok, minden művelet ugyanúgy történik. Komplex számok 53 of 53