csoft1a.pdf

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 ¸˘ 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 ¸ sif˘ar˘ a erori rezultate pentru probleme de dimensiuni mari. Prelucr˘ariderutin˘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 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

Upload: rizirizi

Post on 28-Dec-2015

18 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: csoft1a.pdf

Software matematic - Curs 1a.

Introducere.

1 Problematica

In acceptiunea acestui curs notiunea de ”Software matematic” se refera la proiectarea si utilizareaunor sisteme soft destinate rezolvarii unor probleme ce apar ın stiinta si tehnica. Aceste sisteme suntconcepute astfel ıncat sa asiste utilizatorul ın efectuarea unor calcule complicate si/sau voluminoasecorespunzatoare unor probleme reale precum si ın vizualizarea facila a rezultatelor.

Etapele parcurse ın rezolvarea unei probleme specifice unui anumit domeniu sunt:

(a) Enuntarea problemei. Este realizata de catre un expert uman al domeniului respectiv. Core-spunde stabilirii datelor de intrare si a scopului urmarit.

(b) Formalizarea problemei. Este realizata de catre un expert uman al domeniului respectiveventual ın colaborare cu un matematician. Rezultatul acestei etape este un model matematicmai simplu sau mai complex care poate contine: formule, functii, sisteme de ecuatii/inecuatiietc.

(c) Rezolvarea problemelor matematice ce intervin ın model. Aceasta este etapa in care poateinterveni un sistem de software matematic. Rezultatul va fi un obiect matematic (numar,expresie, multime, functie, vector, matrice, grafic etc.)

(d) Interpretarea rezultatului. Este realizata de catre un expert uman al domeniului. Rezultatuleste un raspuns la problema enuntata enuntat folosind termeni specifici domeniului din carea provenit problema.

Principala motivatie a proiectarii sistemelor de software matematic o reprezinta necesitatea dea obtine rapid si fara erori rezultate pentru probleme de dimensiuni mari. Prelucrari de rutina,cum este rezolvarea unui sistem liniar, pot fi realizate manual doar daca dimensiunea problemei(de exemplu, a sistemului) este rezonabila (de exemplu, mai putin de 10 ecuatii). Cu ajutorulcalculatorului, ınsa, pot fi rezolvate sisteme care au sute si mii de ecuatii. Pe de alta parte rezolvareaunor probleme necesita utilizarea unor metode matematice ce nu sunt ıntotdeauna la ındemanaspecialistilor dintr-un domeniu stiintific sau tehnic oarecare. Software-ul matematic elimina aceastadificultate ıntrucat are implementate o clasa larga de metode matematice, utilizatorul trebuind doarsa le apeleze fara sa fie necesar sa cunoasca detaliile implementarii lor.

Nu trebuie neglijat faptul ca aceste sisteme pot fi utilizate si ın scop didactic, la diferitenivele, pentru predarea de discipline stiintifice (matematica, fizica, chimie), inclusiv ın cadrulınvatamantului la distanta.

1

Page 2: csoft1a.pdf

2 Structura unui sistem de software matematic

Module soft pentru prelucrari matematice au fost realizate inca din anii 1960 cand calculatoareleau ınceput sa devina un instrument ın rezolvarea problemelor tehnice si stiintifice. Aceastea erauinsa dedicate unui anumit tip de probleme si erau grupate ın biblioteci de unde erau apelate decatre programe scrise ın limbaje de uz general. Adesea setul de parametri ai acestor module eramare iar utilizatorul trebuia sa cunoasca cel putin cateva dintre detaliile de realizare a modulului.

Sistemele integrate, care permit abordarea unei palete largi de calcule au aparut ın anii 1980o data cu dezvoltarea puterii de calcul si evolutia conceptelor de programare. Oferind adesea ointerfata usor de utilizat, aceste sisteme permit utilizatorului sa se concentreze mai mult asupraproblemei si mai putin asupra metodelor matematice de rezolvare a acesteia.

In continuare prin sistem de software matematic (prescurtat SSM) vom ıntelege un astfel desistem integrat. Un SSM este de regula constituit din trei componente:

• Nucleu. Contine functiile de baza (care se apeleaza prin intermediul unui limbaj de comandaspecific).

• Subsistem de interfata. Permite transmiterea de comenzi sistemului si furnizarea rezultatelor.Interfata poate fi de tip text (sistemul lucreaza ca un interpretor) sau grafica (bazata pe doc-umente de lucru). In cazul interfetei tip text comenzile sunt preluate si executate secventialfiind dificila revenirea la o comanda anterioara. In cazul interfetei grafice dialogul cu utiliza-torul se realizeaza prin intermediul uneia sau mai multor ferestre. Fiecare corespunde unuidocument care contine comenzi, raspunsuri sau texte descriptive introduse de catre utilizator.Comenzile pot fi evaluate ın ordinea aleasa de catre utilizator. Anumite sisteme se bazeaza peutilizarea unui limbaj de comanda (care poate fi vazut ca un limbaj de programare) pe candaltele permit rezolvarea problemei prin selectarea unor functii dintr-un sistem de meniuri.

• Ansamblu optional de pachete. Contine functii suplimentare celor de baza destinate prob-lemelor specifice unui anumit domeniu. Pentru a utiliza functiile din cadrul lor, pacheteletrebuie ıncarcate explicit. Posibilitatea de a adauga pachete de noi functii ofera flexibilitateacestor sisteme.

3 Principalele tipuri de prelucrari

Principalele prelucrari efectuate de catre un SSM pot fi grupate ın urmatoarele categorii:

• Numerice. Rezultatele acestor prelucrari sunt numere. Exemple de astfel de prelucrari sunt:calculul integralei definite a unei functii, determinarea radacinilor unui polinom cu coeficientinumerici, determinarea limitei unui sir numeric etc.

• Simbolice. Rezultatele prelucrarilor simbolice sunt de regula expresii algebrice sau chiarpropozitii matematice. Exemple de astfel de prelucrari sunt: calculul primitivei unei functii,determinarea radacinilor unui polinom cu coeficienti simbolici, efectuarea unui rationamentlogic etc.

• Grafice. Rezultatele acestor prelucrari sunt de fapt reprezentari grafice ale unor functii, curbe,suprafete sau alte obiecte grafice descrise prin ecuatii sau prin punctele pe care le contin. Potfi create si obiecte grafice pornind de la primitive.

2

Page 3: csoft1a.pdf

Sistemele de software matematic ofera posibilitatea efectuarii fiecareia dintre aceste prelucrari.Unele prelucrari pot fi efectuate direct existand comenzi specifice iar altele pot fi descrise ın limbajulde programare specific sistemului. Spre deosebire de limbajele de programare de uz general sistemelede software matematic contin un limbaj de comanda mult mai bogat ın sensul ca pot fi specificateprintr-o singura comanda si prelucrari bazate pe algoritmi relativ complicati (de exemplu inversareaunei matrici, rezolvarea simbolica sau numerica a unui sistem de ecuatii diferentiale etc).

4 Caracteristici

Un SSM are urmatoarele caracteristici care ıl diferentiaza de alte sisteme de programare:

1. Implementarea obiectelor matematice. Majoritatea obiectelor cu care se opereaza ın matem-atica (multimi, vectori, matrici, functii, operatori, ecuatii etc) sunt implementate prin tipurisau obiecte proprii.

2. Implementarea prelucrarilor matematice. O serie de prelucrari asupra obiectelor matematice(calculul limitelor, al derivatelor, al integralelor, rezolvarea ecuatiilor, reprezentari grafice)sunt implementate pentru a fi apelate prin intermediul unei singure comenzi.

3. Limbaj avansat de descriere a problemelor. Sistemele de software matematic ofera un limbajpropriu de descriere a problemelor si modelelor matematice complexe.

4. Interfata cu utilizatorul. Sistemele actuale poseda interfete grafice care permit introducerea siobtinerea formulelor matematice ın forma clasica folosind simbolurile cunoscute din matem-atica. In aceste conditii nu e necesar ca utilizatorul sa cunoasca comenzile sistemului fiindsuficient sa selecteze simbolurile adecvate dintr-o ”paleta” de simboluri pentru a construiformulele.

5. Caracterul deschis si flexibil. Majoritatea sistemelor actuale permit completarea functionalitatiisistemului prin adaugarea de functii noi (descrise ın limbajul specific sistemului).

6. Interfata cu alte sisteme. Exista posibilitatea de a prelua/transmite date de la/catre alteaplicatii. Functiile unora dintre sisteme pot fi apelate prin intermediul unui protocol deinterfata (de exemplu, MathLink si J/Link din Mathematica) din programe scrise ın limbajede programare de uz general (de exemplu, C respectiv Java).

7. Elaborarea de documente. Sistemele recente contin si facilitati de editare de texte stiintificeastfel ıncat pot fi elaborate documente care contin atat texte cat si rezultate ale unor prelucrariefectuate ın cadrul sistemului.

8. Completitudine. Asista utilizatorul ın analiza si rezolvarea problemelor precum si ın prezentarearezultatelor.

5 Domenii de aplicabilitate

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

• Matematica (pentru verificarea unei teorii, enuntarea de noi conjecturi, elaborarea unordemonstratii care implica doar calcule de rutina sau rationamente standard, vizualizareagrafica a unor obiecte geometrice etc.);

3

Page 4: csoft1a.pdf

• Fizica (pentru prelucrarea datelor experimentale si simularea soft a unor fenomene fizice);

• Chimie (pentru simularea soft a structurilor moleculare si prelucrarea relatiilor ce descriureactiile chimice);

• Statistica (pentru vizualizarea grafica si analiza datelor, efectuarea de inferente statisticepornind de la date obtinute din sondaje, analiza corelatiei dintre date etc.);

• Inginerie (pentru prelucrarea semnalelor si modelarea sistemelor, proiectare asistata de cal-culator);

• Biologie si medicina (pentru simularea fenomenelor biomecanice, prelucrarea semnalelor siimaginilor din medicina etc.);

• Economie si finante (pentru modelare financiara, planificare si analiza economica, efectuarede predictii etc.);

6 Exemple de sisteme

La ora actuala exista o multitudine de pachete soft destinate efectuarii de prelucrari numerice,simbolice sau grafice. Pentru a facilita identificarea si accesarea pachetului adecvat unei anumiteprobleme au fost constituite colectii de date care contin informatii privind diferite pachete. O astfelde colectie este accesibila la [http://gams.nist.gov].

Unele dintre pachetele de software matematic sunt orientate spre sarcini precise si oarecumlimitate la un anumit domeniu (cum sunt, de exemplu, pachetele de reprezentari grafice (Data-Plot, GnuPlot), programele de prelucrare a datelor experimentale (TableCurve, Origin, DataFit,GnuFit etc), pachetele destinate prelucrarilor statistice (Statistica, SPSS, SPlus, S, R), sistemelede rezolvare a problemelor de optimizare (MinOpt), sistemele de rezolvare a ecuatiilor diferentialeordinare si cu derivate partiale etc.), iar altele au caracter mai general oferind facilitati care permitutilizarea lor ın diverse domenii.

Dintre sistemele ce fac parte din ultima categorie, cele mai frecvent utilizate sunt enumerate ıncontinuare.

Mathematica (versiune curenta: Mathematica 7.0)[www.wolfram.com] Este un sistem integratcare permite efectuarea de calcule simbolice si numerice precum si vizualizarea rezultatelor.Exista atat variante pentru industrie cat si pentru educatie.

Maple (versiune curenta: Maple 13)[www.maplesoft.com] Este un sistem integrat (similar cu Math-ematica) care permite efectuarea de calcule simbolice si numerice, vizualizarea rezultatelor sitoate prelucrile necesare simularii si modelarii specifice diferitelor domenii (stiinta, inginerie,finante etc.). La fel ca si Mathematica poseda o puternica componenta de calcul simbolic.Ofera facilitati de interfatare cu alte sisteme. De exemplu permite generare de cod C, Fortran,Visual Basic, Java precum si asigura conexiune usoara cu Excel si Matlab.

Matlab (versiune curenta: Matlab R2009a) [www.mathworks.com] Este tot un sistem integrat careexceleaza prin facilitatile oferite pentru modelare si simulare precum si pentru colectia foartemare de ”toolbox-uri” dedicate unor domenii stiintifice si ingineresti variate. Facilitatile decalcul simbolic (destul de limitate in primele versiuni) au fost extinse prin interfatarea cuMaple. Scilab [http://www.scilab.org/] este o varianta gratuita a lui Matlab caracterizata

4

Page 5: csoft1a.pdf

prin facilitati de baza si interfata similara cu cea din Matlab fara a pune ınsa la dispozitiautilizatorilor instrumente similare ”toolbox-urilor” din Matlab.

MathCad (versiune curenta:MathCAD 14.0) [www.mathsoft.com] Este tot un sistem integrat ori-entat ın particular catre facilitarea calculelor numerice si vizualizarea grafica a rezultatelor.Desi poseda facilitati de calcul simbolic, acestea nu le egaleaza pe cele oferite de Mathematicasau Maple.

7 Mathematica. Prezentare generala.

Mathematica este un sistem software interactiv (din categoria ”Computer Algebra System - CAS”)care permite descrierea si rezolvarea aplicatiilor stiintifice, ın special din domeniile matematicii sifizicii. Face parte din categoria software-ului matematic si, adeseori, este desemnata ca un programcare ofera posibilitatea de a face matematica cu ajutorul calculatorului.

Mathematica poate fi folosita ca si: calculator numeric si simbolic, sistem de vizualizare grafica,limbaj de programare de nivel ınalt, platforma soft destinata rularii unor pachete cu aplicatiispecifice unui domeniu, sistem de reprezentare a cunostintelor din domenii stiintifice si tehnice.

Mathematica a fost conceputa de catre fizicianul Stephen Wolfram, prima versiune aparand ın1988. Urmatoarele versiuni (pana la cea actuala, 6.0) au fost elaborate ın cadrul firmei WolframResearch Inc (http://www.wolfram.com). De-a lungul evolutiei sale nucleul a fost ımbogatit cu noialgoritmi eficienti extinzandu-se sfera de probleme care pot fi rezolvate. Pe de alta parte a evoluat siinterfata cu utilizatorul de la simpla comunicare ın mod text prin introducere secventiala de comenzipana 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 completatcu o interfata grafica bazata pe selectia tipului de prelucrare dintr-un set de palete cu simboluri,operatori, comenzi etc. Nu e necesar ca utilizatorul sa fie familiar cu comenzile din Mathematicaci este suficient sa stie ce problema are de rezolvat si sa selecteze simbolurile corespunzatoare. Afost conceput ca un ”asistent” pentru nespecialistii ın matematica care au de rezolvat probleme cenecesita utilizarea unor metode matematice.

WebMathematica este un produs recent care ofera posibilitatea de a efectua calcule interac-tive si de a vizualiza rezultatele (inclusiv ın maniera grafica) prin intermediul unui browser Web.Prin WebMathematica (conceputa folosind tehnologia Java servlet) se pot proiecta site-uri ded-icate rezolvarii problemelor specifice unui domeniu. Se beneficiaza de ıntreaga putere de calculalgoritmic a Mathematicii iar utilizatorul nu trebuie decat sa foloseasca un browser nefiind nece-sara cunoasterea comenzilor din Mathematica. Un exemplu de site bazat pe WebMathematica esteIntegrator (http://integrals.wolfram.com) care permite calculul integralelor.

GridMathematica este conceput ca un sistem care permite efectuarea de prelucrari distribuiteexploatand resursele oferite de clusterele de calculatoare.

7.1 Specificul utilizarii ca sistem pentru prelucrari matematice

Prelucrarile matematice sunt de una dintre categoriile:

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

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

• Reprezentari grafice (de exemplu, trasari ale graficelor de functii).

5

Page 6: csoft1a.pdf

Pentru fiecare dintre aceste categorii Mathematica ofera numeroase facilitati. In continuare vorfi prezentate cateva dintre acestea facand observatia ca ın toate exemplele sirurile de caractereIn[]:=, respectiv Out[]= sunt afisate de catre sistem, utilizatorul introducand doar comanda careapare dupa In[]:=. Rezultatul care apare dupa Out[]= este cel afisat de sistem. In realitateıntre parantezele drepte de la In[] si Out[] apar valori numerice care identifica comanda, respectivraspunsul.

Cateva dintre particularitatile prelucrarilor numerice care pot fi efectuate ın Mathematica sunt:

• Posibilitatea de a lucra cu numere de precizie oricat de mare (precizie arbitrara).

Exemplu. Calculul lui log(4π) cu precizie de 20 de zecimale:In[]:= N[ Log[4 Pi], 20 ]Out[]= 2.53102424696929079297

• Posibilitatea de a efectua prelucrari numerice asupra structurilor matematice. De exemplu,permite efectuarea de prelucrari asupra matricilor (inversare, determinarea valorilor proprii, avectorilor proprii etc), functiilor (derivare si integrare numerica, interpolare etc) si ecuatiilor(rezolvarea numerica a ecuatiilor algebrice si a celor diferentiale).

Exemplu. Determinarea valorilor proprii ale matricii:

0.5 −1 21.35 6.4 −24 −2 0

In[]:= a={{0.5,-1,2},{1.35,6.4,-2},{4,-2,0}} (* definirea matricii *)Out[]=...In[]:=Eigenvalues[a] (* determinarea valorilor proprii *)Out[]={6.91991,-2.71409,2.69418}

• Posibilitatea de a efectua analize statistice ale datelor.

Din punct de vedere al calculului simbolic Mathematica ofera facilitati ca:

• Efectuarea unor prelucrari simbolice asupra expresiilor algebrice (de exemplu, expandare,factorizare, simplificare etc.).

Exemplu. Factorizarea lui a3 − b3

In[]:= Factor[a^3-b^3]Out[]= (a− b)(a2 + ab + b2)

• Determinarea solutiilor analitice pentru ecuatii polinomiale, sisteme de ecuatii liniare si sis-teme de ecuatii diferentiale.

Exemplu. Rezolvarea ecuatiei ax2 + bx + c = 0In[]:= Solve[a x^2+b x+c==0,x]

Out[]= {{x− > −b−√b2−4ac2a }, {x− > −b+

√b2−4ac

2a }• Calcul simbolic al derivatelor si integralelor.

Exemplu. Calculul primitivei∫

ln(x)dxIn[]:= Integrate[Log[x],x]Out[]= −x + xLog[x]

6

Page 7: csoft1a.pdf

• Determinarea limitelor de siruri si serii.

In ceea ce priveste facilitatile grafice, Mathematica se caracterizeaza prin:

• Trasari de grafice ın doua si trei dimensiuni (curbe si suprafete) si posibilitatea de a efectuatransformari geometrice si de a controla culoarea, umbrirea, iluminarea.

• Vizualizarea reprezentarilor grafice 3D prin contururi si densitati.

• Animarea pe ecran a reprezentarilor grafice.

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

Exemplu. Reprezentarea suprafetei definita de x2 + y2 pentru (x, y) ∈ [−2, 2]× [−2, 2]:In[]:= Plot3D[x^2+y^2,{x,-2,2},{y,-2,2}]

7.2 Specificul utilizarii ca limbaj de programare

Mathematica ofera suport pentru a programa ın oricare dintre urmatoarele stiluri:

• Programare procedurala: ofera posibilitatea de a defini module care contin prelucrari alterna-tive, iterative si recursive.

Exemplu. Determinarea primului numar prim mai mare decat un numar 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 functionala: ofera posibilitatea de a lucra cu functii pure si operatori functionaliprecum si de a determina rezultatul unei prelucrari iterative prin determinarea punctului fixal unei functii.

Exemplu. Determinarea lui√

2 prin rezolvarea ecuatiei x2 = 2 cu ajutorul metodei lui Newton.

In[]:= newton[x ]:=N[1/2*(x+2/x)] (* definirea functiei asociate unei iteratii *)In[]:= FixedPoint[newton, 1] (* determina punctul fix = limita procesului iterativ *)Out[]= 1.414

• Programare bazata pe sabloane si reguli de transformare: ofera metode de cautare (”patternmatching”) si substitutie pentru obiectele care descriu structurile matematice. Cum ın Math-ematica majoritatea structurilor matematice sunt reprezentate prin expresii, o notiune funda-mentala o reprezinta regula de transformare care specifica modul ın care poate fi transformatao expresie prin ınlocuirea unor componente ale sale (variabile sau subexpresii). Cu ajutorulregulilor de transformare pot fi definite functii la fel ca ın matematica: prin proprietatile lor.

Exemplu. Definirea functiei logaritmice:

In[]:= log[1]=0In[]:= log[E]=1In[]:= log[x y ]:=log[x]+log[y]In[]:= log[x ˆ n ]:=n log[x]

7

Page 8: csoft1a.pdf

Utilizare:In[]:= log[(x y)ˆn]Out[]= n log[x]+n log[y].

• Programare orientata pe obiecte. Ofera suport pentru definirea obiectelor si pentru realizareaaplicatiilor prin respectarea paradigmelor acestui stil de programare.

• Programare vizuala. Prin gestiunea obiectelor de tipurile document, celula, buton sau paletapot fi proiectate interfete adecvate problemelor de rezolvat.

7.3 Interfata cu alte sisteme soft

Din punctul de vedere al interfetei cu alte sisteme soft, pot fi amintite urmatoarele particularitati:

• Datele pe care le prelucreaza pot fi citite din fisiere de diferite formate (de exemplu fisieretext create prin programe Pascal sau C).

• Rezultatele obtinute pot fi convertite ın diferite formate (de exemplu expresiile pot fi descriseın format C, Fortran sau TeX). Incepand cu versiunea 4.0 a fost introdusa posibilitatea de aconverti continutul unui document ın format HTML.

• Mathematica poate comunica cu alte programe prin intermediul unui standard de comunicatiede nivel ınalt. Prin MathLink functiile din Mathematica pot fi apelate din programe C, iar dinMathematica pot fi apelate functii C. O data cu versiunea 4.1 a fost introdusa posibilitateade interfatare cu Java prin J/Link.

7.4 Utilizarea ca platforma soft pentru aplicatii specifice

Pentru diferite domenii stiintifice si tehnice exista pachete de functii destinate prelucrarilor speci-fice domeniului respectiv. La ora actuala exista peste o suta de pachete specializate. Pachetelesunt orientate pe tematici si contin definiri de functii grupate pe subtematici (de exemplu, pa-chetul ‘Graphics‘ contine subpachetul ‘Polyhedra‘ pentru reprezentari de poliedre, sau pachetul‘DiscreteMath‘ contine subpachetul ‘Permutations‘ pentru generarea si analiza permutarilor).

Pachetele contin descrieri ale functiilor ın limbajul specific din Mathematica, sunt extensibile,dar pentru a putea fi utilizate ıntr-o sesiune de lucru trebuie ıncarcate explicit.

Pentru ıncarcarea unui pachet trebuie data o comanda de forma: <<Nume pachet‘Nume modul‘sau Needs["Nume pachet‘Nume modul‘"]. De exemplu, pentru ıncarcarea modulului ‘Polyhedra‘trebuie data comanda: <<Graphics‘Polyhedra‘ sau Needs["Graphics‘Polyhedra‘"].

De remarcat ca la specificarea caii de identificarea a unui pachet trebuie folosit apostroful invers(‘).

7.5 Utilizarea sistemului

Mathematica este un sistem modular fiind constituita din doua module principale: nucleul si sub-sistemul care asigura interfata cu utilizatorul (”front-end”).

Nucleul are ca scop executarea comenzilor date de catre utilizator. Prelucrarea de baza anucleului este evaluarea functiilor predefinite si a celor definite de catre utilizator. Principiul deevaluare este de aplica definitiile cunoscute pana cand se obtine un rezultat care nu mai poate fitransformat. Acesta din urma este transmis subsistemului de interfata care ıl afiseaza.

8

Page 9: csoft1a.pdf

Subsistemul care asigura interfata cu utilizatorul este specific tipului de implementare (existavariante pentru Windows, Unix, MacIntosh).

In implementarile initiala (pana la versiunea 2) se lucra ın mod text ın sensul ca sistemul afisaun prompter de interogare (In[]:=) si astepta introducerea unei comenzi dupa care era evaluatafunctia si afisat rezultatul.

In implementarile actuale, sistemul de interfata este bazat pe ferestre si asigura gestiunea unor”documente” interactive numite notebooks-uri. Prin intermediul notebooks-urilor, care pot continetexte organizate ierarhic mixate cu descrieri de calcule matematice si grafice pot fi create materialedidactice sau de prezentare suficient de sofisticate. Continutul unui document este organizat ıncelule care pot contine una sau mai multe linii ecran si una sau mai multe expresii. Din punct devedere al tipului lor celulele pot fi de intrare (contin comenzi transmise nucleului), de iesire (continerezultate ale prelucrarilor) sau text (contin texte informative). In functie de tipul lor celulele potfi editate sau nu (de exemplu celulele de iesire nu pot fi editate).

Dimensiunea unei celule este specificata prin intermediul unor paranteze drepte (brackets) am-plasate ın extremitatea dreapta a documentului. Celulele pot fi grupate ierarhic pe mai multenivele asupra celulelor unui grup putandu-se efectua prelucrari comune. Pentru a putea efectuaprelucrari asupra unei celule sau a unui grup de celule acestea trebuie selectate. Principalele pre-lucrari care pot fi efectuate asupra celulelor sunt: evaluarea celulei curente, a celulelor selectatesau a ıntregului document, inchiderea/deschiderea unei celule/grup de celule, alegerea/modificareafonturilor pentru textele din celulele selectate, stergerea unei celule/grup de celule.

Principala operatie, cea de evaluare este solicitata prin combinatia de taste SHIFT + RETURN.Dupa solicitarea evaluarii sistemul prefixeaza comanda cu In[]:= iar ın celula rezultat amplaseazaOut[]=.

In versiunile mai mari decat 3.0 sistemul permite introducerea unor elemente active ın cadrulcelulelor (”butoane” la a caror ”apasare” este initiata o actiune) precum si utilizarea (sau definirea)unor palete pentru a usura ıntroducerea comenzilor sau a unor caractere speciale.

9