Sunteți pe pagina 1din 8

Anul 1

Matematic cod MA1109


Matematic-Informatic cod MB1109

Cursul 2.


Obiecte i simboluri.

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 .

S-ar putea să vă placă și