Documente Academic
Documente Profesional
Documente Cultură
Introducere.
1 Problematica
In accepţiunea acestui curs noţiunea de ”Software matematic” se referă la proiectarea şi utilizarea
unor sisteme soft destinate rezolvării unor probleme ce apar ı̂n ştiinţă şi tehnică. Aceste sisteme sunt
concepute astfel ı̂ncât să asiste utilizatorul ı̂n efectuarea unor calcule complicate şi/sau voluminoase
corespunzătoare unor probleme reale precum şi ı̂n vizualizarea facilă a rezultatelor.
Etapele parcurse ı̂n rezolvarea unei probleme specifice unui anumit domeniu sunt:
(a) Enunţarea problemei. Este realizată de către un expert uman al domeniului respectiv. Core-
spunde stabilirii datelor de intrare şi a scopului urmărit.
(b) Formalizarea problemei. Este realizată de către un expert uman al domeniului respectiv
eventual ı̂n colaborare cu un matematician. Rezultatul acestei etape este un model matematic
mai simplu sau mai complex care poate conţine: formule, funcţii, sisteme de ecuaţii/inecuaţii
etc.
(c) Rezolvarea problemelor matematice ce intervin ı̂n model. Aceasta este etapa in care poate
interveni un sistem de software matematic. Rezultatul va fi un obiect matematic (număr,
expresie, mulţime, funcţie, vector, matrice, grafic etc.)
(d) Interpretarea rezultatului. Este realizată de către un expert uman al domeniului. Rezultatul
este un răspuns la problema enunţată enunţat folosind termeni specifici domeniului din care
a provenit problema.
1
2 Structura unui sistem de software matematic
Module soft pentru prelucrări matematice au fost realizate incă din anii 1960 când calculatoarele
au ı̂nceput să devină un instrument ı̂n rezolvarea problemelor tehnice şi ştiinţifice. Aceastea erau
insă dedicate unui anumit tip de probleme şi erau grupate ı̂n biblioteci de unde erau apelate de
către programe scrise ı̂n limbaje de uz general. Adesea setul de parametri ai acestor module era
mare iar utilizatorul trebuia sa cunoască cel puţin câteva dintre detaliile de realizare a modulului.
Sistemele integrate, care permit abordarea unei palete largi de calcule au apărut ı̂n anii 1980
o dată cu dezvoltarea puterii de calcul şi evoluţia conceptelor de programare. Oferind adesea o
interfaţă uşor de utilizat, aceste sisteme permit utilizatorului să se concentreze mai mult asupra
problemei şi mai puţin asupra metodelor matematice de rezolvare a acesteia.
În continuare prin sistem de software matematic (prescurtat SSM) vom ı̂nţelege un astfel de
sistem integrat. Un SSM este de regulă constituit din trei componente:
• Nucleu. Conţine funcţiile de bază (care se apelează prin intermediul unui limbaj de comandă
specific).
• Ansamblu opţional de pachete. Conţine funcţii suplimentare celor de bază destinate prob-
lemelor specifice unui anumit domeniu. Pentru a utiliza funcţiile din cadrul lor, pachetele
trebuie ı̂ncărcate explicit. Posibilitatea de a adăuga pachete de noi funcţii oferă flexibilitate
acestor sisteme.
• Numerice. Rezultatele acestor prelucrări sunt numere. Exemple de astfel de prelucrări sunt:
calculul integralei definite a unei funcţii, determinarea rădăcinilor unui polinom cu coeficienţi
numerici, determinarea limitei unui şir numeric etc.
• Simbolice. Rezultatele prelucrărilor simbolice sunt de regulă expresii algebrice sau chiar
propoziţii matematice. Exemple de astfel de prelucrări sunt: calculul primitivei unei funcţii,
determinarea rădăcinilor unui polinom cu coeficienţi simbolici, efectuarea unui raţionament
logic etc.
• Grafice. Rezultatele acestor prelucrări sunt de fapt reprezentări grafice ale unor funcţii, curbe,
suprafeţe sau alte obiecte grafice descrise prin ecuaţii sau prin punctele pe care le conţin. Pot
fi create si obiecte grafice pornind de la primitive.
2
Sistemele de software matematic oferă posibilitatea efectuării fiecăreia dintre aceste prelucrări.
Unele prelucrări pot fi efectuate direct existând comenzi specifice iar altele pot fi descrise ı̂n limbajul
de programare specific sistemului. Spre deosebire de limbajele de programare de uz general sistemele
de software matematic conţin un limbaj de comandă mult mai bogat ı̂n sensul că pot fi specificate
printr-o singură comandă şi prelucrări bazate pe algoritmi relativ complicaţi (de exemplu inversarea
unei matrici, rezolvarea simbolică sau numerică a unui sistem de ecuaţii diferenţiale etc).
4 Caracteristici
Un SSM are următoarele caracteristici care ı̂l diferenţiază de alte sisteme de programare:
4. Interfaţa cu utilizatorul. Sistemele actuale posedă interfeţe grafice care permit introducerea şi
obţinerea formulelor matematice ı̂n forma clasică folosind simbolurile cunoscute din matem-
atică. În aceste condiţii nu e necesar ca utilizatorul să cunoască comenzile sistemului fiind
suficient să selecteze simbolurile adecvate dintr-o ”paletă” de simboluri pentru a construi
formulele.
5. Caracterul deschis şi flexibil. Majoritatea sistemelor actuale permit completarea funcţionalităţii
sistemului prin adăugarea de funcţii noi (descrise ı̂n limbajul specific sistemului).
7. Elaborarea de documente. Sistemele recente conţin şi facilităţi de editare de texte ştiinţifice
astfel ı̂ncât pot fi elaborate documente care conţin atât texte cât şi rezultate ale unor prelucrări
efectuate ı̂n cadrul sistemului.
8. Completitudine. Asistă utilizatorul ı̂n analiza şi rezolvarea problemelor precum şi ı̂n prezentarea
rezultatelor.
5 Domenii de aplicabilitate
Sistemele de software matematic se pot aplica ı̂n domenii diferite, cum ar fi:
• Matematică (pentru verificarea unei teorii, enunţarea de noi conjecturi, elaborarea unor
demonstraţii care implică doar calcule de rutină sau raţionamente standard, vizualizarea
grafică a unor obiecte geometrice etc.);
3
• Fizică (pentru prelucrarea datelor experimentale şi simularea soft a unor fenomene fizice);
• Statistică (pentru vizualizarea grafică şi analiza datelor, efectuarea de inferenţe statistice
pornind de la date obţinute din sondaje, analiza corelaţiei dintre date etc.);
• Inginerie (pentru prelucrarea semnalelor şi modelarea sistemelor, proiectare asistată de cal-
culator);
• Biologie şi medicină (pentru simularea fenomenelor biomecanice, prelucrarea semnalelor şi
imaginilor din medicină etc.);
• Economie şi finanţe (pentru modelare financiară, planificare şi analiză economică, efectuare
de predicţii etc.);
6 Exemple de sisteme
La ora actuală există o multitudine de pachete soft destinate efectuării de prelucrări numerice,
simbolice sau grafice. Pentru a facilita identificarea şi accesarea pachetului adecvat unei anumite
probleme au fost constituite colecţii de date care conţin informatii privind diferite pachete. O astfel
de colecţie este accesibilă la [http://gams.nist.gov].
Unele dintre pachetele de software matematic sunt orientate spre sarcini precise şi oarecum
limitate la un anumit domeniu (cum sunt, de exemplu, pachetele de reprezentări grafice (Data-
Plot, GnuPlot), programele de prelucrare a datelor experimentale (TableCurve, Origin, DataFit,
GnuFit etc), pachetele destinate prelucrărilor statistice (Statistica, SPSS, SPlus, S, R), sistemele
de rezolvare a problemelor de optimizare (MinOpt), sistemele de rezolvare a ecuaţiilor diferenţiale
ordinare şi cu derivate parţiale etc.), iar altele au caracter mai general oferind facilităţi care permit
utilizarea lor ı̂n diverse domenii.
Dintre sistemele ce fac parte din ultima categorie, cele mai frecvent utilizate sunt enumerate ı̂n
continuare.
Maple (versiune curentă: Maple 13)[www.maplesoft.com] Este un sistem integrat (similar cu Math-
ematica) care permite efectuarea de calcule simbolice si numerice, vizualizarea rezultatelor şi
toate prelucrile necesare simulării şi modelării specifice diferitelor domenii (ştiintă, inginerie,
finanţe etc.). La fel ca şi Mathematica posedă o puternică componentă de calcul simbolic.
Oferă facilităţi de interfaţare cu alte sisteme. De exemplu permite generare de cod C, Fortran,
Visual Basic, Java precum şi asigură conexiune uşoară cu Excel şi Matlab.
Matlab (versiune curentă: Matlab R2009a) [www.mathworks.com] Este tot un sistem integrat care
excelează prin facilităţile oferite pentru modelare şi simulare precum şi pentru colecţia foarte
mare de ”toolbox-uri” dedicate unor domenii ştiintifice şi inginereşti variate. Facilităţile de
calcul simbolic (destul de limitate in primele versiuni) au fost extinse prin interfaţarea cu
Maple. Scilab [http://www.scilab.org/] este o variantă gratuită a lui Matlab caracterizată
4
prin facilităţi de bază şi interfaţă similară cu cea din Matlab fără a pune ı̂nsă la dispoziţia
utilizatorilor instrumente similare ”toolbox-urilor” din Matlab.
MathCad (versiune curentă:MathCAD 14.0) [www.mathsoft.com] Este tot un sistem integrat ori-
entat ı̂n particular către facilitarea calculelor numerice şi vizualizarea grafică a rezultatelor.
Deşi posedă facilităţi de calcul simbolic, acestea nu le egalează pe cele oferite de Mathematica
sau Maple.
5
Pentru fiecare dintre aceste categorii Mathematica oferă numeroase facilităţi. În continuare vor
fi prezentate câteva dintre acestea făcând observaţia că ı̂n toate exemplele şirurile de caractere
In[]:=, respectiv Out[]= sunt afişate de către sistem, utilizatorul introducând doar comanda care
apare după In[]:=. Rezultatul care apare după Out[]= este cel afişat de sistem. În realitate
ı̂ntre parantezele drepte de la In[] şi Out[] apar valori numerice care identifică comanda, respectiv
răspunsul.
Câteva dintre particularităţile prelucrărilor numerice care pot fi efectuate ı̂n Mathematica sunt:
• Posibilitatea de a lucra cu numere de precizie oricât de mare (precizie arbitrară).
Exemplu. Calculul lui log(4π) cu precizie de 20 de zecimale:
In[]:= N[ Log[4 Pi], 20 ]
Out[]= 2.53102424696929079297
• Determinarea soluţiilor analitice pentru ecuaţii polinomiale, sisteme de ecuaţii liniare şi sis-
teme de ecuaţii diferenţiale.
Exemplu. Rezolvarea ecuaţiei ax2 + bx + c = 0
In[]:= Solve[a x^2+b
√
x+c==0,x] √
−b− b2 −4ac −b+ b2 −4ac
Out[]= {{x− > 2a }, {x− > 2a }
6
• Determinarea limitelor de şiruri şi serii.
• Trasări de grafice ı̂n două şi trei dimensiuni (curbe şi suprafeţe) şi posibilitatea de a efectua
transformări geometrice şi de a controla culoarea, umbrirea, iluminarea.
• Posibilitatea de a descrie (printr-un limbaj grafic) obiecte geometrice pe baza unor primitive
(puncte, linii, cercuri, elipse, poligoane, etc.);
• Programare procedurală: oferă posibilitatea de a defini module care conţin prelucrări alterna-
tive, iterative şi recursive.
Exemplu. Determinarea primului număr prim mai mare decât un număr dat:
(* definire rutina de calcul *)
In[]:= NextPrime[n Integer]:=Module[{k=n}, While[!PrimeQ[k], k++]; Return[k]]
In[]:= NextPrime[10] (* apel rutina *)
Out[]= 11 (* rezultat *)
• Programare funcţională: oferă posibilitatea de a lucra cu funcţii pure şi operatori funcţionali
precum şi de a determina rezultatul unei prelucrări iterative prin determinarea punctului fix
al unei funcţii.
√
Exemplu. Determinarea lui 2 prin rezolvarea ecuaţiei x2 = 2 cu ajutorul metodei lui Newton.
In[]:= newton[x ]:=N[1/2*(x+2/x)] (* definirea funcţiei asociate unei iteraţii *)
In[]:= FixedPoint[newton, 1] (* determină punctul fix = limita procesului iterativ *)
Out[]= 1.414
• Programare bazată pe şabloane şi reguli de transformare: oferă metode de căutare (”pattern
matching”) şi substituţie pentru obiectele care descriu structurile matematice. Cum ı̂n Math-
ematica majoritatea structurilor matematice sunt reprezentate prin expresii, o noţiune funda-
mentală o reprezintă regula de transformare care specifică modul ı̂n care poate fi transformată
o expresie prin ı̂nlocuirea unor componente ale sale (variabile sau subexpresii). Cu ajutorul
regulilor de transformare pot fi definite funcţii la fel ca ı̂n matematică: prin proprietăţile lor.
Exemplu. Definirea funcţiei logaritmice:
In[]:= log[1]=0
In[]:= log[E]=1
In[]:= log[x y ]:=log[x]+log[y]
In[]:= log[x ˆ n ]:=n log[x]
7
Utilizare:
In[]:= log[(x y)ˆn]
Out[]= n log[x]+n log[y].
• Programare orientată pe obiecte. Oferă suport pentru definirea obiectelor şi pentru realizarea
aplicaţiilor prin respectarea paradigmelor acestui stil de programare.
• Programare vizuală. Prin gestiunea obiectelor de tipurile document, celula, buton sau paleta
pot fi proiectate interfete adecvate problemelor de rezolvat.
• Datele pe care le prelucrează pot fi citite din fişiere de diferite formate (de exemplu fişiere
text create prin programe Pascal sau C).
• Rezultatele obţinute pot fi convertite ı̂n diferite formate (de exemplu expresiile pot fi descrise
ı̂n format C, Fortran sau TeX). Începând cu versiunea 4.0 a fost introdusă posibilitatea de a
converti conţinutul unui document ı̂n format HTML.
• Mathematica poate comunica cu alte programe prin intermediul unui standard de comunicaţie
de nivel ı̂nalt. Prin MathLink funcţiile din Mathematica pot fi apelate din programe C, iar din
Mathematica pot fi apelate funcţii C. O dată cu versiunea 4.1 a fost introdusă posibilitatea
de interfaţare cu Java prin J/Link.
8
Subsistemul care asigură interfaţa cu utilizatorul este specific tipului de implementare (există
variante pentru Windows, Unix, MacIntosh).
În implementările iniţiala (până la versiunea 2) se lucra ı̂n mod text ı̂n sensul că sistemul afişa
un prompter de interogare (In[]:=) şi aştepta introducerea unei comenzi după care era evaluată
funcţia şi afişat rezultatul.
În implementările actuale, sistemul de interfaţă este bazat pe ferestre şi asigură gestiunea unor
”documente” interactive numite notebooks-uri. Prin intermediul notebooks-urilor, care pot conţine
texte organizate ierarhic mixate cu descrieri de calcule matematice şi grafice pot fi create materiale
didactice sau de prezentare suficient de sofisticate. Conţinutul unui document este organizat ı̂n
celule care pot conţine una sau mai multe linii ecran şi una sau mai multe expresii. Din punct de
vedere al tipului lor celulele pot fi de intrare (conţin comenzi transmise nucleului), de ieşire (conţine
rezultate ale prelucrărilor) sau text (conţin texte informative). În funcţie de tipul lor celulele pot
fi editate sau nu (de exemplu celulele de ieşire nu pot fi editate).
Dimensiunea unei celule este specificată prin intermediul unor paranteze drepte (brackets) am-
plasate ı̂n extremitatea dreaptă a documentului. Celulele pot fi grupate ierarhic pe mai multe
nivele asupra celulelor unui grup putându-se efectua prelucrări comune. Pentru a putea efectua
prelucrări asupra unei celule sau a unui grup de celule acestea trebuie selectate. Principalele pre-
lucrări care pot fi efectuate asupra celulelor sunt: evaluarea celulei curente, a celulelor selectate
sau a ı̂ntregului document, inchiderea/deschiderea unei celule/grup de celule, alegerea/modificarea
fonturilor pentru textele din celulele selectate, ştergerea unei celule/grup de celule.
Principala operaţie, cea de evaluare este solicitată prin combinaţia de taste SHIFT + RETURN.
După solicitarea evaluării sistemul prefixează comanda cu In[]:= iar ı̂n celula rezultat amplasează
Out[]=.
În versiunile mai mari decât 3.0 sistemul permite introducerea unor elemente active ı̂n cadrul
celulelor (”butoane” la a căror ”apăsare” este iniţiată o acţiune) precum şi utilizarea (sau definirea)
unor palete pentru a uşura ı̂ntroducerea comenzilor sau a unor caractere speciale.