Sunteți pe pagina 1din 9

Software matematic - Curs 1a. Introducere.

1

Problematica

In accept¸iunea acestui curs not¸iunea de ”Software matematic” se refer˘a la proiectarea ¸si utilizarea unor sisteme soft destinate rezolv˘arii unor probleme ce apar ˆın ¸stiint¸˘a ¸si tehnic˘a. Aceste sisteme sunt concepute astfel ˆıncˆat s˘a asiste utilizatorul ˆın efectuarea unor calcule complicate ¸si/sau voluminoase corespunz˘atoare unor probleme reale precum ¸si ˆın vizualizarea facil˘a a rezultatelor. Etapele parcurse ˆın rezolvarea unei probleme specifice unui anumit domeniu sunt:

(a) Enunt¸area problemei. Este realizat˘a de c˘atre un expert uman al domeniului respectiv. Core- spunde stabilirii datelor de intrare ¸si a scopului urm˘arit.

(b) Formalizarea problemei. Este realizat˘a de c˘atre 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 cont¸ine: formule, funct¸ii, sisteme de ecuat¸ii/inecuat¸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˘ar, expresie, mult¸ime, funct¸ie, vector, matrice, grafic etc.)

(d)

Interpretarea rezultatului. Este realizat˘a de c˘atre un expert uman al domeniului. Rezultatul este un r˘aspuns la problema enunt¸at˘a enunt¸at folosind termeni specifici domeniului din care a provenit problema.

Principala motivat¸ie a proiect˘arii sistemelor de software matematic o reprezint˘a necesitatea de a obt¸ine rapid ¸si f˘ar˘a erori rezultate pentru probleme de dimensiuni mari. Prelucr˘ari de rutin˘a, cum este rezolvarea unui sistem liniar, pot fi realizate manual doar dac˘a dimensiunea problemei (de exemplu, a sistemului) este rezonabil˘a (de exemplu, mai put¸in de 10 ecuat¸ii). Cu ajutorul calculatorului, ˆıns˘a, pot fi rezolvate sisteme care au sute ¸si mii de ecuat¸ii. Pe de alt˘a parte rezolvarea unor probleme necesit˘a utilizarea unor metode matematice ce nu sunt ˆıntotdeauna la ˆındemˆana speciali¸stilor dintr-un domeniu ¸stiint¸ific sau tehnic oarecare. Software-ul matematic elimin˘a aceast˘a dificultate ˆıntrucˆat are implementate o clas˘a larg˘a de metode matematice, utilizatorul trebuind doar s˘a le apeleze f˘ar˘a s˘a fie necesar s˘a cunoasc˘a detaliile implement˘arii lor. Nu trebuie neglijat faptul c˘a aceste sisteme pot fi utilizate ¸si ˆın scop didactic, la diferite nivele, pentru predarea de discipline ¸stiint¸ifice (matematic˘a, fizic˘a, chimie), inclusiv ˆın cadrul ˆınv˘at¸˘amˆantului la distant¸˘a.

1

2

Structura unui sistem de software matematic

Module soft pentru prelucr˘ari matematice au fost realizate inc˘a din anii 1960 cˆand calculatoarele

au ˆınceput s˘a devin˘a un instrument ˆın rezolvarea problemelor tehnice ¸si ¸stiint¸ifice. Aceastea erau ins˘a dedicate unui anumit tip de probleme ¸si erau grupate ˆın biblioteci de unde erau apelate de c˘atre programe scrise ˆın limbaje de uz general. Adesea setul de parametri ai acestor module era mare iar utilizatorul trebuia sa cunoasc˘a cel put¸in cˆateva dintre detaliile de realizare a modulului. Sistemele integrate, care permit abordarea unei palete largi de calcule au ap˘arut ˆın anii 1980 o dat˘a cu dezvoltarea puterii de calcul ¸si evolut¸ia conceptelor de programare. Oferind adesea o interfat¸˘a u¸sor de utilizat, aceste sisteme permit utilizatorului s˘a se concentreze mai mult asupra problemei ¸si mai put¸in asupra metodelor matematice de rezolvare a acesteia.

ˆ

In continuare prin sistem de software matematic (prescurtat SSM) vom ˆınt¸elege un astfel de

sistem integrat. Un SSM este de regul˘a constituit din trei componente:

Nucleu. Cont¸ine funct¸iile de baz˘a (care se apeleaz˘a prin intermediul unui limbaj de comand˘a specific).

Subsistem de interfat¸˘a. Permite transmiterea de comenzi sistemului ¸si furnizarea rezultatelor.

Interfat¸a poate fi de tip text (sistemul lucreaz˘a ca un interpretor) sau grafic˘a (bazat˘a pe doc-

umente de lucru).

In cazul interfet¸ei grafice dialogul cu utiliza-

torul se realizeaz˘a prin intermediul uneia sau mai multor ferestre. Fiecare corespunde unui document care cont¸ine comenzi, r˘aspunsuri sau texte descriptive introduse de c˘atre utilizator. Comenzile pot fi evaluate ˆın ordinea aleas˘a de c˘atre utilizator. Anumite sisteme se bazeaz˘a pe utilizarea unui limbaj de comand˘a (care poate fi v˘azut ca un limbaj de programare) pe cˆand altele permit rezolvarea problemei prin selectarea unor funct¸ii dintr-un sistem de meniuri.

fiind dificil˘a revenirea la o comand˘a anterioar˘a.

In cazul interfet¸ei tip text comenzile sunt preluate ¸si executate secvent¸ial

ˆ

ˆ

Ansamblu opt¸ional de pachete. Cont¸ine funct¸ii suplimentare celor de baz˘a destinate prob- lemelor specifice unui anumit domeniu. Pentru a utiliza funct¸iile din cadrul lor, pachetele trebuie ˆınc˘arcate explicit. Posibilitatea de a ad˘auga pachete de noi funct¸ii ofer˘a flexibilitate acestor sisteme.

3 Principalele tipuri de prelucr˘ari

Principalele prelucr˘ari efectuate de c˘atre un SSM pot fi grupate ˆın urm˘atoarele categorii:

Numerice. Rezultatele acestor prelucr˘ari sunt numere. Exemple de astfel de prelucr˘ari sunt:

calculul integralei definite a unei funct¸ii, determinarea r˘ad˘acinilor unui polinom cu coeficient¸i numerici, determinarea limitei unui ¸sir numeric etc.

Simbolice. Rezultatele prelucr˘arilor simbolice sunt de regul˘a expresii algebrice sau chiar propozit¸ii matematice. Exemple de astfel de prelucr˘ari sunt: calculul primitivei unei funct¸ii, determinarea r˘ad˘acinilor unui polinom cu coeficient¸i simbolici, efectuarea unui rat¸ionament logic etc.

Grafice. Rezultatele acestor prelucr˘ari sunt de fapt reprezent˘ari grafice ale unor funct¸ii, curbe, suprafet¸e sau alte obiecte grafice descrise prin ecuat¸ii sau prin punctele pe care le cont¸in. Pot fi create si obiecte grafice pornind de la primitive.

2

Sistemele de software matematic ofer˘a posibilitatea efectu˘arii fiec˘areia dintre aceste prelucr˘ari. Unele prelucr˘ari pot fi efectuate direct existˆand 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 cont¸in un limbaj de comand˘a mult mai bogat ˆın sensul c˘a pot fi specificate printr-o singur˘a comand˘a ¸si prelucr˘ari bazate pe algoritmi relativ complicat¸i (de exemplu inversarea unei matrici, rezolvarea simbolic˘a sau numeric˘a a unui sistem de ecuat¸ii diferent¸iale etc).

4 Caracteristici

Un SSM are urm˘atoarele caracteristici care ˆıl diferent¸iaz˘a de alte sisteme de programare:

1. Implementarea obiectelor matematice. Majoritatea obiectelor cu care se opereaz˘a ˆın matem- atic˘a (mult¸imi, vectori, matrici, funct¸ii, operatori, ecuat¸ii etc) sunt implementate prin tipuri sau obiecte proprii.

2. Implementarea prelucr˘arilor matematice. O serie de prelucr˘ari asupra obiectelor matematice (calculul limitelor, al derivatelor, al integralelor, rezolvarea ecuat¸iilor, reprezent˘ari grafice) sunt implementate pentru a fi apelate prin intermediul unei singure comenzi.

3. Limbaj avansat de descriere a problemelor. Sistemele de software matematic ofer˘a un limbaj propriu de descriere a problemelor ¸si modelelor matematice complexe.

4. Interfat¸a cu utilizatorul. Sistemele actuale posed˘a interfet¸e grafice care permit introducerea ¸si obt¸inerea formulelor matematice ˆın forma clasic˘a folosind simbolurile cunoscute din matem-

ˆ

In aceste condit¸ii nu e necesar ca utilizatorul s˘a cunoasc˘a comenzile sistemului fiind

suficient s˘a selecteze simbolurile adecvate dintr-o ”palet˘a” de simboluri pentru a construi

atic˘a.

formulele.

5. Caracterul deschis ¸si flexibil. Majoritatea sistemelor actuale permit completarea funct¸ionalit˘at¸ii sistemului prin ad˘augarea de funct¸ii noi (descrise ˆın limbajul specific sistemului).

6. Interfat¸a cu alte sisteme. Exist˘a posibilitatea de a prelua/transmite date de la/c˘atre alte aplicat¸ii. Funct¸iile unora dintre sisteme pot fi apelate prin intermediul unui protocol de interfat¸˘a (de exemplu, MathLink ¸si J/Link din Mathematica) din programe scrise ˆın limbaje de programare de uz general (de exemplu, C respectiv Java).

7. Elaborarea de documente. Sistemele recente cont¸in ¸si facilit˘at¸i de editare de texte ¸stiint¸ifice astfel ˆıncˆat pot fi elaborate documente care cont¸in atˆat texte cˆat ¸si rezultate ale unor prelucr˘ari efectuate ˆın cadrul sistemului.

8. Completitudine. Asist˘a utilizatorul ˆın analiza ¸si rezolvarea problemelor precum ¸si ˆın prezentarea rezultatelor.

5 Domenii de aplicabilitate

Sistemele de software matematic se pot aplica ˆın domenii diferite, cum ar fi:

Matematic˘a (pentru verificarea unei teorii, enunt¸area de noi conjecturi, elaborarea unor demonstrat¸ii care implic˘a doar calcule de rutin˘a sau rat¸ionamente standard, vizualizarea grafic˘a a unor obiecte geometrice etc.);

3

Fizic˘a (pentru prelucrarea datelor experimentale ¸si simularea soft a unor fenomene fizice);

Chimie (pentru simularea soft a structurilor moleculare si prelucrarea relat¸iilor ce descriu react¸iile chimice);

Statistic˘a (pentru vizualizarea grafic˘a ¸si analiza datelor, efectuarea de inferent¸e statistice pornind de la date obt¸inute din sondaje, analiza corelat¸iei dintre date etc.);

Inginerie (pentru prelucrarea semnalelor ¸si modelarea sistemelor, proiectare asistat˘a de cal- culator);

Biologie ¸si medicin˘a (pentru simularea fenomenelor biomecanice, prelucrarea semnalelor ¸si imaginilor din medicin˘a etc.);

Economie ¸si finant¸e (pentru modelare financiar˘a, planificare ¸si analiz˘a economic˘a, efectuare de predict¸ii etc.);

6 Exemple de sisteme

La ora actual˘a exist˘a o multitudine de pachete soft destinate efectu˘arii de prelucr˘ari numerice, simbolice sau grafice. Pentru a facilita identificarea ¸si accesarea pachetului adecvat unei anumite probleme au fost constituite colect¸ii de date care cont¸in informatii privind diferite pachete. O astfel de colect¸ie este accesibil˘a la [http://gams.nist.gov]. Unele dintre pachetele de software matematic sunt orientate spre sarcini precise ¸si oarecum limitate la un anumit domeniu (cum sunt, de exemplu, pachetele de reprezent˘ari grafice (Data- Plot, GnuPlot), programele de prelucrare a datelor experimentale (TableCurve, Origin, DataFit, GnuFit etc), pachetele destinate prelucr˘arilor statistice (Statistica, SPSS, SPlus, S, R), sistemele de rezolvare a problemelor de optimizare (MinOpt), sistemele de rezolvare a ecuat¸iilor diferent¸iale ordinare ¸si cu derivate part¸iale etc.), iar altele au caracter mai general oferind facilit˘at¸i care permit utilizarea lor ˆın diverse domenii. Dintre sistemele ce fac parte din ultima categorie, cele mai frecvent utilizate sunt enumerate ˆın continuare.

Mathematica (versiune curent˘a: Mathematica 7.0)[www.wolfram.com] Este un sistem integrat care permite efectuarea de calcule simbolice si numerice precum ¸si vizualizarea rezultatelor. Exist˘a atˆat variante pentru industrie cˆat ¸si pentru educat¸ie.

Maple (versiune curent˘a: Maple 13)[www.maplesoft.com] Este un sistem integrat (similar cu Math- ematica) care permite efectuarea de calcule simbolice si numerice, vizualizarea rezultatelor ¸si toate prelucrile necesare simul˘arii ¸si model˘arii specifice diferitelor domenii (¸stiint˘a, inginerie, finant¸e etc.). La fel ca ¸si Mathematica posed˘a o puternic˘a component˘a de calcul simbolic. Ofer˘a facilit˘at¸i de interfat¸are cu alte sisteme. De exemplu permite generare de cod C, Fortran, Visual Basic, Java precum ¸si asigur˘a conexiune u¸soar˘a cu Excel ¸si Matlab.

Matlab (versiune curent˘a: Matlab R2009a) [www.mathworks.com] Este tot un sistem integrat care exceleaz˘a prin facilit˘at¸ile oferite pentru modelare ¸si simulare precum ¸si pentru colect¸ia foarte mare de ”toolbox-uri” dedicate unor domenii ¸stiintifice ¸si inginere¸sti variate. Facilit˘at¸ile de calcul simbolic (destul de limitate in primele versiuni) au fost extinse prin interfat¸area cu Maple. Scilab [http://www.scilab.org/] este o variant˘a gratuit˘a a lui Matlab caracterizat˘a

4

prin facilit˘at¸i de baz˘a ¸si interfat¸˘a similar˘a cu cea din Matlab f˘ar˘a a pune ˆıns˘a la dispozit¸ia utilizatorilor instrumente similare ”toolbox-urilor” din Matlab.

MathCad (versiune curent˘a:MathCAD 14.0) [www.mathsoft.com] Este tot un sistem integrat ori- entat ˆın particular c˘atre facilitarea calculelor numerice ¸si vizualizarea grafic˘a a rezultatelor. De¸si posed˘a facilit˘at¸i de calcul simbolic, acestea nu le egaleaz˘a pe cele oferite de Mathematica sau Maple.

7 Mathematica. Prezentare general˘a.

Mathematica este un sistem software interactiv (din categoria ”Computer Algebra System - CAS”) care permite descrierea ¸si rezolvarea aplicat¸iilor ¸stiint¸ifice, ˆın special din domeniile matematicii ¸si fizicii. Face parte din categoria software-ului matematic ¸si, adeseori, este desemnat˘a ca un program care ofer˘a posibilitatea de a face matematic˘a cu ajutorul calculatorului. Mathematica poate fi folosit˘a ca ¸si: calculator numeric ¸si simbolic, sistem de vizualizare grafic˘a, limbaj de programare de nivel ˆınalt, platform˘a soft destinat˘a rul˘arii unor pachete cu aplicat¸ii specifice unui domeniu, sistem de reprezentare a cuno¸stint¸elor din domenii ¸stiint¸ifice ¸si tehnice. Mathematica a fost conceput˘a de c˘atre fizicianul Stephen Wolfram, prima versiune ap˘arˆand ˆın 1988. Urm˘atoarele versiuni (pˆan˘a la cea actual˘a, 6.0) au fost elaborate ˆın cadrul firmei Wolfram Research Inc (http://www.wolfram.com). De-a lungul evolut¸iei sale nucleul a fost ˆımbog˘at¸it cu noi algoritmi eficient¸i extinzˆandu-se sfera de probleme care pot fi rezolvate. Pe de alt˘a parte a evoluat ¸si interfat¸a cu utilizatorul de la simpla comunicare ˆın mod text prin introducere secvent¸ial˘a de comenzi pˆan˘a la interfale grafice ale versiunilor recente ¸si cele ale produselor derivate: CalculationCenter, WebMathematica, gridMathematica. CalculationCenter este un SSM construit pornind de la nucleul din Mathematica ¸si completat cu o interfat¸˘a grafic˘a bazat˘a pe select¸ia tipului de prelucrare dintr-un set de palete cu simboluri, operatori, comenzi etc. Nu e necesar ca utilizatorul sa fie familiar cu comenzile din Mathematica ci este suficient s˘a ¸stie ce problem˘a are de rezolvat ¸si s˘a selecteze simbolurile corespunz˘atoare. A fost conceput ca un ”asistent” pentru nespeciali¸stii ˆın matematic˘a care au de rezolvat probleme ce necesit˘a utilizarea unor metode matematice. WebMathematica este un produs recent care ofer˘a posibilitatea de a efectua calcule interac- tive ¸si de a vizualiza rezultatele (inclusiv ˆın manier˘a grafic˘a) prin intermediul unui browser Web. Prin WebMathematica (conceput˘a folosind tehnologia Java servlet) se pot proiecta site-uri ded- icate rezolv˘arii problemelor specifice unui domeniu. Se beneficiaz˘a de ˆıntreaga putere de calcul algoritmic a Mathematicii iar utilizatorul nu trebuie decˆat s˘a foloseasc˘a un browser nefiind nece- sar˘a cunoa¸sterea comenzilor din Mathematica. Un exemplu de site bazat pe WebMathematica este Integrator (http://integrals.wolfram.com) care permite calculul integralelor. GridMathematica este conceput ca un sistem care permite efectuarea de prelucr˘ari distribuite exploatˆand resursele oferite de clusterele de calculatoare.

7.1 Specificul utiliz˘arii ca sistem pentru prelucr˘ari matematice

Prelucr˘arile matematice sunt de una dintre categoriile:

Calcule simbolice (de exemplu, (a + b) 2 = a 2 + 2ab + b 2 ).

Calcule numerice (de exemplu, 2 + 3 = 5).

Reprezent˘ari grafice (de exemplu, tras˘ari ale graficelor de funct¸ii).

5

ˆ

In continuare vor

fi prezentate cˆateva dintre acestea f˘acˆand observat¸ia c˘a ˆın toate exemplele ¸sirurile de caractere

In[]:=, respectiv Out[]= sunt afi¸sate de c˘atre sistem, utilizatorul introducˆand doar comanda care

Pentru fiecare dintre aceste categorii Mathematica ofer˘a numeroase facilit˘at¸i.

 

ˆ

apare dup˘a In[]:=. Rezultatul care apare dup˘a Out[]= este cel afi¸sat de sistem.

In realitate

ˆıntre parantezele drepte de la In[] ¸si Out[] apar valori numerice care identific˘a comanda, respectiv r˘aspunsul. Cˆateva dintre particularit˘at¸ile prelucr˘arilor numerice care pot fi efectuate ˆın Mathematica sunt:

Posibilitatea de a lucra cu numere de precizie oricˆat de mare (precizie arbitrar˘a).

Exemplu. Calculul lui log(4π) cu precizie de 20 de zecimale:

In[]:= N[ Log[4 Pi], 20 ] Out[]= 2.53102424696929079297

Posibilitatea de a efectua prelucr˘ari numerice asupra structurilor matematice. De exemplu, permite efectuarea de prelucr˘ari asupra matricilor (inversare, determinarea valorilor proprii, a vectorilor proprii etc), funct¸iilor (derivare ¸si integrare numeric˘a, interpolare etc) ¸si ecuat¸iilor (rezolvarea numeric˘a a ecuat¸iilor algebrice ¸si a celor diferent¸iale).

Exemplu. Determinarea valorilor proprii ale matricii:

0.5

1.35

4

1

6.4

2

2

2

0

In[]:= a={{0.5,-1,2},{1.35,6.4,-2},{4,-2,0}} Out[]= In[]:=Eigenvalues[a]

Out[]={6.91991,-2.71409,2.69418}

(* definirea matricii *)

(* determinarea valorilor proprii *)

Posibilitatea de a efectua analize statistice ale datelor.

Din punct de vedere al calculului simbolic Mathematica ofer˘a facilit˘at¸i ca:

Efectuarea unor prelucr˘ari simbolice asupra expresiilor algebrice (de exemplu, expandare, factorizare, simplificare etc.).

Exemplu. Factorizarea lui a 3 b 3 In[]:= Factor[a^3-b^3] Out[]= (a b)(a 2 + ab + b 2 )

Determinarea solut¸iilor analitice pentru ecuat¸ii polinomiale, sisteme de ecuat¸ii liniare ¸si sis- teme de ecuat¸ii diferent¸iale.

Exemplu. Rezolvarea ecuat¸iei ax 2 + bx + c = 0 In[]:= Solve[a x^2+b x+c==0,x]

ax 2 + bx + c = 0 In[]:= Solve[a x^2+b x+c==0,x] Out[]= {{ x −

Out[]= {{x> b b 2 4ac

2a

}, {x > b+ b 2 4ac

2a

}

Calcul simbolic al derivatelor ¸si integralelor.

Exemplu. Calculul primitivei ln(x)dx In[]:= Integrate[Log[x],x] Out[]= x + xLog[x]

6

Determinarea limitelor de ¸siruri ¸si serii.

ˆ

In ceea ce prive¸ste facilit˘at¸ile grafice, Mathematica se caracterizeaz˘a prin:

Tras˘ari de grafice ˆın dou˘a ¸si trei dimensiuni (curbe ¸si suprafet¸e) ¸si posibilitatea de a efectua transform˘ari geometrice ¸si de a controla culoarea, umbrirea, iluminarea.

Vizualizarea reprezent˘arilor grafice 3D prin contururi ¸si densit˘at¸i.

Animarea pe ecran a reprezent˘arilor grafice.

Posibilitatea de a descrie (printr-un limbaj grafic) obiecte geometrice pe baza unor primitive (puncte, linii, cercuri, elipse, poligoane, etc.);

Exemplu. Reprezentarea suprafet¸ei definit˘a de x 2 + y 2 pentru (x, y) [2, 2] × [2, 2]:

In[]:= Plot3D[x^2+y^2,{x,-2,2},{y,-2,2}]

7.2 Specificul utiliz˘arii ca limbaj de programare

Mathematica ofer˘a suport pentru a programa ˆın oricare dintre urm˘atoarele stiluri:

Programare procedural˘a: ofer˘a posibilitatea de a defini module care cont¸in prelucr˘ari alterna- tive, iterative ¸si recursive.

Exemplu. Determinarea primului num˘ar prim mai mare decˆat un num˘ar 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 funct¸ional˘a: ofer˘a posibilitatea de a lucra cu funct¸ii pure ¸si operatori funct¸ionali precum ¸si de a determina rezultatul unei prelucr˘ari iterative prin determinarea punctului fix al unei funct¸ii.

Exemplu. Determinarea lui 2 prin rezolvarea ecuat¸iei x 2 = 2 cu ajutorul metodei lui Newton.

(* definirea funct¸iei asociate unei iterat¸ii *) (* determin˘a punctul fix = limita procesului iterativ *)

In[]:= newton[x ]:=N[1/2*(x+2/x)] In[]:= FixedPoint[newton, 1] Out[]= 1.414

Programare bazat˘a pe ¸sabloane ¸si reguli de transformare: ofer˘a metode de c˘autare (”pattern matching”) ¸si substitut¸ie pentru obiectele care descriu structurile matematice. Cum ˆın Math- ematica majoritatea structurilor matematice sunt reprezentate prin expresii, o not¸iune funda- mental˘a o reprezint˘a regula de transformare care specific˘a modul ˆın care poate fi transformat˘a o expresie prin ˆınlocuirea unor componente ale sale (variabile sau subexpresii). Cu ajutorul regulilor de transformare pot fi definite funct¸ii la fel ca ˆın matematic˘a: prin propriet˘at¸ile lor.

Exemplu. Definirea funct¸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˘a pe obiecte. Ofer˘a suport pentru definirea obiectelor ¸si pentru realizarea aplicat¸iilor prin respectarea paradigmelor acestui stil de programare.

Programare vizual˘a. Prin gestiunea obiectelor de tipurile document, celula, buton sau paleta pot fi proiectate interfete adecvate problemelor de rezolvat.

7.3 Interfat¸a cu alte sisteme soft

Din punctul de vedere al interfet¸ei cu alte sisteme soft, pot fi amintite urm˘atoarele particularit˘at¸i:

Datele pe care le prelucreaz˘a pot fi citite din fi¸siere de diferite formate (de exemplu fi¸siere text create prin programe Pascal sau C).

Rezultatele obt¸inute pot fi convertite ˆın diferite formate (de exemplu expresiile pot fi descrise

ˆ

ˆın format C, Fortran sau TeX). Incepˆand cu versiunea 4.0 a fost introdus˘a posibilitatea de a

converti cont¸inutul unui document ˆın format HTML.

Mathematica poate comunica cu alte programe prin intermediul unui standard de comunicat¸ie de nivel ˆınalt. Prin MathLink funct¸iile din Mathematica pot fi apelate din programe C, iar din Mathematica pot fi apelate funct¸ii C. O dat˘a cu versiunea 4.1 a fost introdus˘a posibilitatea de interfat¸are cu Java prin J/Link.

7.4 Utilizarea ca platform˘a soft pentru aplicat¸ii specifice

Pentru diferite domenii ¸stiint¸ifice ¸si tehnice exist˘a pachete de funct¸ii destinate prelucr˘arilor speci- fice domeniului respectiv. La ora actual˘a exist˘a peste o sut˘a de pachete specializate. Pachetele sunt orientate pe tematici ¸si cont¸in definiri de funct¸ii grupate pe subtematici (de exemplu, pa- chetul ‘Graphics‘ cont¸ine subpachetul ‘Polyhedra‘ pentru reprezent˘ari de poliedre, sau pachetul ‘DiscreteMath‘ cont¸ine subpachetul ‘Permutations‘ pentru generarea ¸si analiza permut˘arilor). Pachetele cont¸in descrieri ale funct¸iilor ˆın limbajul specific din Mathematica, sunt extensibile, dar pentru a putea fi utilizate ˆıntr-o sesiune de lucru trebuie ˆınc˘arcate explicit. Pentru ˆınc˘arcarea unui pachet trebuie dat˘a o comand˘a de forma: <<Nume pachet‘Nume modul‘ sau Needs["Nume pachet‘Nume modul‘"]. De exemplu, pentru ˆınc˘arcarea modulului ‘Polyhedra‘ trebuie dat˘a comanda: <<Graphics‘Polyhedra‘ sau Needs["Graphics‘Polyhedra‘"]. De remarcat c˘a la specificarea c˘aii de identificarea a unui pachet trebuie folosit apostroful invers

(‘).

7.5 Utilizarea sistemului

Mathematica este un sistem modular fiind constituit˘a din dou˘a module principale: nucleul ¸si sub- sistemul care asigur˘a interfat¸a cu utilizatorul (”front-end”). Nucleul are ca scop executarea comenzilor date de c˘atre utilizator. Prelucrarea de baz˘a a nucleului este evaluarea funct¸iilor predefinite ¸si a celor definite de c˘atre utilizator. Principiul de evaluare este de aplica definit¸iile cunoscute pˆan˘a cˆand se obt¸ine un rezultat care nu mai poate fi transformat. Acesta din urm˘a este transmis subsistemului de interfat¸˘a care ˆıl afi¸seaz˘a.

8

Subsistemul care asigur˘a interfat¸a cu utilizatorul este specific tipului de implementare (exist˘a variante pentru Windows, Unix, MacIntosh).

ˆ

In implement˘arile init¸iala (pˆan˘a la versiunea 2) se lucra ˆın mod text ˆın sensul c˘a sistemul afi¸sa

un prompter de interogare (In[]:=) ¸si a¸stepta introducerea unei comenzi dup˘a care era evaluat˘a funct¸ia ¸si afi¸sat rezultatul.

ˆ

In implement˘arile actuale, sistemul de interfat¸˘a este bazat pe ferestre ¸si asigur˘a gestiunea unor

”documente” interactive numite notebooks-uri. Prin intermediul notebooks-urilor, care pot cont¸ine texte organizate ierarhic mixate cu descrieri de calcule matematice ¸si grafice pot fi create materiale didactice sau de prezentare suficient de sofisticate. Cont¸inutul unui document este organizat ˆın celule care pot cont¸ine una sau mai multe linii ecran ¸si una sau mai multe expresii. Din punct de

vedere al tipului lor celulele pot fi de intrare (cont¸in comenzi transmise nucleului), de ie¸sire (cont¸ine

rezultate ale prelucr˘arilor) sau text (cont¸in texte informative).

fi editate sau nu (de exemplu celulele de ie¸sire nu pot fi editate). Dimensiunea unei celule este specificat˘a prin intermediul unor paranteze drepte (brackets) am- plasate ˆın extremitatea dreapt˘a a documentului. Celulele pot fi grupate ierarhic pe mai multe nivele asupra celulelor unui grup putˆandu-se efectua prelucr˘ari comune. Pentru a putea efectua prelucr˘ari asupra unei celule sau a unui grup de celule acestea trebuie selectate. Principalele pre- lucr˘ari 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, ¸stergerea unei celule/grup de celule. Principala operat¸ie, cea de evaluare este solicitat˘a prin combinat¸ia de taste SHIFT + RETURN.

In funct¸ie de tipul lor celulele pot

ˆ

Dup˘a solicitarea evalu˘arii sistemul prefixeaz˘a comanda cu In[]:= iar ˆın celula rezultat amplaseaz˘a Out[]=.

ˆ

In versiunile mai mari decˆat 3.0 sistemul permite introducerea unor elemente active ˆın cadrul celulelor (”butoane” la a c˘aror ”ap˘asare” este init¸iat˘a o act¸iune) precum ¸si utilizarea (sau definirea) unor palete pentru a u¸sura ˆıntroducerea comenzilor sau a unor caractere speciale.

9