Elementele de baz necesare crerii comenzilor din Mathematica sunt obiectele. Rezolvarea unei probleme presupune definirea unor obiecte specifice i efectuarea unor prelucrri asupra acestora. Spre exemplu, calculul determinantului al unei matrice presupune mai nti definirea unui obiect care s conin matricea, dup care se apeleaz funcia corespunztoare. Obiectele simple (tipurile de date de baz) sunt cele care nu sunt derivate (construite explicit) din alte obiecte. Cele mai folosite i importante, n acelai timp, obiecte simple sunt numerele i simbolurile. Mathematica poate lucra cu valori numerice exacte sau cu valori numerice aproximative. Tipurile de date numerice sunt: - I nt eger , care implementeaz mulimea numerelor ntregi (Z), iar numerele reprezentate astfel sunt considerate valori exacte. Exemple: 2 , 1 . - Rat i onal , care implementeaz mulimea numerelor raionale, mai exact Q\Z. Numerele reprezentate astfel sunt considerate valori exacte. Exemple: 3 5 , 3 2 . - Real , care implementeaz mulimea numerelor reale (R). Practic, toate valorile numerice ce conin punctul zecimal sunt considerate ca aparinnd tipului de date Real . Numerele reprezentate astfel reprezint valori aproximative. Exemple: 23 . 0 , 2 . 1 . - Compl ex, care implementeaz mulimea C\R. Numerele reprezentate astfel sunt considerate valori aproximative dac cel puin partea real sau partea imaginar este de tip Real . Exemple: I I 3 . 2 , 2 3 2 + + . Prin comparaie cu majoritatea limbajelor de programare de nivel nalt, n Mathematica nu trebuie specificat explicit tipul datelor, acestea fiind ncadrate implicit ntr-o categorie sau alta n funcie de valorile pe care le iau. Pentru a verifica dac o un obiect conine un numr se poate folosi funcia Number Q care returneaz o valoare logic (Tr ue sau Fal se). Anul 1 Matematic cod MA1109 Matematic-Informatic cod MB1109
Precizia numerelor sunt reprezentate prin valori aproximative poate fi definit, practic, prin oricte zecimale se dorete. Prelucrrile asupra datelor numerice pot fi efectuate att pentru valori exacte ct i pentru valori aproximative. Astfel, unui numr i se poate asocia att o valoare exact ct i una aproximativ. De exemplu, 3 2 este o valoare exact, iar 66 . 0 este o valoare aproximativ a sa. Practic, tipurile de dat I nt eger i Real , sunt obiecte simple, iar Rat i onal i Compl ex sunt derivate din aceste fiind reprezentate prin raport de obiecte I nt eger i, respectiv pereche de I nt eger sau Real . Cu toate aceste, le vom considera pe toate ca obiecte simple, diferenierea urmnd a o face n momentul unor implementri specifice. Asupra obiectelor numerice pot fi efectuate urmtoarele prelucrri: - operaii aritmetice (adunare, scdere, nmulire, mprire) cu ajutorul operatorilor specifici (+, - , *, / ); - aplicarea unor funcii matematice predefinite (ca de exemplu, ln Log[ . . . ] , exp E, sin Si n[ . . . ] , cos Cos[ . . . ] ) sau definite de utilizator. De asemenea, avem la dispoziie i o serie de constante numerice dintre care amintim Pi ( 14159 . 3 = ), E ( 7182 . 2 = e ), I ( 1 = i ), I nf i ni t y ( ), Eul er Gamma ( 577216 . 0 = ), Gol denRat i o ( 2 5 1 + ). O alt constant, care ns nu poate fi determinat dar joac un rol foarte important n cazul excepiei 0 0 este I ndet er mi nat e. De asemenea, regsim i numrul complex de argument necunoscut i modul infinit sub denumirea Compl exI nf i ni t y. Aa cum am precizat anterior, Mathematica poate efectua i prelucrri simbolice. Obiectul de baz n astfel de prelucrri este simbolul, iar tipul de dat corespunztor este Symbol . Pentru a verifica tipul unui obiect se poate utiliza funcia Head care returneaz o denumirea tipului (I nt eger , Real , Symbol , etc.). Principala regul sintactic pentru construcia simbolurilor este: Simbolurile sunt succesiuni de litere (mari sau mici), cifre i caracterul $, cu restricia c nu pot ncepe niciodat cu o cifr. De asemenea, deoarece Mathematica este un sistem case sensitive, dou simboluri difer chiar dac se deosebesc prin modul de scriere al literelor (mari ntr-o parte i mici n cealalt parte). De exemplu, simbolurile aaa i aAa sunt diferite. Dei nu este ca restricii absolute, este de indicat ca simbolurile s fie definite respectnd urmtoarele convenii: aaa ca simbol de utilizator; Anul 1 Matematic cod MA1109 Matematic-Informatic cod MB1109
Aaa ca simbol de sistem; $Aaa ca simbol global de sistem; aaa$, aa$nn, ca simboluri locale definite de sistem, unde codificarea a reprezint literele mici, A literele mari, iar n cifre. Simbolurile pot fi utilizate n dou moduri: - pentru a efectua calcule simbolice, ca de exemplu n dezvoltarea binomului ( ) 2 b a + pentru a obine 2 2 2 b ab a + + . - ca variabile, pentru a defini obiecte simple sau structurate. n acest mod, simbolul este asociat cu o valoare, folosind n prealabil operaia de atribuire (=), si mbol =val oar e. n urma operaiei de atribuire, simbolul va fi reprezentat, pe toat durata sesiunii de lucru sau pn i se modific coninutul, prin valoarea atribuit. De fiecare dat cnd se folosete un simbol care are ncrcat o valoare, Mathematica va folosi acea valoare. Spre exemplu: In[1]:= a=2; In[2]:= ( ) 2 b a + Out[2]= 4 4 2 + + b b In[3]:= b=3; In[4]:= ( ) 2 b a + Out[4]= 25 Comentariul execuiilor. La prima execuie, simbolului a i s-a atribuit valoarea 2, iar cnd s-a cerut efectuarea calculului ( ) 2 b a + rezultatul a fost calculat inndu-se cont de valoarea simbolului a i de faptul c b nu are nici o valoare atribuit. Dup atribuirea din execuia a treia, calcului lui ( ) 2 b a + s-a rezumat la o prelucrare numeric. Operaia de atribuire poate fi realizat mai multor simboluri fie individual (symbol 1=val oar e1; symbol 2=val oar e1; symbol 3=val oar e2), fie simultan dac se atribuie aceeai valoare (symbol 1= symbol 2= symbol 3=val oar e). Remarcm c dac unui simbol i s-a atribuit o valoare, atunci el nu mai poate fi folosit n prelucrri simbolice. Datorit acestui fapt, simbolurile pot fi mpite i n urmtoarele dou categorii: simboluri neiniializate i iniializate. Un simbol iniializat i poate pierde valoarea, adic se poate reseta, i deveni astfel simbol neinializat dac i se atribuie valoare punct (. ) sau se apeleaz una dintre funciile Clear[symbol] sau ClearAll[]. Exemple: In[5]:= a=. In[6]:= Cl ear [ a] Anul 1 Matematic cod MA1109 Matematic-Informatic cod MB1109
In[7]:= Cl ear Al l [ ] n plus, funcia Cl ear [ . . . ] are mai multe definiii i permite, de asemenea, resetarea mai multor simboluri simultan (Cl ear [ symbol 1, symbol 2] ) sau chiar o resetare a simbolurilor bazat pe wildcald (Cl ear [ a*] pentru resetarea tuturor simbolurilor care ncep cu litera a). Astfel, funcia Cl ear Al l [ ] este echivalent cu Cl ear [ *] . Valorile logice sunt i ele prezente n Mathematica, fiind reprezentate prin simbolurile Tr ue i Fal se. Aceste simboluri se obin fie din atribuiri, fie ca rezultate ale unor expresii relaionale sau logice sau valori ale unor funcii de tip predicat (denumirile lor se termin cu Q, ca de exemplu Number Q[ . . . ] , Symbol Q[ . . . ] ). In[8]:= Number Q[ 23] Out[8]= Tr ue In[8]:= Number Q[ Pi ] Out[8]= Fal se irurile de caractere sunt i ele prezente n Mathematica, tipul de dat corespunztor fiind St r i ng. Ele se reprezint ca o succesiune de caractere cuprinse ntre ghilimele. Exemplu: In[9]:= si r =Un si r de car act er e; O observaie general valabil pentru programarea n Mathematica este i faptul c o execuie poate conine mai multe comenzi separate prin punct i virgul (; ) afindu-se doar rezultatul ultimei comenzi sau nimic dac ultima comand se termin i ea cu caracterul punct i virgul (; ). Aadar, caracterul ; joac i rol de delimitator de comenzi (n cadrul unei execuii), dar poate avea i rolul de a inhiba afiarea rezultatului unei execuii. Exist i ali delimitatori, ei nefiind specificai ca obiecte propriu-zise: - virgula (, ) are rolul de a separa parametrii funciilor; - parantezele rotunde ( ) au rolul de a grupa subexpresiile n cadrul expresiilor; - parantezele drepte [ ] au rolul de a grupa parametrii funciilor; - parantezele duble drepte [ [ ] ] permit specificarea elementelor listelor. - acoladele { } ajut la definirea listelor. - iar ( * *) permit scrierea comentariilor. Listele sunt obiecte definite cu ajutorul obiectelor simple i fac parte din categoria obiectelor structurate.
Obiecte structurate.
Obiectele structurate sunt constituite pe baza altor obiecte ntre care exist o relaie de structur. Cele mai importante obiecte structurate din Mathematica sunt listele, expresiile i funciile. ntre aceste se mai pot stabili i reguli de transformare i abloane. Anul 1 Matematic cod MA1109 Matematic-Informatic cod MB1109
Cea mai simpl structur de date este cea de list i presupune gruparea mai multor obiecte (de acelai tip sau de tipuri diferite). Se pot efectua prelucrri la nivelul entitilor sau la nivelul elementelor lor. Elementele unei liste pot fi la rndul lor obiecte simple sau structurate. Tipul de date al listelor poart denumirea Li st . Funcia Li st Qverific dac un obiect dat este de tipul Li st sau nu. Forma general a listelor este: {el 1, el 2, . . . , el n}. Pentru a specifica un element al unei liste se folosete notaia indexat, numerotarea indecilor pornind de la 1: l i st a[ [ i ndex] ] Obiectele de tip Li st ale cror elemente sunt valori numerice sunt folosite, n general, pentru definirea vectorilor, matricelor i mulimilor din matematic. Exemple: In[10]:= a={1, - 2, 0} Out[10]= {1, - 2, 0} In[11]:= b={{- 1, 0, 5}, {1, 2, 0. 5}, {3, - 2, 0}} Out[11]= {{- 1, 0, 5}, {1, 2, 0. 5}, {3, - 2, 0}} In[12]:= a[ [ 3] ] Out[12]= 0 In[13]:= b[ [ 2, 3] ] Out[13]= 0. 5 In[14]:= b[ [ 3] ] Out[14]= {3, - 2, 0} Comentariul execuiilor. Execuiile 10 i 11 atribuie simbolurilor a i respectiv b dou liste, reprezentnd un vector i, respectiv, o matrice din matematic. Observm c lista cu numele a are elementele valori numerice, iar elementele listei b sunt obiecte structurate (liste). Indexarea din execuia 12 a extras din lista a elementul de pe poziia 3 i s-a afiat valoarea (0). n mod analog, s-a procedat la execuia 14. La 13 ns observm cum s-a prelucrat un element al unei subliste dintr-o list: s-a extras elementul din sublista 2 poziia 3 i s-a afiat valoarea (0. 5). Expresiile sunt alte obiecte structurate i se obin din obiecte simple prin aplicarea unor operatori adecvai (aritmetici, relaionali, logici). Regulile de creare ale expresiilor sunt identice cu cele folosite de limbajul C, relaiile de prioritate fiind i ele aceleai. Astfel, avem urmtorii operatori ce sunt utilizai frecvent n construirea expresiilor: +, adic operatorul de adunare; - , operatorul de scdere; ++, operatorul de incrementare; - - , operatorul de decrementare; * sau spaiu (blank), operatorul de nmulire; / , operatorul de mprire; Anul 1 Matematic cod MA1109 Matematic-Informatic cod MB1109
^, operatorul de ridicare la putere; ==, operatorul de egalitate logic; <, >, <=, >=, operatorii de inegalitate logic; ! =, operatorul diferit; ! , operatorul de negare logic; &&, operatorul de conjuncie logic; | | , operatorul de disjuncie logic.
Regulile de transformare exprim o legtur ntre dou obiecte i sunt utilizate pentru a asigna local valori unor simboluri. Cea mai des utilizat definiie a regulilor de transformare este urmtoarea: si mbol - >val oar e Ele se aplic folosind operatorul de nlocuire / . : expr esi e/ . si mbol - >val oar e sau expr esi e/ . {si mbol 1- >val oar e1, si mbol 2- >val oar e2} Astfel, nucleul programului evalueaz expr esi e i nlocuiete fiecare simbol si mbol cu valoarea val oar e (conform datelor din dreapta operatorului de nlocuire), returnnd cea mai simpl form care nu mai poate fi prelucrat. Exemplu: In[15]:= 3 + 2 x / . x- >- 4 Out[15]= - 5 In[16]:= 2 x + 3 y / . {x- >3, y- >- 1} Out[16]= 3 In[17]:= x Out[17]= x
Ca observaie foarte important precizm c valorile simbolurilor nu se altereaz n urma folosirii lor n reguli de transformare, avnd un caracter local (n cadrul sesiunii de lucru), singura metod de a modifica valoarea la nivel global fiind atribuirea (ce se realizeaz aa cum am vzut cu ajutorul operatorului de atribuire, =). n Mathematica toate comenzile sunt de fapt funcii. Ele sunt de dou tipuri: proprii sistemului (identificate din punct de vedere sintactic prin faptul c numele lor debuteaz cu o majuscul) i definite de utilizator. Funciile definite de utilizator se caracterizeaz prin: numele prin care este accesat; argumentele elementele variabile ale funciei (opionale); expresie care definete prelucrarea sau prelucrrile pe care le efectueaz. Ele se definesc conform regulii: Anul 1 Matematic cod MA1109 Matematic-Informatic cod MB1109
Numef unct i e[ ar g1_, ar g2_, ar g3_] : =expr esi e Numele se stabilete conform regulilor de creare ale simbolurilor. Argumentele pot lipsi din definiia unei funii certificnd astfel c nu exist elemente variabile n execuia ei. Dac se stabilesc argumente, acestea pot fi generale (ca tip, adic simboluri) sau specifice (reprezentnd clase de obiecte). Mecanismul de funcionare a funciilor este bazat pe un set de reguli de tip pattern matching (potrivirea aboanelor). Un ablon reprezint o clas de obiecte, iar notaia lui se face cu ajutorul liniuei de subliniere (_, adic underscore). Dup liniua de subliniere se poate aduga i un tip de obiecte, restrngnd astfel aplicabilitatea funciei la tipul de date specificat (pentru argumentul specificat). Apelarea unei funcii se va face ns fr liniua de subliniere i, dup caz, fr tipul de date specificat n definiie. Exemplu: In[18]:= f un[ x_I nt eger ] : =2 x + 3 In[19]:= f un[ 2] Out[19]= 7 In[20]:= f un[ 2. ] Out[20]= f un[ 2. ] Comentariul execuiilor. n cadrul execuiei 18, s-a definit o funcie cu numele f un i un singur argument x de tip I nt eger . n momentul execuiei 19, Mathematica observ c parametrul funciei f un, adic 2, este de tip I nt eger i decide c poate aplica definiia nregistrat prin comanda 18; astfel, nlocuind ablonul x cu valoarea 2 i prelucrnd valorile numerice se returneaz valoarea 7. Execuia 20 nu poate returna o valoare numeric i nici nlocui ablonul pentru c parametrul funciei este de tip Real i nu I nt eger cum accept definiia dat. Remarcm i faptul c execuia comenzii 18, fiind vorba de definiia unei funcii, nu returneaz nimic. Operatorul folosit : =nu este identic ca funcionalitate cu operatorul de atribuire = pentru c el nu realizeaz o atribuire n momentul execuiei, ci tocmai n momentul apelrii funciei, nlocuind apelul ei cu expresia ce o definete i abloanele cu valorile specificate ca parametri. O alt observaie este legat i de parantezele drepte folosite pentru ncadrarea parametrilor indiferent dac acetia exist sau nu (prin definiie), att la definire ct i la apelare. Dac argumentele unei funcii (la definire) nu conin abloane, adic liniua de subliniere, atunci practic trebuie realizat o atribuire, deci se trebuie folosit operatorul de atribuie =. Exemplu: In[21]:= f [ x] =2 x + 3 Out[21]= 2 x + 3 In[22]:= f [ 2] Out[22]= f [ 2] Anul 1 Matematic cod MA1109 Matematic-Informatic cod MB1109
In[23]:= f [ x] / . x- >2 Out[23]= 7 Comentariul execuiilor. Execuia 21 realizeaz crearea ablonului f [ x] care este folosit ca funcie (are loc practic o simulare a unei funcii) n comanda 23. Obsevm c n execuia 22 nu se efectueaz nici o nlocuire n expresia lui f [ x] i este firesc acest lucru innd cont c nu a avut loc n prealabil nici o definiie a funciei f .