Komputeralgebra Rendszerek Konstansok, változók, típusok Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék 2015. február 24. TARTALOMJEGYZÉK 1 of 110
TARTALOMJEGYZÉK I 1 TARTALOMJEGYZÉK 2 Nevek kezelése Nevek a MAPLE -ben Alapvető információk Speciális karakterek Nevek levédése Nevek a SAGE -ben 3 Szimbolikus konstansok kezelése A konstansok a MAPLE ban A konstansok a SAGE -ben 4 Változók A MAPLE változói Változók fajtái Egyenlőség, egyenlet, értékadás Indexelt nevek Konkatenált nevek On-line Help a névkezeléshez A SAGE változó-kezelése 5 Kifejezések kiértékelése TARTALOMJEGYZÉK 2 of 110
TARTALOMJEGYZÉK II Kiértékelés a MAPLE -ben Teljes kiértékelés Kiértékelési trükkök Speciális szimbólumok Kiértékelés a SAGE -ben 6 Adattípusok kezelése Adattípusok kezelése a MAPLE -ben Surface és nested Attribútumok Matematikai feltételek Típuskezelés a SAGE -ben A SAGE hozzáállása 7 Matematikai feltételek 8 További példák TARTALOMJEGYZÉK 3 of 110
Nevek kezelése 4 of 110 ALAPVETŐ INFORMÁCIÓK MAPLE terminológia: változó,konstans név (name). Majdnem minden karaktersorozat lehet. Célszerű betartani: betűvel vagy aláhúzással kezdődik, tetszőleges számú, betű, számjegy, aláhúzás követheti
Nevek kezelése 5 of 110 ALAPVETŐ INFORMÁCIÓK MAPLE terminológia: változó,konstans név (name). Majdnem minden karaktersorozat lehet. Célszerű betartani: betűvel vagy aláhúzással kezdődik, tetszőleges számú, betű, számjegy, aláhúzás követheti kisbetű/nagybetű érzékeny
Nevek kezelése 6 of 110 ALAPVETŐ INFORMÁCIÓK MAPLE terminológia: változó,konstans név (name). Majdnem minden karaktersorozat lehet. Célszerű betartani: betűvel vagy aláhúzással kezdődik, tetszőleges számú, betű, számjegy, aláhúzás követheti kisbetű/nagybetű érzékeny Kerülendő dolgok
Nevek kezelése 7 of 110 ALAPVETŐ INFORMÁCIÓK MAPLE terminológia: változó,konstans név (name). Majdnem minden karaktersorozat lehet. Célszerű betartani: betűvel vagy aláhúzással kezdődik, tetszőleges számú, betű, számjegy, aláhúzás követheti kisbetű/nagybetű érzékeny Kerülendő dolgok Az _Z típusú változók speciális belső változók
Nevek kezelése 8 of 110 ALAPVETŐ INFORMÁCIÓK MAPLE terminológia: változó,konstans név (name). Majdnem minden karaktersorozat lehet. Célszerű betartani: betűvel vagy aláhúzással kezdődik, tetszőleges számú, betű, számjegy, aláhúzás követheti kisbetű/nagybetű érzékeny Kerülendő dolgok Az _Z típusú változók speciális belső változók A kulcsszavak:?keywords
Nevek kezelése 9 of 110 ALAPVETŐ INFORMÁCIÓK MAPLE terminológia: változó,konstans név (name). Majdnem minden karaktersorozat lehet. Célszerű betartani: betűvel vagy aláhúzással kezdődik, tetszőleges számú, betű, számjegy, aláhúzás követheti kisbetű/nagybetű érzékeny Kerülendő dolgok Az _Z típusú változók speciális belső változók A kulcsszavak:?keywords A kezdetben ismert nevek:?ininames
Nevek kezelése 10 of 110 ALAPVETŐ INFORMÁCIÓK MAPLE terminológia: változó,konstans név (name). Majdnem minden karaktersorozat lehet. Célszerű betartani: betűvel vagy aláhúzással kezdődik, tetszőleges számú, betű, számjegy, aláhúzás követheti kisbetű/nagybetű érzékeny Kerülendő dolgok Az _Z típusú változók speciális belső változók A kulcsszavak:?keywords A kezdetben ismert nevek:?ininames A kezdetben ismert függvénynevek:?inifcn
Nevek kezelése 11 of 110 SPECIÁLIS KARAKTEREK A görög ábécé
Nevek kezelése 12 of 110 SPECIÁLIS KARAKTEREK A görög ábécé Kisbetűk: alpha, beta,...
Nevek kezelése 13 of 110 SPECIÁLIS KARAKTEREK A görög ábécé Kisbetűk: alpha, beta,... nagybetűk: Alpha, Beta
Nevek kezelése 14 of 110 SPECIÁLIS KARAKTEREK A görög ábécé Kisbetűk: alpha, beta,... nagybetűk: Alpha, Beta Vigyázat: Pi, pi, PI
Nevek kezelése 15 of 110 SPECIÁLIS KARAKTEREK A görög ábécé Kisbetűk: alpha, beta,... nagybetűk: Alpha, Beta Vigyázat: Pi, pi, PI Kivételek: CHI, ZETA
Nevek kezelése 16 of 110 SPECIÁLIS KARAKTEREK A görög ábécé Kisbetűk: alpha, beta,... nagybetűk: Alpha, Beta Vigyázat: Pi, pi, PI Kivételek: CHI, ZETA GAMMA függvény
Nevek kezelése 17 of 110 SPECIÁLIS KARAKTEREK A görög ábécé Kisbetűk: alpha, beta,... nagybetűk: Alpha, Beta Vigyázat: Pi, pi, PI Kivételek: CHI, ZETA GAMMA függvény Nem értéket, csak más írásformát jelent!
Nevek kezelése 18 of 110 SPECIÁLIS KARAKTEREK A görög ábécé Kisbetűk: alpha, beta,... nagybetűk: Alpha, Beta Vigyázat: Pi, pi, PI Kivételek: CHI, ZETA GAMMA függvény Nem értéket, csak más írásformát jelent! Egzotikus nevek A... idézőjelek között lévő név tartalmazhat lényegében minden karaktert. Nagymértékben megnehezíti a kód olvashatóságát. A MAPLE sok belső függvénye ilyen, például a simplify/ tipusú mögöttes függvények.
Nevek kezelése 19 of 110 NEVEK LEVÉDÉSE A protect utasítás A konstansok értéke védett, nem működik Pi := 3.14
Nevek kezelése 20 of 110 NEVEK LEVÉDÉSE A protect utasítás A konstansok értéke védett, nem működik Pi := 3.14 protect(...), unprotect(...)
Nevek kezelése 21 of 110 NEVEK LEVÉDÉSE A protect utasítás A konstansok értéke védett, nem működik Pi := 3.14 protect(...), unprotect(...) macro(név=kif)
Nevek kezelése 22 of 110 NEVEK LEVÉDÉSE A protect utasítás A konstansok értéke védett, nem működik Pi := 3.14 protect(...), unprotect(...) macro(név=kif) Példa protect( e ): macro(e=exp(1)):
Nevek kezelése 23 of 110 NEVEK A SAGE -BEN A SAGE -ben a változókat az x kivételével kötelező a var kulcsszóval definiálni Ez felülírható a automatic_names(true) utasítással.
Nevek kezelése 24 of 110 NEVEK A SAGE -BEN A SAGE -ben a változókat az x kivételével kötelező a var kulcsszóval definiálni Ez felülírható a automatic_names(true) utasítással. kisbetű/nagybetű érzékeny
Nevek kezelése 25 of 110 NEVEK A SAGE -BEN A SAGE -ben a változókat az x kivételével kötelező a var kulcsszóval definiálni Ez felülírható a automatic_names(true) utasítással. kisbetű/nagybetű érzékeny A változónév a szokásos: betűvel vagy aláhúzással kezdődő alfanumerikus (aláhúzás is) karaktersorozat.
Nevek kezelése 26 of 110 NEVEK A SAGE -BEN A SAGE -ben a változókat az x kivételével kötelező a var kulcsszóval definiálni Ez felülírható a automatic_names(true) utasítással. kisbetű/nagybetű érzékeny A változónév a szokásos: betűvel vagy aláhúzással kezdődő alfanumerikus (aláhúzás is) karaktersorozat. Kerülendő a dupla aláhúzással kezdődő név
Nevek kezelése 27 of 110 NEVEK A SAGE -BEN A SAGE -ben a változókat az x kivételével kötelező a var kulcsszóval definiálni Ez felülírható a automatic_names(true) utasítással. kisbetű/nagybetű érzékeny A változónév a szokásos: betűvel vagy aláhúzással kezdődő alfanumerikus (aláhúzás is) karaktersorozat. Kerülendő a dupla aláhúzással kezdődő név Majdnem minden felülírható!
Szimbolikus konstansok kezelése 28 of 110 A MAPLE KONSTANSAI A MAPLE konstansai
Szimbolikus konstansok kezelése 29 of 110 A MAPLE KONSTANSAI A MAPLE konstansai π, MAPLE -ben: Pi; az e-szám: exp(1)
Szimbolikus konstansok kezelése 30 of 110 A MAPLE KONSTANSAI A MAPLE konstansai π, MAPLE -ben: Pi; az e-szám: exp(1) Logikai értékek: true, false, FAIL
Szimbolikus konstansok kezelése 31 of 110 A MAPLE KONSTANSAI A MAPLE konstansai π, MAPLE -ben: Pi; az e-szám: exp(1) Logikai értékek: true, false, FAIL : infinity, azaz végtelen; előjeles
Szimbolikus konstansok kezelése 32 of 110 A MAPLE KONSTANSAI A MAPLE konstansai π, MAPLE -ben: Pi; az e-szám: exp(1) Logikai értékek: true, false, FAIL : infinity, azaz végtelen; előjeles Az imaginárius egység: I; felülírható: interface(imaginaryunit=más)
Szimbolikus konstansok kezelése 33 of 110 A MAPLE KONSTANSAI A MAPLE konstansai π, MAPLE -ben: Pi; az e-szám: exp(1) Logikai értékek: true, false, FAIL : infinity, azaz végtelen; előjeles Az imaginárius egység: I; felülírható: interface(imaginaryunit=más) A Catalan konstans: C = ( 1) n /(2n + 1) 2 n=0
Szimbolikus konstansok kezelése 34 of 110 A MAPLE KONSTANSAI A MAPLE konstansai π, MAPLE -ben: Pi; az e-szám: exp(1) Logikai értékek: true, false, FAIL : infinity, azaz végtelen; előjeles Az imaginárius egység: I; felülírható: interface(imaginaryunit=más) A Catalan konstans: C = Euler Mascheroni konstans: ( 1) n /(2n + 1) 2 n=0 n γ = lim (( 1/k) ln(n)) n > k=1
Szimbolikus konstansok kezelése 35 of 110 A SAGE KONSTANSAI A Sage konstansai
Szimbolikus konstansok kezelése 36 of 110 A SAGE KONSTANSAI A Sage konstansai A π: Pi, pi és az az e-szám: E, e
Szimbolikus konstansok kezelése 37 of 110 A SAGE KONSTANSAI A Sage konstansai A π: Pi, pi és az az e-szám: E, e Logika értékek:true, True, false, False
Szimbolikus konstansok kezelése 38 of 110 A SAGE KONSTANSAI A Sage konstansai A π: Pi, pi és az az e-szám: E, e Logika értékek:true, True, false, False : Infinity, infinity előjelesen, vagy oo
Szimbolikus konstansok kezelése 39 of 110 A SAGE KONSTANSAI A Sage konstansai A π: Pi, pi és az az e-szám: E, e Logika értékek:true, True, false, False : Infinity, infinity előjelesen, vagy oo A 2 természetes logaritmusa: log2
Változók 40 of 110 VÁLTOZÓK FAJTÁI Szabad és kötött változók)
Változók 41 of 110 VÁLTOZÓK FAJTÁI Szabad és kötött változók) Szabad változók (unassigned variables) Azok a változók, melyeknek nincs értéke. (matematikai változók, matematikai szimbólumok, matematikai ismeretlenek, stb). Önmagát reprezentálja.
Változók 42 of 110 VÁLTOZÓK FAJTÁI Szabad és kötött változók) Szabad változók (unassigned variables) Azok a változók, melyeknek nincs értéke. (matematikai változók, matematikai szimbólumok, matematikai ismeretlenek, stb). Önmagát reprezentálja. Kötött változók (assigned variables) Értékkel rendelkező változók (programváltozók)
Változók 43 of 110 VÁLTOZÓK FAJTÁI Szabad és kötött változók) Szabad változók (unassigned variables) Azok a változók, melyeknek nincs értéke. (matematikai változók, matematikai szimbólumok, matematikai ismeretlenek, stb). Önmagát reprezentálja. Kötött változók (assigned variables) Értékkel rendelkező változók (programváltozók) Információ a változók állapotáról:
Változók 44 of 110 VÁLTOZÓK FAJTÁI Szabad és kötött változók) Szabad változók (unassigned variables) Azok a változók, melyeknek nincs értéke. (matematikai változók, matematikai szimbólumok, matematikai ismeretlenek, stb). Önmagát reprezentálja. Kötött változók (assigned variables) Értékkel rendelkező változók (programváltozók) Információ a változók állapotáról: anames a kötött változók nevei
Változók 45 of 110 VÁLTOZÓK FAJTÁI Szabad és kötött változók) Szabad változók (unassigned variables) Azok a változók, melyeknek nincs értéke. (matematikai változók, matematikai szimbólumok, matematikai ismeretlenek, stb). Önmagát reprezentálja. Kötött változók (assigned variables) Értékkel rendelkező változók (programváltozók) Információ a változók állapotáról: anames a kötött változók nevei unames a szabad változók nevei
Változók 46 of 110 VÁLTOZÓK FAJTÁI Szabad és kötött változók) Szabad változók (unassigned variables) Azok a változók, melyeknek nincs értéke. (matematikai változók, matematikai szimbólumok, matematikai ismeretlenek, stb). Önmagát reprezentálja. Kötött változók (assigned variables) Értékkel rendelkező változók (programváltozók) Információ a változók állapotáról: anames a kötött változók nevei unames a szabad változók nevei assigned van-e értéke a változónak?
Változók 47 of 110 EGYENLŐSÉG, EGYENLET, ÉRTÉKADÁS A := az értékadás, az = az egyenlet a:=b=2
Változók 48 of 110 EGYENLŐSÉG, EGYENLET, ÉRTÉKADÁS A := az értékadás, az = az egyenlet a:=b=2 Ha x szabad változó, hibás a x:=x+1 (interpreter módban)
Változók 49 of 110 EGYENLŐSÉG, EGYENLET, ÉRTÉKADÁS A := az értékadás, az = az egyenlet a:=b=2 Ha x szabad változó, hibás a x:=x+1 (interpreter módban) Érték visszavonása (unassign): x:= x (Avagy: restart).
Változók 50 of 110 EGYENLŐSÉG, EGYENLET, ÉRTÉKADÁS A := az értékadás, az = az egyenlet a:=b=2 Ha x szabad változó, hibás a x:=x+1 (interpreter módban) Érték visszavonása (unassign): x:= x (Avagy: restart). Indexelt változó érték visszavonása: evaln(...)
Változók 51 of 110 EGYENLŐSÉG, EGYENLET, ÉRTÉKADÁS A := az értékadás, az = az egyenlet a:=b=2 Ha x szabad változó, hibás a x:=x+1 (interpreter módban) Érték visszavonása (unassign): x:= x (Avagy: restart). Indexelt változó érték visszavonása: evaln(...) assign(name, expression) Kiértékeli az első argumentumot is
Változók 52 of 110 EGYENLŐSÉG, EGYENLET, ÉRTÉKADÁS A := az értékadás, az = az egyenlet a:=b=2 Ha x szabad változó, hibás a x:=x+1 (interpreter módban) Érték visszavonása (unassign): x:= x (Avagy: restart). Indexelt változó érték visszavonása: evaln(...) assign(name, expression) Kiértékeli az első argumentumot is unassign(...)
Változók 53 of 110 INDEXELT NEVEK Az x n típusú nevek megadására. 2D módban is bevihető: a név után _, majd az index
Változók 54 of 110 INDEXELT NEVEK Az x n típusú nevek megadására. 2D módban is bevihető: a név után _, majd az index x[n] típusú bevitel
Változók 55 of 110 INDEXELT NEVEK Az x n típusú nevek megadására. 2D módban is bevihető: a név után _, majd az index x[n] típusú bevitel x[n]
Változók 56 of 110 INDEXELT NEVEK Az x n típusú nevek megadására. 2D módban is bevihető: a név után _, majd az index x[n] típusú bevitel x[n] x[n][m]
Változók 57 of 110 INDEXELT NEVEK Az x n típusú nevek megadására. 2D módban is bevihető: a név után _, majd az index x[n] típusú bevitel x[n] x[n][m] x[n[m]]
Változók 58 of 110 INDEXELT NEVEK Az x n típusú nevek megadására. 2D módban is bevihető: a név után _, majd az index x[n] típusú bevitel x[n] x[n][m] x[n[m]] a név: header, az index: selector
Változók 59 of 110 KONKATENÁLT NEVEK var1 var2 A MAPLE a jobboldalt értékeli ki csak, a baloldalt névként kezeli. Alkalmazás: Véletlen polinomok generálása
Változók 60 of 110 KONKATENÁLT NEVEK var1 var2 A MAPLE a jobboldalt értékeli ki csak, a baloldalt névként kezeli. Alkalmazás: Véletlen polinomok generálása sok változó készítése
Változók 61 of 110 ON-LINE HELP A NÉVKEZELÉSHEZ Ugyanaz a HELP-lap:?variable,?symbol,?name
Változók 62 of 110 ON-LINE HELP A NÉVKEZELÉSHEZ Ugyanaz a HELP-lap:?variable,?symbol,?name Indexelt változók:?indexed,?selection
Változók 63 of 110 ON-LINE HELP A NÉVKEZELÉSHEZ Ugyanaz a HELP-lap:?variable,?symbol,?name Indexelt változók:?indexed,?selection type(név, name): változó-e "név"
Változók 64 of 110 ON-LINE HELP A NÉVKEZELÉSHEZ Ugyanaz a HELP-lap:?variable,?symbol,?name Indexelt változók:?indexed,?selection type(név, name): változó-e "név"?table,?array,?vector,?matrix
Változók 65 of 110 ON-LINE HELP A NÉVKEZELÉSHEZ Ugyanaz a HELP-lap:?variable,?symbol,?name Indexelt változók:?indexed,?selection type(név, name): változó-e "név"?table,?array,?vector,?matrix?,?cat
Változók 66 of 110 VÁLTOZÓK A SAGE -BEN Itt is léteznek szabad és kötött változók
Változók 67 of 110 VÁLTOZÓK A SAGE -BEN Itt is léteznek szabad és kötött változók A Python miatt itt minden objektum, az objektumhivatkozások a.b alakúak
Változók 68 of 110 VÁLTOZÓK A SAGE -BEN Itt is léteznek szabad és kötött változók A Python miatt itt minden objektum, az objektumhivatkozások a.b alakúak Változó értékének megszüntetése: a var parancs
Változók 69 of 110 VÁLTOZÓK A SAGE -BEN Itt is léteznek szabad és kötött változók A Python miatt itt minden objektum, az objektumhivatkozások a.b alakúak Változó értékének megszüntetése: a var parancs Elállított értékek alaphelyzetbe hozása. reset(vars=none, attached=false)
Változók 70 of 110 VÁLTOZÓK A SAGE -BEN Itt is léteznek szabad és kötött változók A Python miatt itt minden objektum, az objektumhivatkozások a.b alakúak Változó értékének megszüntetése: a var parancs Elállított értékek alaphelyzetbe hozása. reset(vars=none, attached=false) Értékadás: =, reláció (egyenlet): ==
Változók 71 of 110 VÁLTOZÓK A SAGE -BEN Itt is léteznek szabad és kötött változók A Python miatt itt minden objektum, az objektumhivatkozások a.b alakúak Változó értékének megszüntetése: a var parancs Elállított értékek alaphelyzetbe hozása. reset(vars=none, attached=false) Értékadás: =, reláció (egyenlet): == Nincsenek a MAPLE -nek megfelelő információs függvények
Változók 72 of 110 VÁLTOZÓK A SAGE -BEN Itt is léteznek szabad és kötött változók A Python miatt itt minden objektum, az objektumhivatkozások a.b alakúak Változó értékének megszüntetése: a var parancs Elállított értékek alaphelyzetbe hozása. reset(vars=none, attached=false) Értékadás: =, reláció (egyenlet): == Nincsenek a MAPLE -nek megfelelő információs függvények Indexkezelése: szögletes zárójelezés
Változók 73 of 110 VÁLTOZÓGENERÁLÁS A MAPLE konkatenált neveinek szimulálása: class VariableGenerator(object): def init (self, prefix): self. prefix = prefix @cached_method def getitem (self, key): return SR.var("%s%s"%(self. prefix,key)) g = VariableGenerator( g )
TELJES KIÉRTÉKELÉS name a name b a:=b; b:=c; c:=3; name c intpos 3 Kifejezések kiértékelése 74 of 110
KIÉRTÉKELÉSI TRÜKKÖK Szintek: eval(e,n) - A kifejezés n. hivatkozásának lekérdezése. Függvényen belül nem működik Kifejezések kiértékelése 75 of 110
KIÉRTÉKELÉSI TRÜKKÖK Szintek: eval(e,n) - A kifejezés n. hivatkozásának lekérdezése. Függvényen belül nem működik Késleltetett: Egy utasításnyi időre késleltetjük a kiértékelést: x:=3; y:= x +3; Kifejezések kiértékelése 76 of 110
KIÉRTÉKELÉSI TRÜKKÖK Szintek: eval(e,n) - A kifejezés n. hivatkozásának lekérdezése. Függvényen belül nem működik Késleltetett: Egy utasításnyi időre késleltetjük a kiértékelést: x:=3; y:= x +3; Utolsó név kiértékelés: Ha a kiértékelés függvénydefinícióhoz ér, a függvénynév előtti utolsó névnél megáll a kiértékelés., illetve a linalg adatszerkezeteinél. Kifejezések kiértékelése 77 of 110
SPECIÁLIS SZIMBÓLUMOK Szimbólum Felhasználás speciális karaktert tartalmazó név jelölése késleltetett kiértékelés " " string % hivatkozás az előzőleg kiértékelt kifejezésre %% visszafelé a második kifejezés %%% visszafelé a harmadik kifejezés Kifejezések kiértékelése 78 of 110
A LISTÁK HASZNÁLATA Kiértékelési problémák a listáknál léphetnek föl: a listaműveletek helyben hatnak. Kifejezések kiértékelése 79 of 110
SURFACE ÉS NESTED Surface típus: az adatvektor fejrésze Adattípusok kezelése 80 of 110
SURFACE ÉS NESTED Surface típus: az adatvektor fejrésze számok és stringek Adattípusok kezelése 81 of 110
SURFACE ÉS NESTED Surface típus: az adatvektor fejrésze számok és stringek aritmetikai kifejezések Adattípusok kezelése 82 of 110
SURFACE ÉS NESTED Surface típus: az adatvektor fejrésze számok és stringek aritmetikai kifejezések logikai kifejezések Adattípusok kezelése 83 of 110
SURFACE ÉS NESTED Surface típus: az adatvektor fejrésze számok és stringek aritmetikai kifejezések logikai kifejezések kifejezés sorozat, lista, halmaz, függvényhívás Adattípusok kezelése 84 of 110
SURFACE ÉS NESTED Surface típus: az adatvektor fejrésze számok és stringek aritmetikai kifejezések logikai kifejezések kifejezés sorozat, lista, halmaz, függvényhívás whattype() parancs Adattípusok kezelése 85 of 110
SURFACE ÉS NESTED Surface típus: az adatvektor fejrésze számok és stringek aritmetikai kifejezések logikai kifejezések kifejezés sorozat, lista, halmaz, függvényhívás whattype() parancs Nested típusok: többnyire rekurzíven definiált adatok Adattípusok kezelése 86 of 110
SURFACE ÉS NESTED Surface típus: az adatvektor fejrésze számok és stringek aritmetikai kifejezések logikai kifejezések kifejezés sorozat, lista, halmaz, függvényhívás whattype() parancs Nested típusok: többnyire rekurzíven definiált adatok polinomok Adattípusok kezelése 87 of 110
SURFACE ÉS NESTED Surface típus: az adatvektor fejrésze számok és stringek aritmetikai kifejezések logikai kifejezések kifejezés sorozat, lista, halmaz, függvényhívás whattype() parancs Nested típusok: többnyire rekurzíven definiált adatok polinomok konstansok (!) Adattípusok kezelése 88 of 110
SURFACE ÉS NESTED Surface típus: az adatvektor fejrésze számok és stringek aritmetikai kifejezések logikai kifejezések kifejezés sorozat, lista, halmaz, függvényhívás whattype() parancs Nested típusok: többnyire rekurzíven definiált adatok polinomok konstansok (!) type() parancs Adattípusok kezelése 89 of 110
SURFACE ÉS NESTED Surface típus: az adatvektor fejrésze számok és stringek aritmetikai kifejezések logikai kifejezések kifejezés sorozat, lista, halmaz, függvényhívás whattype() parancs Nested típusok: többnyire rekurzíven definiált adatok polinomok konstansok (!) type() parancs hastype(e, t) - részkifejezést is vizsgál Adattípusok kezelése 90 of 110
SURFACE ÉS NESTED Surface típus: az adatvektor fejrésze számok és stringek aritmetikai kifejezések logikai kifejezések kifejezés sorozat, lista, halmaz, függvényhívás whattype() parancs Nested típusok: többnyire rekurzíven definiált adatok polinomok konstansok (!) type() parancs hastype(e, t) - részkifejezést is vizsgál typematch(e,t) - igaz, ha e típusa pontosan t. Adattípusok kezelése 91 of 110
SURFACE ÉS NESTED Surface típus: az adatvektor fejrésze számok és stringek aritmetikai kifejezések logikai kifejezések kifejezés sorozat, lista, halmaz, függvényhívás whattype() parancs Nested típusok: többnyire rekurzíven definiált adatok polinomok konstansok (!) type() parancs hastype(e, t) - részkifejezést is vizsgál typematch(e,t) - igaz, ha e típusa pontosan t.?type,nested,?typematch Adattípusok kezelése 92 of 110
ATTRIBÚTUMOK Azokhoz a struktúrákhoz, melyek hossza konstans, egy plusz attribútum-mező rendelhető. Az attribútum tetszőleges MAPLE kifejezés lehet. Kezelése: setattribute(e,a) Hozzárendelés, ha a hiányzik, törlés Adattípusok kezelése 93 of 110
ATTRIBÚTUMOK Azokhoz a struktúrákhoz, melyek hossza konstans, egy plusz attribútum-mező rendelhető. Az attribútum tetszőleges MAPLE kifejezés lehet. Kezelése: setattribute(e,a) Hozzárendelés, ha a hiányzik, törlés attributes(e) Lekérdezés Adattípusok kezelése 94 of 110
ATTRIBÚTUMOK Azokhoz a struktúrákhoz, melyek hossza konstans, egy plusz attribútum-mező rendelhető. Az attribútum tetszőleges MAPLE kifejezés lehet. Kezelése: setattribute(e,a) Hozzárendelés, ha a hiányzik, törlés attributes(e) Lekérdezés Vannak fenntartott attribútumok: attributes(diff) Adattípusok kezelése 95 of 110
MATEMATIKAI FELTÉTELEK A assume utasítás Adattípusok kezelése 96 of 110
MATEMATIKAI FELTÉTELEK A assume utasítás interface(showassumed=1) Adattípusok kezelése 97 of 110
MATEMATIKAI FELTÉTELEK A assume utasítás interface(showassumed=1) assume(...) Adattípusok kezelése 98 of 110
MATEMATIKAI FELTÉTELEK A assume utasítás interface(showassumed=1) assume(...) hassassumptions(...) Adattípusok kezelése 99 of 110
MATEMATIKAI FELTÉTELEK A assume utasítás interface(showassumed=1) assume(...) hassassumptions(...) about(...) Adattípusok kezelése 100 of 110
MATEMATIKAI FELTÉTELEK A assume utasítás interface(showassumed=1) assume(...) hassassumptions(...) about(...) additionally(...) Adattípusok kezelése 101 of 110
MATEMATIKAI FELTÉTELEK A assume utasítás interface(showassumed=1) assume(...) hassassumptions(...) about(...) additionally(...) a tulajdonságok visszavonása: assign, változó unassign, program, értékadás. Adattípusok kezelése 102 of 110
MIÉRT IS MÁS? A Sage dinamikusan tipizált, de... létezik a type() függvény, ami precíz információt ad Adattípusok kezelése 103 of 110
MIÉRT IS MÁS? A Sage dinamikusan tipizált, de... létezik a type() függvény, ami precíz információt ad A megközelítés matematika-oldalú: a típus helyét átveszi a matematikai struktúra Adattípusok kezelése 104 of 110
MIÉRT IS MÁS? A Sage dinamikusan tipizált, de... létezik a type() függvény, ami precíz információt ad A megközelítés matematika-oldalú: a típus helyét átveszi a matematikai struktúra.base_ring() a hierearchia legelső struktúrája Adattípusok kezelése 105 of 110
MIÉRT IS MÁS? A Sage dinamikusan tipizált, de... létezik a type() függvény, ami precíz információt ad A megközelítés matematika-oldalú: a típus helyét átveszi a matematikai struktúra.base_ring() a hierearchia legelső struktúrája.parent() ez az aktuális típus Adattípusok kezelése 106 of 110
MIÉRT IS MÁS? A Sage dinamikusan tipizált, de... létezik a type() függvény, ami precíz információt ad A megközelítés matematika-oldalú: a típus helyét átveszi a matematikai struktúra.base_ring() a hierearchia legelső struktúrája.parent() ez az aktuális típus.change_ring() másolat más struktúrában Adattípusok kezelése 107 of 110
MIÉRT IS MÁS? A Sage dinamikusan tipizált, de... létezik a type() függvény, ami precíz információt ad A megközelítés matematika-oldalú: a típus helyét átveszi a matematikai struktúra.base_ring() a hierearchia legelső struktúrája.parent() ez az aktuális típus.change_ring() másolat más struktúrában Típuskonverzió helyett a coercing fogalma: kényszerítés, tulajdonképpen homomorfizmus Adattípusok kezelése 108 of 110
Matematikai feltételek 109 of 110 A A S S U M E A SAGE -BEN assume(x > 0 vagy (x > 0).assume()
Matematikai feltételek 110 of 110 A A S S U M E A SAGE -BEN assume(x > 0 vagy (x > 0).assume() további lehetőségek? assume(x, integet ) vagy assume(x, odd ) formátum
Matematikai feltételek 111 of 110 A A S S U M E A SAGE -BEN assume(x > 0 vagy (x > 0).assume() további lehetőségek? assume(x, integet ) vagy assume(x, odd ) formátum forget()
Matematikai feltételek 112 of 110 A A S S U M E A SAGE -BEN assume(x > 0 vagy (x > 0).assume() további lehetőségek? assume(x, integet ) vagy assume(x, odd ) formátum forget() assumptions()
PÉLDÁK Lásd a munkalapokon! További példák 113 of 110