Prof./Conf. univ. dr. camelia mihaela pintea Cuprins Introducere Capitolul 1 Ce este un software matematic? Noțiunea de “Software matematic” se… [311318]
Prof./Conf. univ. dr. camelia mihaela pintea
Cuprins
Introducere
Capitolul 1
Ce este un software matematic?
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 incât să asiste utilizatorul în efectuarea unor calcule complicate și/ sau voluminoase corespunzătoare unor probleme reale precum și vizualizarea facilă a rezultatelor.
Etapele parcurse în rezolvarea unei probleme specifice unui anumit domeniu sunt:
Enunțarea problemei. Este realizată de către un expert uman al domeniului respectiv. Corespunde stabilirii datelor de intrare și a scopului urmărit.
Formalizarea problemei. Este realizată de către un expert al domeniului respectiv. Rezultatul acestei etape este un model matematica mai simplu sau mai complex care poate conține: formule, funcții, sisteme de ecuații/ inecuatii etc.
Rezolvarea problemelor matematice care intervin în model. [anonimizat] ( număr, expresie, mulțime, funcție, vector, matrice, grafic etc.)
Interpretarea rezultatului. [anonimizat]-se termeni specifici domeniului din care a provenit problema.
Proiectarea sistemelor de software matematic a apărut din necesitatea de a efectua rapid și fără erori calcule și interpretări pentru probleme specifice de dimensiuni mari.
[anonimizat], pot fi realizate manual doar daca dimensiune problemei (de exemplu, a sistemului) este rezonabilă ( [anonimizat] 10 ecuații ). Insă, [anonimizat].
[anonimizat], pentru predarea de discipline științifice ( matematică, fizică, chimie ), inclusiv in cadrul învățamantului la distanță.
Sistemele de software s-[anonimizat], fie pentru a putea fi folosite în mai multe domenii ale științei. [anonimizat] (reprezentări grafice), TableCurve, Origin, DataFit, GnuFit (prelucrare a datelor experimentale), Statistica, SPSS, SPlus (prelucrare datelor statistice), MinOpt (probleme de optimizare), Singular (calcule cu polinoame) [anonimizat] a [anonimizat], Maple V v10 (www.maplesoft.com), Mathematica v5.2 (www.wolfram.com), MatLab v14 (www.mathworks.com) sau MathCad v13 (www.mathsoft.com).
1.1 Structura unui sistem de software matematic
De-a [anonimizat]-au făcut simțită prezența tot mai mult și au devenit un instrument în rezolvarea tot mai multor probleme provenite din știință.
Modulele soft pentru prelucrări au fost realizate încă din anii 1960 când calculatoarele începeau să devină un instrument în rezolvarea problemelor tehnice și științifice. Acestea erau însă 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. [anonimizat] a modulului.
[anonimizat] 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 concetreze mai mult asupra problemei și mai puțin asupra metodelor matematice de rezolvare a acesteia.
Sisteme de software matematic aveau, la început, ca țintă doar un anumit tip de probleme. Mai mult decât atât, necesitând folosirea unor biblioteci de funcții și cunoașterea detaliilor de implementare a lor (datorită setului de parametri necesari), aceste programe erau greu de utilizat și, deseori, respingătoare.
O dată cu dezvoltarea puterii de calcul și evoluția conceptelor de programare, au fost create interfețe ușor de utilizat și astfel utilizatorii au devenit mai concentrați asupra problemei în sine și mai puțin asupra metodelor folosite de sistemul software.
Orice sistem software este compus în esență din următoarele componente:
1. Nucleu – care conține funcțiile de bază, apelabile prin intermediul unui limbaj de comandă sau prin interfață.
2. Subsistem de interfață – ce permite transmiterea de comenzi sistemului și furnizarea rezultatelor. Interfața poate fi de tip text (sistemul funcționează ca interpretor, comenzile fiind preluate și executate secvențial) sau grafică (bazată pe documente de lucru, prin intermediul unei sau mai multor ferestre). Fiecare corespunde unui document care conține comenzi, răspunsuri sau texte descriptive introduse de utilizator. Comenzile pot fi evaluate în ordinea aleasă de către utilizator.
3. Ansamblu opțional de pachete – conține funcții suplimentare celor de bază destinate rezolvării problemelor 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 software.
1.2 Tipuri de prelucrări și modelări matematice
Sistemele de software matematic ( prescurtat SSM ) pot efectua următoarele tipuri de prelucrări matematice:
1. Numerice – rezultatele calculelor numerice fiind numere. Exemple: determinarea rădăcinilor unui polinom cu coeficienți numerici (cunoscuți), calculul unui determinant, determinarea limitei unui șir numeric, calculul unei integrale definite, etc.
2. Simbolice – rezultatele calculelor simbolice sunt de regulă expresii algebrice sau chiar propoziții matematice. Exemple: calculul primitive unei funcții, calculul determinantului unei matrice pătratice cu elemente necunoscute, determinarea rădăcinilor unui polinom cu coeficienți necunoscuți, efectuarea unui raționament logic (cu rezultat adevărat/fals), etc.
3. Grafice – rezultatele acestor prelucrări sunt grafice ale unor funcții, curbe, suprafețe sau altor obiecte grafice descrise prin ecuații sau punctele pe care le conțin. Se pot crea și reuniuni (alipiri) de grafice în același sistem de axe pentru a face comparații.
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ă anumite prelucrări se pot face printr-o singură comandă, având la bază algoritmi relativ complicați pe care nu suntem obligați să-i cunoaștem, ca, de exemplu, inversarea unei matrice pătratice sau rezolvarea unui sistem de ecuații diferențiale.
1.3 Caracteristici specifice
Un sistem software matematic se evidențiază de alte sisteme (limbaje) de programare prin următoarele caracteristici:
1. Implementează obiecte matematice. De exemplu, mulțimile, vectorii, matricele, funcțiile sunt implementate prin tipuri sau obiecte proprii.
2. Implementează prelucrări matematice. De exemplu, calculul derivatelor sau integralelor funcțiilor, limitelor șirurilor, rezolvarea ecuațiilor, reprezentările grafice sunt implementate pentru a fi apelate printr-o singură comandă.
3. Au limbaj avansat de descriere a problemelor. Oferă un limbaj propriu de descriere a problemelor și modelelor matematice complexe.
4. Au interfață grafică. Această interfață permite introducerea formulelor matematice și obținerea rezultatelor în forma clasică (folosind simboluri cunoscute). În acest mod nu sunt necesare cuonștințe privind comenzile sistemului.
5. Au un caracter deschis și flexibil. Maple, de exemplu, permite vizualizarea codului asociat unei anumite funcții. De asemenea, este permisă completarea funcționalității sistemului prin adăugarea de funcții noi scrise în limbajul de programare de nivel înalt asociat sistemului.
6. Au interfață cu alte sisteme. Este posibilă preluarea sau trasmiterea datelor către alte aplicații. De exemplu, Mathematica permite ca funcțiile sale să fie accesate prin intermediul unui protocol de interfață (MathLink, J/Link, .NET/Link – http://www.wolfram.com/solutions/mathlink/netlink) din programe scrise în limbaje de programare de uz general (C++, Java, .NET).
7. Permit elaborarea de documente. Sistemele recente conțin facilități de editare de texte științifice generând documente (sub format html, tex etc) care conțin atât texte cât și rezultate ale unor prelucrări efectuate în cadrul sistemului.
8. Oferă completitudine. Poate asista utilizatorul în analiza și rezolvarea problemelor, precum și în prezentarea rezultatelor.
Sistemele de software matematic se pot aplica în diferite domenii, cum ar fi matematică, fizică, chimie, statistică, inginerie, biologie sau economie, pentru a verifica teorii existente, elaborarea unor demonstrații, efectuarea unor calcule de dimensiuni mari sau de rutină, vizualizarea unor rezultate geometrice (în plan sau spațiu) sau simularea unor fenomene sub formă grafică, etc.
1.4 Domenii de aplicabilitate
Sistemele de software mathematic se pot aplica în domenii diferite, cum ar fi:
Matematică ( pentru verificarea unei teorii, enunțarea de noi conjecturi, elaborarea unor demonstații care implica doar calcule de rutină sau raționamente standard, vizualizarea grafică a unor obiecte geometrice etc.);
Fizică ( pentru prelucrarea datelor experimentale și simularea soft a unor fenomene fizice );
Chimie ( pentru simularea soft a structurilor moleculare și prelucrarea relațiilor ce descrie reacțiilor chimice );
Statistică ( pentru vizualizarea grafică și analiza datelor, efectuarea de interferențe statistice pornind de la date obținute din spndaje, analiza corelației dintre date etc. );
Inginerie ( pentru prelucrarea semnalelor și modelarea sistemelor, proiectarea asistată de calculator );
Biologie și medicină ( pentru simularea fenomenelor biomecanice, prelucrarea semnalelor si imaginilor din medicina etc. );
Economie și finanțe ( pentru modelarea financiară, planificare și analiză economică, efectuare de predicții etc. );
1.5 Exemple de sisteme software
La ora actuală există o multitudine de pachete soft destinate efectuarii de prelucrari 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 informații privind diferite pachete.
Unele dintre pachetele de software matematic sunt orientate spre sarcini precise și oarecum limitate la un anumit domeniu (cum sunt, de exemplu, pachetele de reprezentari grafice (DataPlot, GnuPlot), programele de prelucrare a datelor experimentale (TableCurve, Origin, DataFit, GnuFit etc), pachetele destinate prelucrarilor statistice (Statistica, SPSS, SPlus), 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.
Matlab
Este 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 științifice și inginerești variate. Facilitățile de calcul simbolic (destul de limitate în primele versiuni) au fost extinse prin interfațarea cu Maple.
Scilab este o variantă gratuită a lui Matlab caracterizată 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.
Mathematica
Este un sistem integrat care permite efectuarea de calcule simbolice și numerice precum și vizualizarea rezultatelor. Există variante atât pentru industrie cât și pentru educație.
Maple
Este un sistem integrat (similar cu Mathematica) care permite efectuarea de calcule simbolice și numerice, vizualizarea rezultatelor și toate prelucrările necesare simulării și modelării specifice diferitelor domenii (știinșă, inginerie, finanțe etc.). La fel ca și Mathematica posedă o puternică componentă de calcul simbolic. Ofera facilități de interfațare cu alte sisteme. De exemplu permite generare de cod C, Fortran, Visual Basic, Java precum si asigură o conexiune usoară cu Excel și Matlab.
MathCad
Este un sistem integrat orientat î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.
Alte sisteme software utilizate: Accelerated Math, Cantor (software), Compu-Math: Fractions, DrGeo, Geogebra, The Geometer's Sketchpad, Matheass, Math Blaster, Microsoft Mathematics, RekenTest, MathFacts in a Flash, SAGE – free software (GPL), TK Solver, Tuxmath- free software (GPL), Tux, of Math Command.
Capitolul 2
Matlab
MATLAB (MATrix LABoratory) este un pachet de programe de înaltă performanță folosit intens în cercetare și în inginerie, ce permite implementarea cu ușurință a algoritmilor din diverse domenii, fiind dedicat calculului numeric și reprezentărilor grafice în domeniul științei si al ingineriei, care integrează: analiza numerică, calculul matriceal, procesarea semnalului, statistică, finanțe, inteligență artificială și reprezentările grafice într-un mediu ușor de învățat și folosit. Elementul de bază cu care operează MATLAB este matricea (matrix), cu care se pot rezolva problemele date, fără a fi necesară cunoașterea unui limbaj de programare. Cea mai importantă caracteristică a MATLAB este ușurința în operare și dezvoltarea unor aplicații specifice domeniului în care lucreaza utilizatorul.
Structural, MATLAB este realizat sub forma unui nucleu de bază, cu interpretor propriu, în jurul căruia sunt construite aplicații specifice diferitelor domenii, numite TOOLBOX (colecții extinse de funcții MATLAB, destinate rezolvării unor probleme din domenii variate).
2.1 Istoric
MATLAB (Matrix Laboratory) este un limbaj de programare dezvoltat inițial de matematicianul programator Cleve Moler, de la Universitatea din New Mexico, SUA la sfârșitul anilor ’70. În anul 1984, Cleve Moler, împreună cu Jack Little, au rescris limbajul de programare MATLAB în C și au înființat compania MathWorks, pentru a produce și distribui limbajul de programare MATLAB.
MATLAB este un limbajul de programare orientat pe efectuarea de calcule numerice și simbolice specifice diferitelor domenii ale științelor inginerești, precum și pe modelarea și simularea sistemelor dinamice de tip general (implementarea schemelor bloc dezvoltate cu limbajul de programare Simulink, din 1990 ) și a sistemelor fizice particulare (implementarea schemelor funcționale dezvoltate cu limbajul de programare Simscape, din 2008 ).
2.1.1 Evoluția limbajului de programare MATLAB
Prima versiune comercială a limbajului de programare MATLAB (MATLAB 1.0) a apărut în anul 1984, imediat după înființarea companiei MathWorks, urmând ca în anul 1990 să fie lansată versiunea MATLAB 3.5 pentru sistemul de operare MS-DOS care conținea și prima versiune a limbajului de programare Simulink.
În anul 1994 a fost lansată versiunea MATLAB 4.2c (R7) pentru sistemul de operare Microsoft Windows, iar în anul 1998, odată cu apariția versiuni MATLAB 5.2 (R10) a fost lansat și limbajul de programare Simulink pentru modelarea și simulare sistemelor dinamice.
În anul 2000, odată cu lansarea versiunii MATLAB 6.0 (R12) a fost încorporat și codul executabil JVM (Java Virtual Machine) de la Sun Microsystems.
În anul 2008, a fost lansată versiunea MATLAB 7.6 (R2008a) care conținea sistemul de calcul simbolic MuPAD (SciFace Software, precum și mediul de simulare a sistemelor fizice Simscape.
În anul 2009 a fost lansată versiunea MATLAB 7.8 (R2009a) pentru sistemul de operare Microsoft Windows 7 pe 32 și 64 de biți.
În anul 2012 au fost lansate versiunile MATLAB 7.14 (R2012a) care include versiunea 7.9 a limbajului Simulink și MATLAB 8 (R2012b) care include versiunea 8 a limbajului Simulink.
În luna martie a anului 2013 a fost lansată versiunea MATLAB 8.1n(R2013a) care include versiunea 8.1 a limbajului Simulink, iar în luna septembrie a anului 2013 a fost lansată versiunea MATLAB 8.2 (R2013b) care include și versiunea 8.2 a limbajului Simulink.
În luna martie a anului 2014 a fost lansată versiunea MATLAB 8.3 (R2014a) care include versiunea 8.3 a limbajului Simulink.
2.2 Caracteristici ale limbajului de programare MATLAB
Limbajul de programare MATLAB este format dintr-un nucleu de bază conținând elementele fundamentale ale programului la care se adaugă un mare număr de toolbox-uri, furnizând astfel noi facilități computaționale de nivel general sau proceduri de calcul specifice anumitor domenii ale științelor inginerești.
Principalele caracteristici computaționale ale limbajului de programare MATLAB
Elemente fundamentale de programare, funcții matematice uzuale, funcții pentru reprezentarea grafică 2D și 3D, proceduri pentru generarea funcțiilor definite de utilizator, definirea și manipularea polinoamelor, funcții pentru controlul datelor și fișierelor, funcții pentru integrarea și derivarea numerică, funcții pentru rezolvarea numerică a ecuațiilor și sistemelor de ecuații algebrice și transcendente, funcții pentru rezolvarea numerică a ecuațiilor și sistemelor de ecuații diferențiale ordinare.
Efectuarea de calcule simbolice (Symbolic Math Toolbox,): generarea și manipularea variabilelor, expresiilor și funcțiilor simbolice, reprezentarea grafică a funcțiilor simbolice, derivarea și integrarea simbolică, calculul simbolic al limitelor, rezolvarea simbolică a ecuațiilor. Interfață grafică specializată pentru efectuarea de calcule simbolice (MuPAD).
Rezolvarea ecuațiilor diferențiale cu derivate parțiale în domeniul bidimensional (Partial Differential EquationToolbox). Interfață grafică specializată pentru rezolvarea ecuațiilor diferențiale cu derivate parțiale. Module de calcul specializate pentru: mecanică, electrostatică, magnetostatică, transfer de căldură, difuzie.
Analiza statistică (Statistics Toolbox) și numerică (Curve Fitting Toolbox) a datelor experimentale. Metode de aproximare a funcțiilor prin interpolare și regresie folosind polinoame, funcții putere, exponențiale, trigonometrice, Gauss, Weibull, Fourier). Funcții specifice pentru analiza parametrilor de calitate ai aproximărilor: nivelul de încredere, intervalele de eroare, parametri numerici de calitate, reprezentarea grafică a reziduurilor. Interfețe grafice specializate pentru analiza numerică a datelor experimentale.
Analiza, proiectarea și reglarea sistemelor dinamice folosind metoda procedurilor numerice specializate (Control Systems Toolbox). Definirea sistemelor dinamice prin metoda funcției de transfer, metoda intrare-stare-ieșire, metoda poli-zerouri. Analiza performanțelor dinamice și de stabilitate ale sistemelor dinamice în domeniul timp (răspuns la semnal treaptă) și în domeniul frecvențial (diagrama Bode).
Modelarea și simularea sistemelor dinamice folosind metoda schemelor bloc (Simulink) cu biblioteci de blocuri pentru: simularea sistemelor dinamice continue, simularea sistemelor dinamice discrete, simularea discontinuităților, operații matematice de bază, operații logice, operații la nivel de bit, aproximarea funcțiilor 1D, 2D și nD, simularea semnalelor de intrare, simularea elementelor pentru vizualizarea grafică și numerică a semnalelor de ieșire, manipularea semnalelor, modificarea parametrilor semnalelor, verificarea domeniului de variație a valorilor numerice ale semnalelor, crearea și manipularea subsistemelor, crearea și manipularea blocurilor definite de utilizator.
Modelarea și simularea sistemelor fizice folosind metoda schemelor funcționale (Simscape) cu biblioteci de elemente funcționale de bază pentru sisteme mecanice, hidraulice, electrice, termice, pneumatice.
Modelarea și simularea sistemelor hidraulice folosind metoda schemelor funcționale cu biblioteci de elemente funcționale specializate (SimHydraulics) pentru: pompe centrifuge, pompe volumice, distribuitoare, robinete, orificii, conducte, motoare hidraulice liniare și rotative, acumulatoare, rezervoare, actuatoare, supape de sens, supape de presiune.
Modelarea și simularea sistemelor mecanice 3D folosind metoda schemelor funcționale cu biblioteci de elemente funcționale specializate (SimMechanics) pentru: corpuri rigide, stabilirea poziției relative dintre mai multe corpuri rigide, conexiunea de tip oscilator amortizat, cuple, aplicarea sarcinilor, măsurarea parametrilor mecanici.
Modelarea, simularea și analiza sistemelor biologice prin algoritmi specifici (Bioinformatics Toolbox) și prin metoda schemelor funcționale cu biblioteci de elemente funcționale specializate (SimBiology).
Modelarea și simularea sistemelor mecanice 1D folosind metoda schemelor funcționale cu biblioteci de elemente funcționale specializate (SimDriveline) pentru: generatoare și traductoare pentru mișcarea de rotație, angrenaje, limitatoare de cursă, amortizoare și elemente elastice pentru mișcarea de rotație.
Modelarea și simularea sistemelor electronice folosind metoda schemelor funcționale cu biblioteci de elemente funcționale specializate (SimElectronics) pentru: surse de curent, surse de tensiune, rezistențe, rezistențe fuzibile, bobine, condensatoare, diode, circuite integrate, termocuple, termorezistențe, senzori de proximitate, mărci tensometrice, fotodiode, motoare electrice.
Modelarea și simularea sistemelor electrice de putere folosind metoda schemelor funcționale cu biblioteci de elemente funcționale specializate (SimPowerSystems) pentru: mașini electrice, traductoare pentru mărimile electrice, turbine eoliene.
Obținerea modelelor matematice ale sistemelor dinamice (identificarea sistemelor dinamice) pe baza măsurării mărimilor de intrare și de ieșire ale sistemelor (System Identification Toolbox).
Rezolvarea problemelor de optimizare liniară, pătratică, neliniară, multiobiectiv (Optimization Toolbox).
Implementarea unor algoritmi specifici pentru generarea, manipularea, vizualizarea și analiza semnalelor digitale și analogice. Interfețe grafice specializate. Analiza spectrală a semnalelor de diferite tipuri: semnale audio, seismice, financiare, biomedicale, radar. (Signal Processing Toolbox).
Implementarea unor algoritmi specifici de procesare, analiză și vizualizare a imaginilor (Image Processing Toolbox). Algoritmi și funcții specifice pentru proiectarea și managementul sistemelor de supraveghere video (Computer Vision System Toolbox). Realizarea interfațării cu camere video (Image Acquisition Toolbox).
Realizarea conectării cu sisteme de achiziție de date (DAQ-Data Acquisition) construite pe diferite platforme: USB, PCI, PCI Express, PXI, PXI Express și dezvoltate de diferiți producători: National Instruments, Measurement Computing, Advantech, Data Translation (Data Acquisition Toolbox).
Modelarea matematică și analiza statistică a datelor financiare (Financial Toolbox, Econometrics Toolbox, Datafeed Toolbox, Financial Instruments Toolbox, Trading Toolbox).
Funcții pentru generarea interfețelor grafice de tip GUI (Graphic User Interface) cu ajutorul interfeței GUIDE (Graphic User Interface Development Environment).
Realizarea documentațiilor tehnice aferente diferitelor aplicații și algoritmi numerici și simbolici de calcul (MATLAB Report Generator). Realizarea documentațiilor tehnice aferente diferitelor scheme bloc și scheme funcționale de simulare a sistemelor dinamice (Simulink Report Generator).
Transferul bidirecțional al datelor între MATLAB și Microsoft Excel (Spreadsheet Link EX, [18]). Transferul bidirecțional al datelor între MATLAB și baze de date relaționale: Oracle, MySQL, Sybase, Microsoft SQL Server, Informix (Database Toolbox).
Crearea aplicațiilor executabile prin utilizarea unor compilatoare (Application Deployment). Realizarea partajării aplicațiilor create de utilizator prin definirea fișierelor executabile sau a bibliotecilor partajabile (fișiere de tip .exe dau .dll) (Matlab Compiler), a claselor Java (Matlab Builder JA), a macrourilor de tip VBA-Visual Basic for Applications (MATLAB Builder EX), a obiectelor de tip .COM și NET (MATLAB Builder NE).
Rezolvarea problemelor numerice complexe utilizând proceduri specific de paralelizare a calculelor și metode de programare de tip CUDA pe sisteme de calcul multicore (Parallel Computing Toolbox) și distribuirea calculelor pe sisteme de calcul de tip cluster, cloud și grid (MATLAB Distributed Computing Server).
Principalele tipuri de fișiere specifice pe care le manipulează în mod nativ limbajul de programare MATLAB sunt:
Fișiere cu extensia .m (fișiere de tip script sau de tip function care conțin instrucțiuni și text explicativ).
Fișiere cu extensia .fig (fișiere de tip figure care conțin informații de tip grafic).
Fișiere cu extensia .mdl și .slx (fișiere de tip model care conțin scheme bloc de tip Simulink și scheme funcționale de tip Simscape).
Fișiere cu extensia .mn (fișiere care conțin comenzi de calcul simbolic MuPAD).
Fișiere cu extensia .mat (fișiere care conțin date formatate și care pot fi utilizate pentru salvarea datelor din spațiul de lucru MATLAB, folosind comanda save, respectiv pentru încărcarea datelor în spațiul de lucru MATLAB, folosind comanda load).
Limbajul de programare MATLAB are o structură deschisă, fiind posibilă dezvoltarea unor biblioteci de programe specifice unui anumit domeniu de activitate (toolbox-uri definite de utilizator). Prin caracteristicile computaționale, prin numărul mare de toolbox-uri specifice, prin caracterul său deschis, MATLAB este unul din cele mai răspândite limbaje de programare academice în domeniul științelor inginerești.
2.3 Operații aritmetice cu scalari
2.3.1 Declararea variabilelor
Declararea variabilelor se realizează cu ajutorul operației de atribuire , prin care unei variabile oarecare oarecare, programul îi va atribui o anumită expresie:
2.3.2 Operatori
Programul lucrează cu trei tipuri de operatori: aritmetici, relaționali și logici.
Principalii operatori aritmetici folosiți la definirea expresiilor aritmetice sunt:
Tabelul 1. Principalii operatori aritmetici
Principalii operatori relaționali folosiți la compararea variabilelor sunt:
Tabelul 2. Principalii operatori relationali
Principalii operatori logici folosiți pentru obținerea expresiilor logice sunt:
Tabelul 3. Principalii operatori logici
Ordinea de precedență a operatorilor stabilește ordinea în care se vor executa operațiile aritmetice, relaționale și logice din cadrul unei expresii. În cadrul aceluiași nivel de precedență, operatorii având același nivel de precedență se vor evalua de la stânga la dreapta, mai puțin parantezele care se vor evalua de la interior la exterior.
Principalele reguli de precedență sunt:
Tabelul 4. Principalele reguli de precedență
Exemplu 2.3.2.1 Se consideră variabilele:
.
Să se calculeze:
Fig. 1. Scrierea variabilelor și afișarea rezultatului
2.3.3 Funcții matematice elementare
Funcțiile matematice elementare definite în program se grupează, în principal, în următoarele categorii: funcții exponențiale, funcții trigonometrice, funcții hiperbolice, funcții pentru manipularea numerelor complexe, funcții pentru aproximarea numerelor.
2.3.3.1 Funcții exponențiale
Tabelul 5. Funcții exponențiale
2.3.3.2 Funcții trigonometrice
Tabelul 6. Funcții trigonometrice
2.3.3.3 Funcții hiperbolice
Tabelul 7. Funcții hiperbolice
2.3.3.4 Funcții pentru numerele complexe
Tabelul 8. Funcții pentru numere complexe
2.3.3.5 Funcții pentru aproximarea numerelor
Tabelul 9. Funcții pentru aproximarea numerelor
2.4 Fișierele de tip SCRIPT. Funcții
Principalele moduri de lucru în limbajul de programare MATLAB sunt:
Modul de lucru în linie de comandă;
Modul de lucru bazat pe fișiere de tip script;
Modul de lucru bazat pe definirea funcțiilor:
Funcții definite prin metoda fișierelor de tip function,
Funcții definite prin metoda anonymous.
2.4.1 Modul de lucru bazat pe fișiere script
Un fișier script conține o succesiune de instrucțiuni care se vor executa automat la lansarea fișierului în execuție ca și cum ar fi tastate independent în fereastra de comenzi a programului. Folosirea fișierelor script este cu atât mai indicată cu cât creste complexitatea instrucțiunilor de executat.
Fișierele script nu au definite nici variabile de intrare și nici variabile de ieșire, însă toate variabilele definite sau calculate în structura fișierului, rămân după executarea fișierului script, în spațiul de lucru al programului. Fișierele script pot utiliza datele create în structura fișierului, sau datele existente în spațiul de lucru al programului.
La utilizarea fișierelor trebuie avute în vedere următoarele observații generale:
La salvarea unui fișier script trebuie avut în vedere faptul că extensia fișierului este în mod implicit .m și nu trebuie modificată. Extensia implicită este introdusă automat la salvare.
Numele fișierelor script trebuie să înceapă cu o litera. Numele fișierelor poate să conțină caracterul _, dar nu trebuie să conțină spatii libere.
În mod implicit, fișierele script se salvează în directorul curent implicit (C:\Users\UserName\Documents\MATLAB) care, în general, este adăugat în structura relevantă de directoare a programului. În cazul în care salvarea fișierelor se face în alte directoare se va verifica dacă acestea sunt adăugate în căile de căutare ale programului.
În structura fișierelor script pot fi introduse atât instrucțiuni, grupuri de instrucțiuni reunite în secțiuni de calcul, grupuri de instrucțiuni definite ca funcții, precum și linii de text explicativ. O secțiune de program poate conține la rândul său, atât instrucțiuni, text explicativ, cât și funcții. De asemenea, funcțiile pot conține instrucțiuni, text explicativ, secțiuni de calcul, precum și alte funcții.
Un text care începe cu % este considerat text explicativ, imediat după caracterul % și până la sfârșitul liniei curente.
O zonă de program care începe cu %% este considerată o secțiune de program. O secțiune începe deci cu %% și se termină fie la întâlnirea, din nou, a caracterelor %% (moment în care începe o nouă secțiune), fie la sfârșitul fișierului script respectiv.
Se recomandă definirea secțiunilor pentru fiecare din grupurile principale de instrucțiuni ale unui fișier script. De exemplu:
Secțiunea cu titlul programului, datele de identificare ale autorului, grupul de instrucțiuni clc, clear all, close all.
Secțiunea datelor inițiale ale programului.
Secțiunea calculelor preliminare.
Secțiunea calculelor principale.
Secțiunea reprezentărilor grafice.
Lansarea în execuție a unui fișier script se poate realiza prin mai multe metode:
Comanda Run (F5) – se execută toate instrucțiunile din fișier.
Comanda Run and Advance – se execută toate instrucțiunile din secțiunea curentă și se avansează apoi la secțiunea următoare a fișierului.
Comanda Run Section – se execută toate instrucțiunile din secțiunea curentă.
Comanda Run and Time – se execută toate instrucțiunile din fișier și se determină timpul total de calcul, precum și timpul de calcul pentru fiecare instrucțiune din fișier.
Identificarea erorilor nu poate fi realizată decât odată cu lansarea în execuție a fișierului script. Rezultă deci, necesitatea lansării repetate în execuția a fișierului script, pe întreg parcursul dezvoltării acestuia, pentru a identifica din timp eventualele erori logice sau de sintaxă. Scrierea tuturor instrucțiunilor și apoi lansarea în execuție este o metodă de lucru contraproductivă.
După editarea și verificarea unui fișier script, acesta poate fi ulterior îmbunătățit și eventual distribuit altor utilizatori.
Principalele beneficii ale modului de lucru bazat pe fișiere de tip script sunt:
Posibilitatea de a scrie coduri sursă complexe, cu foarte multe linii.
Posibilitatea de utilizare repetată a instrucțiunilor din structura fișierului script.
Posibilitatea introducerii de secțiuni pentru gruparea pe anumite criterii a instrucțiunilor din structura fișierului script.
Posibilitatea introducerii de text explicativ pentru adnotarea instrucțiunilor din
structura fișierului .
Posibilitatea apelării fișierelor script în structura altor fișiere.
Posibilitatea transferului rapid al fișierelor script către alți utilizatori.
Fig. 2. Interfața modului de lucru bazat pe fișiere script
2.4.2 Modul de lucru bazat pe funcții definite în fișiere function
Deseori apare necesitatea creării unor fișiere particulare (fișierele de tip function) care să rezolve o anumită problemă specifică de calcul și care să poată fi utilizate în mod repetat în cadrul unor programe complexe.
Principalele caracteristici ale fișierelor de tip function sunt:
Fișierul de tip function este un fișier script particular care are proprietatea că își construiește un spațiu de lucru independent, cu variabile independente de spațiul de lucru al programului (variabile locale). Fișierul function poate avea însă, în anumite condiții, și variabile globale. În structura unui fișier function se pot introduce instrucțiuni, text explicativ și secțiuni de program, ca și în cazul fișierelor de tip script.
Fișierul de tip function poate fi apelat în cadrul unui al fișier de tip function, în cadrul unui fișier de tip script, sau direct în fereastra de comenzi.
Deschiderea unui nou fișier function se poate face prin selectarea comenzii New/Function din toolbarul meniului HOME. Se deschide astfel fereastra de editare a fișierelor function, care este identică cu fereastra de editare a fișierelor script, cu excepția primei linii a fișierului în care apare cuvântul rezervat function și a ultimei linii a fișierului în care apare cuvântul rezervat end.
Cuvântul function este un cuvânt rezervat care nu se poate utiliza decât în acest context. Dacă în structura unui fișier function, cuvântul rezervat function apare de mai multe ori, exceptând prima apariție, toate celelalte apariții defines sub-funcții. Sub-funcțiile (sub-funcții locale) nu sunt vizibile în exteriorul funcției în care au fost definite.
Principalele componente din structura generală a fișierelor de tip function sunt:
output reprezintă lista variabilelor de ieșire ale funcției,
input reprezintă lista variabilelor de intrare ale funcției,
NumeFunctie este numele funcției și în același timp și numele fișierului în care se va salva funcția (NumeFunctie.m).
Text explicativ reprezintă comentarii necesare pentru documentarea funcției.
Instrucțiuni reprezintă lista instrucțiunilor specifice funcției.
Fig. 3. Interfața modului de lucru bazat pe fișiere function
2.4.3 Modul de lucru bazat pe funcții de tip anonymous
Funcțiile pot fi definite atât prin metoda fișierelor de tip function (funcții cu mai multe variabile de intrare, mai multe variabile de ieșire și mai mult de o singură instrucțiune), cât și prin metoda funcțiilor anonymous (funcții cu mai multe variabile de intrare, o singură variabilă de ieșire și doar o singură instrucțiune).
Funcțiile de tip anonymous sunt funcții locale care pot fi definite în fereastra de comenzi la prompterul MATLAB, în structura unui fișier de tip script, sau într-un fișier de tip function.
Structura generală a unei funcții de tip anonymous este următoarea:
în care:
output reprezintă variabila de ieșire a funcției și în același timp și numele funcției.
input reprezintă lista variabilelor de intrare ale funcției.
Expresie este expresia matematică de definire a funcției.
2.4.4 Exemplu al metodelor de lucru în Matlab
Se consideră două numere: și .
Să se calculeze media patratică a celor două numere prin următoarele metode:
Metoda de lucru în linie de comandă
Metoda de lucru bazată pe folosirea fișierelor script
Metoda de lucru bazată pe folosirea funcțiilor anonymous.
Formula pentru calculul mediei pătratice este:
Rezolvare
Fig. 4. Rezolvarea exemplului prin metoda de lucru în linie de comandă (a)
Fig. 5. Rezolvarea exemplului prin metoda de lucru bazată pe folosirea fișierelor script (b)
Fig. 6. Rezolvarea exemplului prin metoda de lucru bazată pe folosirea funcțiilor anonymous (c)
Capitolul 3
Repezentări grafice în MATLAB
3.1 Reprezentarea grafică a funcțiilor 2D
3.1.1 Instrucțiunea PLOT
3.1.1.1 Reprezentarea unei singure funcții
Se consideră funcția: definită prin
Pentru a reprezenta grafic dependența se utilizează instrucțiunea:
unde: reprezintă valorile de pe abscisă, valorile de pe ordonată, iar sunt parametrii de formare a graficului.
Formarea curbelor se face prin intermediul a trei caracteristici:
tip marker ,
tip linie ( linie continuă, linie întreruptă, linie punctată, linie punct),
culoare ( rosu, verde, albastru, mov, galben, negru, alb).
3.1.1.2 Reprezentarea a două funcții în ferestre grafice diferite
Se consideră funcțiile:
Pentru reprezentarea grafică a celor două dependențe și în două ferestre grafice diferite se utilizează instrucțiunile:
Instrucțiunea figure genereaza un nou obiect grafic de tip figure.
3.1.1.3 Reprezentarea a două funcții în același obiect graphic AXES
Se consideră funcțiile:
Pentru reprezentarea grafică a celor două dependențe și pe aceleasi axe se poate utiliza una dintre variantele:
sau
În cazul reprezentării unui număr ridicat de funcții se preferă cea de-a doua metodă. Pentru obținerea rezultatului final instrucțiunea plot a fost aplicată, în acest caz, de două ori, odată pentru trasarea graficului funcției și a două oară pentru obținerea graficului funcției.
Astfel cele două instrucțiuni plot trebuie să afișeze rezultatele în aceeași fereastră grafică și în același obiect grafic de tip axes, fiind obligatorie intercalarea între cele două instrucțiuni plot a instrucțiunii hold on.
Formatarea celor două curbe ajută la identificarea precisă a fiecăreia și este necesară ori de câte ori pe aceeași fereastră grafică se reprezintă mai multe curbe. Astfel, funcția să fie reprezentată cu o linie continuă de culoare roșie, iar funcția să fie reprezentată cu o linie punct de culoare albastră.
Identificarea clară a graficelor se realizează prin intermediul adnotării de tip legendă. Aplicarea adnotării de tip legendă se face cu instrucțiunea:
legend('y_1=f_1(x)','y_2=f_2(x)')
în care specificațiile curbelor care reprezintă parametrii instrucțiunii legend trebuie introduse între apostrofuri și separate prin virgulă.
3.1.2 Instrucțiunea PLOTYY
Pentru realizarea obiectelor grafice de tip axes cu două axe, una plasată la stânga și cealaltă plasată la dreapta obiectului grafic axes se utilizează instrucțiunea plotyy.
Această instrucțiune este foarte utilă în cazul în care se urmărește reprezentarea grafică în același obiect grafic de tip axes a două funcții și care au aceleași domenii de definiție:
dar care au valori și diferite intre ele.
Astfel, pentru reprezentarea grafică a celor două dependențe și în aceeași fereastră grafică și pe aceleași axe se utilizează instrucțiunile:
plotyy(x,y1,x,y2);grid;
plotyy(x,y1,’-b’,x,y2,’-.r’);grid;
Se poate observa în cel de-al doilea caz introducerea și a parametrilor de formatare a celor două curbe, prima curbă fiind reprezentată cu linie continuă de culoare albastră, iar a doua curbă va fi reprezentată cu linie întreruptă de culoare roșie.
3.1.3 Grafice în coordonate logaritmice
Pentru reprezentarea grafică a funcțiilor utilizând coordonate logaritmice
(logaritm în baza 10) se pot utiliza următoarele instrucțiuni:
loglog – permite realizarea graficelor 2D cu ambele axe trasate în coordonate
logaritmice.
semilogx – permite realizarea graficelor 2D doar cu abscisa trasată în coordonate logaritmice.
semilogy – permite realizarea graficelor 2D doar cu ordonata trasată în coordonate logaritmice.
3.1.4 Grafice în trepte
Se consideră funcția: definită prin
Pentru reprezentarea grafică a funcției folosind metoda graficului în trepte se utilizează instrucțiunea:
stairs(x,y)
3.1.5 Grafice cu bare
Se consideră funcția: definită prin
Pentru reprezentarea grafică a funcției folosind metoda graficului cu bare verticale se utilizează instrucțiunea:
bar(x,y)
Pentru reprezentarea grafică a unei funcției folosind metoda graficului cu bare orizontale se utilizează instrucțiunea:
barh(x,y)
În cazul reprezentării grafice cu bare a două funcții care au același domeniu de definiție, atunci trebuie definită o matrice având pe fiecare coloană valorile funcțiilor respective. În acest caz, opțiunile de reprezentare ale comenzii bar (barh) sunt group și stack.
3.1.6 Reprezentarea grafică a histogramei
Se consideră un eșantion de volum format din valorile ordonate crescător:
cu
Amplitudinea sondajului, definită prin se împarte într-un număr de intervale egale, numite clase. Amplitudinea unei clase fiind .
Frecvența absolută a claselor se notează cu și reprezintă numărul de rezultate ale eșantionului care se găsesc în fiecare interval.
Reprezentarea grafică a frecvențelor absolute în funcție de intervalele de valori corespunzătoare poartă numele de histograma repartiției.
Pentru realizarea grafică a histogramei se pot utiliza următoarele instrucțiuni:
Pentru coordonate carteziene:
hist(x,k)
în care x reprezintă vectorul valorilor eșantionului de analizat, iar reprezintă numărul de clase considerat. În cazul în care parametrul se omite, atunci se consideră în mod implicit că numărul de clase este .
Pentru coordonate polare:
rose(t,k)
în care reprezintă vectorul valorilor unghiulare ale eșantionului de analizat, iar reprezintă numărul de clase considerat. În cazul în care parametrul se omite, atunci se consideră în mod implicit că numărul de clase este .
3.1.7 Reprezentarea grafică a erorilor
Se consideră în urma efectuării unui experiment rezultatele obținute se pot scrie sub forma:
unde reprezintă valorile medii ale rezultatelor experimentale obținute în fiecare punct de măsură , iar reprezintă intervalul de eroare corespunzător fiecărui punct de măsurare. Valorile și rezultă în urma repetării procesului de măsurare în condiții practic identice de un anumit număr de ori, pentru fiecare punct de măsură și prin efectuare apoi a analizei statistice a datelor experimentale. Rezultatele obținute în urma analizei statistice a datelor experimentale sunt valabile în condițiile impunerii unei anumite valori a nivelului de încredere P [%] (de obicei 95% sau 99%).
Reprezentarea grafică a intervalelor de eroare asociate setului de date se realizează cu ajutorul instrucțiunii:
errorbar(x,xm,e)
3.1.8 Grafice de tip area
Pentru reprezentarea grafică de tip area se utlizează instrucțiunea:
area(y)
în care y reprezintă un vector de date. Suprafața dintre curba obținută și axa absciselor va fi colorată. În cazul în care y este o matrice se reprezintă fiecare coloană a matricei sub forma unor curbe suprapuse una peste alta, colorându-se suprafețele dintre curbe.
În cazul instrucțiunii:
area(x,y)
rezultatul este identic cu cel al utilizării instrucțiunii plot, cu deosebirea că se colorează suprafața de sub curbă.
3.1.9 Grafice de tip pie
Pentru reprezentarea grafică a unui set de date în care fiecare element reprezintă un procent dintr-un întreg, se recomandă utilizarea instrucțiunii:
pie(y)
în care y reprezintă un vector având n date care are proprietatea că suma elementelor reprezintă un întreg (de exemplu, 100%), astfel încât fiecare element al vectorului de date y este pus în corespondență cu valoarea sa procentuală.
În cazul instrucțiunii:
pie(y,explode)
în care explode este un vector având aceeași dimensiune ca vectorul de date y, dar având doar elemente de 0 și 1, rezultatul este identic cu cel al utilizării instrucțiunii pie(y), cu deosebirea că toate sectoarele cărora le corespund valorile 1 vor fi separate din suprafața circulară a figurii (sectoare explodate).
În cazul instrucțiunilor:
pie3(y)
pie3(y,explode)
rezultatul este identic cu cel al utilizării instrucțiunilor pie(y) și pie(y,explode) cu deosebirea că toate sectoarele vor fi reprezentate în vedere tridimensională.
3.1.10 Grafice de tip fill
Se consideră un număr de puncte având coordonatele și , .
Pentru reprezentarea grafică a suprafeței interioare conturului poligonal definit de punctele considerate și colorarea suprafeței respective folosind culoarea , se utilizează instrucțiunea:
fill(x,y,’c’)
Aria suprafeței interioare a poligonului astfel definit se poate obține folosind instrucțiunea:
A=polyarea(x,y)
în care și sunt vectorii coordonatelor colțurilor poligonului.
3.1.11 Grafice in coordonate polare
Instrucțiunea polarplot permite reprezentarea grafică a funcțiilor în coordonate polare . Forma generală de implementare a instrucțiunii este:
polarplot(theta,r)
în care theta reprezintă unghiul în radiani dintre raza vectoare și axa, iar reprezintă lungimea razei vectoare.
Pentru graficele în coordonate polare instrucțiunile de adnotare ale axelor sau ale rețelei grid nu au relevanță.
3.1.12 Instrucțiunea SUBPLOT
Reprezentarea a două funcții în același obiect grafic figure dar în două obiecte grafice de tip axes diferite se realizează prin crearea unei structuri de obiecte grafice de tip axes, adică a mai multor obiecte grafice de tip axes dispuse în interiorul aceluiași obiect grafic de tip figure. În acest scop se utilizează instrucțiunea:
subplot(m,n,p)
care realizează împărțirea ferestrei grafice curente într-o matrice cu rânduri și coloane de obiecte grafice de tip axes și selectarea obiectului grafic axes cu identificatorul numeric ca fiind cel curent.
3.1.13 Instrucțiunea AXIS
Controlul principalelor proprietăți ale obiectului grafic axes se poate face și cu instrucțiuni specifice de tip axis. Astfel, principalele moduri de configurare pentru aplicarea instrucțiunii axis sunt:
axis auto – varianta implicită pentru care limitele celor două axe se determină în mod automat pe baza valorilor minime și maxime ale datelor și .
axis tight – limitele celor două axe sunt strict egale cu limitele valorilor și .
axis off – anularea afișării obiectului grafic axes.
axis xy – originea sistemului de coordonate este amplasată în colțul din stângajos, axa este orizontală având sensul crescător al valorilor de la stânga la dreapta, axa este verticală având sensul crescător al valorilor de jos în sus.
axis ij – originea sistemului de coordonate este amplasată în colțul stângasus, axa este verticală având sensul crescător al valorilor de sus în jos, axa este orizontală având sensul crescător al valorilor de la stânga la dreapta.
axis square – redimensionarea lungimii axelor și astfel încât suprafața
obiectului grafic axes să aibă forma unui pătrat.
axis equal – redimensionarea lungimii axelor astfel încât unitatea de măsură în direcția axei să fie egală cu unitatea de măsură din direcția axei .
axis image – redimensionarea lungimii axelor astfel încât unitatea de măsură în direcția axei să fie egală cu unitatea de măsură din direcția axei și în plus limitele celor două axe sunt strict egale cu limitele valorilor și .
3.1.14 Utilizarea caracterelor speciale
Limbajul de programare MATLAB permite aplicarea în cadrul obiectelor grafice de tip axes a mai multor tipuri de adnotări. Adnotările care au ca obiect manipularea șirurilor de caractere sunt:
Adnotarea de etichetare a axelor:
xlabel(‘valoare proprietate’)
ylabel(‘valoare proprietate’)
zlabel(‘valoare proprietate’)
Adnotării de tip titlu:
title(‘valoare proprietate’)
Adnotarea de tip legendă:
legend('pic1','pic2',…)
în care pic1 și pic2 reprezintă parametrii de identificare ai curbelor 1, 2, etc.
Adnotarea de tip text:
text(xt,yt,’text’)
în care xt și yt sunt coordonatele de amplasare a textului, iar ’text’ reprezintă textul propriu-zis.
Pentru toate aceste tipuri de adnotări se pot utiliza caractere speciale. Principalele tipuri de caractere speciale sunt: indicii inferiori, indicii superiori, simbolurilor matematice și literele grecești.
Obținerea indicelui inferior simplu se realizează prin utilizarea caracterului special „_” care are rolul de a plasa caracterul imediat următor pe poziția de indice inferior. În cazul în care se dorește obținerea poziției de indice superior simplu se va folosi caracterul special „^”. În cazul în care pe poziția de indice inferior, respectiv superior se dorește plasarea mai multor caractere (indice inferior și superior de tip complex) se impune includerea acestora între acolade.
Introducerea simbolurilor matematice și a caracterelor grecești se face prin utilizarea unui interpretor de caractere speciale. Sunt implementate două seturi de caractere speciale: TEX și LATEX. Selectarea interpretorului de caractere speciale se face prin modificarea proprietății Interpreter la una din valorile particulare tex, latex, respectiv none. Interpretorul implicit este TEX.
De exemplu, introducerea unui text cu folosirea interpretorului de tip LATEX se face printr-o instrucțiune de forma:
text(’Interpreter’,’latex’,……)
Modul de obținere a caracterelor grecești este exemplificat în tabelul:
Tabelul 10. Obținerea caracterelor grecești
Modul de obținere a simbolurilor matematice este exemplificat în tabelul:
Tabelul 10. Obținerea simbolurilor matematice
3.1.15 Aplicații ale reprezentărilor 2D în Matlab
Aplicația 3.1.15.1 Se consideră funcția:, definită prin:
.
Să se calculeze:
Să se reprezinte grafic și să se analizeze comparativ funcțiile și
Cele două funcții se vor reprezenta:
În ferestre grafice diferite
În aceeași fereastra grafică și în aceleași axe
Rezolvare
În ferestre grafice diferite
%% Date de intrare
xmin = 0;
xmax = 4*pi;
nx = 500;
x = linspace(xmin, xmax, nx);
a = pi/6;
%% Functii
f = sin(x);
g = a * sin(x).*cos(x.^3).*f;
%% Reprezentare 1
figure
set(gcf,'color','w');
plot(x,f);
xlim([xmin xmax])
grid on;
xlabel('x');
ylabel('f(x)');
%% Reprezentare 2
figure
set(gcf,'color','w');
plot(x,g,'m');
xlim([xmin xmax])
grid on;
xlabel('x');
ylabel('g(x)');
În aceeași fereastra grafică și în aceleași axe
%% Reprezentare 3
figure
set(gcf,'color','w');
subplot(2,2,1);
plot(x,f);
xlim([xmin xmax])
grid on;
xlabel('x');
ylabel('f(x)');
subplot(2,2,2);
plot(x,g,'m');
grid on;
xlim([xmin xmax])
xlabel('x');
ylabel('g(x)');
subplot(2,1,2);
plot(x, f);
xlim([xmin xmax])
hold on;
grid on;
xlabel('x');
ylabel('f(x)');
plot(x, g,'m');
legend('f(x)','g(x)');
Aplicația 3.1.15.2 Să se reprezinte grafic următoarele funcții:
, (epicicloida definită în coordinate parametrice)
,
(spirala sinusoidala definită în coordonate polare)
Rezolvare
Epicicloida
%% Date de intrare
tmin=0;
tmax=10*pi;
nt=500;
t=linspace(tmin,tmax,nt);
% Parametrii
a=8;
b=5;
% Functia
x=(a+b)*cos(t)-b*cos((a/b+1)*t);
y=(a+b)*sin(t)-b*sin((a/b+1)*t);
%% Reprezentare
figure
set(gcf,'color','w');
plot(x,y, 'm');
grid on;
axis equal;
xlabel('x');
ylabel('y');
title('epicicloida');
Spirala sinusoidala
%% Date de intrare
tmin=0;
tmax=10*pi;
nt=500;
t=linspace(tmin,tmax,nt);
% Parametrii
a=1;
p=0.8;
% Functia
r=a*(cos(p*t)).^(1/p);
%% Reprezentare
figure
set(gcf,'color','w');
polarplot(t, r, 'm');
title('spirala sinusoidala');
Aplicația 3.1.15.3 Se consideră următorul set de date:
Să se reprezinte grafic setul de date folosind grafic cu bare verticale (bar) și area și grafice de tip pie și pie3,iar din acestea să se extragă din sectoarele 3 și 5.
Rezolvare
%% Date de intrare
x=1:5;
y=[5; 15; 10; 30; 40];
explode=[1; 0; 1; 0; 0];
colors = [ 0.870588 0.721569 0.529412;
0.490196 0.619608 0.752941;
0.556863 0.219608 0.556863;
0.254902 0.411765 0.882353;
0.196078 0.803922 0.196078];
%% Bar
figure;
set(gcf,'color','w');
hb = bar(diag(y),'stacked');
hb(1).FaceColor = colors(1, :);
hb(2).FaceColor = colors(2, :);
hb(3).FaceColor = colors(3, :);
hb(4).FaceColor = colors(4, :);
hb(5).FaceColor = colors(5, :);
grid on;
xlabel('x');
ylabel('%');
ylim([0, 100]);
%% Area
figure;
set(gcf,'color','w');
area(y);
grid on;
xlabel('x');
ylabel('%');
ylim([0, 100]);
%% Pie
figure;
set(gcf,'color','w');
pie(y);
colormap(colors);
%% Pie cu extragere
figure;
set(gcf,'color','w');
pie(y, explode);
colormap(colors);
%% Pie3
figure;
set(gcf,'color','w');
pie3(y);
colormap(colors);
%% Pie3 cu extragere
figure;
set(gcf,'color','w');
pie3(y, explode);
colormap(colors);
3.2 Reprezentarea grafică a funcțiilor 3D
3.2.1 Instrucțiunea PLOT3
Instrucțiunea plot3 realizează reprezentarea grafică 3D a unei curbe, prin utilizarea obiectelor grafice de tip linie, a unei funcții matematice definită sub formă parametrică pe un domeniu de definiție oarecare.
Așadar, instrucțiunea:
plot3(fx,fy,fz)
realizează graficul 3D al funcției parametrice și pe domeniul de variație al variabilei . Atunci când variabila independentă parcurge domeniul de variație impus, valorile și reprezintă coordonatele spațiale ale punctelor graficului.
3.2.2 Instrucțiunea MESH
Instrucțiunea mesh realizează reprezentarea grafică 3D prin utilizarea obiectelor grafice de tip wireframe a unei funcții matematice definită pe un domeniu oarecare.
Astfel, pentru reprezentarea grafică a funcției definită în mod explicit pe domeniul oarecare se utilizează instrucțiunile:
mesh(X,Y,Z)
în care X, Y reprezintă matrice determinate cu instrucțiunea:
[X,Y]=meshgrid(x,y)
iar Z reprezintă matricea calculată conform instrucțiunii:
Z=functie(X,Y)
În cazul funcțiilor parametrice și definite pe domeniu oarecare se utilizează instrucțiunile:
mesh(X,Y,Z)
în care matricele X, Y și Z se calculează conform instrucțiunilor:
X=fx(U,V);Y=fy(U,V);Z=fz(U,V)
iar matricele U și V se determină cu instrucțiunile:
[U,V]=meshgrid(u,v)
Instrucțiunea meshc realizează reprezentarea grafică 3D, prin utilizarea combinată atât a obiectelor grafice de tip wireframe cât și a liniilor de contur, a unei funcții definită atât în mod explicit, cât și parametric, pe un domeniu de definiție oarecare, conform sintaxei:
meshc(X,Y,Z)
În expresiile funcțiilor de analizat intervin operatorii specifici operațiilor element cu element „.*”, „./” și „.^”.
Atribuirea unei anumite mape de culoare reprezentării grafice 3D se face cu instrucțiunea:
colormap(map)
în care map reprezintă una din mapele de culoare predefinite: jet, hsv, hot, cool, spring, summer, autumn, winter, gray, bone, cooper, pink, lines.
Afișarea scalei culorilor pentru a permite identificarea corespondenței dintre valorile numerice și culorile asociate se face cu instrucțiunea:
Colorbar
3.2.3 Instrucțiunea SURF
Instrucțiunea surf realizează reprezentarea grafică 3D prin utilizarea obiectelor grafice de tip surface a unei funcții matematice definită pe un domeniu oarecare.
Astfel, pentru reprezentarea grafică a funcției definită în mod explicit pe domeniul oarecare se utilizează instrucțiunile:
surf(X,Y,Z)
în care X, Y reprezintă matrice determinate cu instrucțiunea:
[X,Y]=meshgrid(x,y)
iar Z reprezintă matricea calculată conform instrucțiunii:
Z=functie(X,Y)
În cazul funcțiilor parametrice și definite pe domeniu oarecare se utilizează instrucțiunile:
surf(X,Y,Z)
în care matricele X, Y și Z se calculează conform instrucțiunilor:
X=fx(U,V)
Y=fy(U,V)
Z=fz(U,V)
iar matricele U și V se determină cu instrucțiunile:
[U,V]=meshgrid(u,v)
Instrucțiunea surfc realizează reprezentarea grafică 3D, prin utilizarea combinată atât a obiectelor grafice de tip surface cât și a liniilor de contur, a unei funcții definită atât în mod explicit, cât și parametric, pe un domeniu de definiție oarecare, conform sintaxei:
surfc(X,Y,Z)
3.2.4 Instrucțiunea CONTOUR
Instrucțiunea contour realizează reprezentarea grafică 2D prin utilizarea liniilor de contur a unei funcții matematice 3D definită pe un domeniu oarecare.
Astfel, pentru reprezentarea grafică a funcției definită în mod explicit pe domeniul oarecare se utilizează instrucțiunile:
C=contour(X,Y,Z)
în care X, Y reprezintă matrice determinate cu instrucțiunea:
[X,Y]=meshgrid(x,y)
iar Z reprezintă matricea calculată conform instrucțiunii:
Z=functie(X,Y)
În cazul funcțiilor parametrice și definite pe domeniu oarecare se utilizează instrucțiunile:
C=contour(X,Y,Z)
în care matricele X, Y și Z se calculează conform instrucțiunilor:
X=fx(U,V)
Y=fy(U,V)
Z=fz(U,V)
iar matricele U și V se determină cu instrucțiunile:
[U,V]=meshgrid(u,v)
Instrucțiunea contourf realizează reprezentarea grafică 2D, prin utilizarea combinată atât a liniilor de contur, cât și a colorării spațiului dintre liniile de contur, conform sintaxei:
contourf(X,Y,Z)
Pentru reprezentarea grafică 3D prin utilizarea liniilor de contur a unei funcții matematice 3D definită pe un domeniu oarecare se utilizează instrucțiunea:
C=contour3(X,Y,Z)
Etichetarea liniilor de contur se realizează cu ajutorul instrucțiunii:
clabel(C)
3.2.5 Aplicații ale reprezentarilor grafice 3D în Matlab
Aplicația 3.3.5.1 Să se reprezinte grafic curbele spațiale corespunzătoare următoarelor funcții definite sub formă parametrică:
Elicea elicoidală
Rezolvare
%% Date de intrare
tmin=0;
tmax=8*pi;
nt=1000;
t=linspace(tmin,tmax,nt);
% Parametrii
r=1;
c=1;
% Functia
x=r*cos(t);
y=r*sin(t);
z=c*t;
%% Reprezentare
figure
plot3(x,y,z,'m');
set(gcf,'color','w');
grid on;
box on;
xlabel('x');
ylabel('y');
zlabel('z');
title('Elicea Elicoidala');
Spirala sferica
Rezolvare
%% Date de intrare
tmin=-20*pi;
tmax=20*pi;
nt=500;
t=linspace(tmin,tmax,nt);
% Parametrii
a=0.05;
% Functia
x=cos(t)./sqrt(1+a^2*t.^2);
y=sin(t)./sqrt(1+a^2*t.^2);
z=-a*t./sqrt(1+a^2*t.^2);
%% Reprezentare
figure
set(gcf,'color','w');
plot3(x,y,z, 'm');
grid on;
box on;
axis equal;
xlabel('x');
ylabel('y');
zlabel('z');
title('Spirala Sferica');
Aplicația 3.3.5.2 Să se reprezinte grafic, prin utilizarea obiectelor grafice de tip wireframe, următoarele funcții definite în mod parametric:
Suprafața de tip octaedru hiperbolic:
Rezolvare
%% Date intrare
% Domeniul
umin=-pi/2;
umax=pi/2;
nu=25;
u=linspace(umin,umax,nu);
vmin=-pi;
vmax=pi;
nv=25;
v=linspace(vmin,vmax,nv);
[U,V]=meshgrid(u,v);
% Functia
X=(cos(U).*cos(V)).^3;
Y=(sin(U).*cos(V)).^3;
Z=(sin(V)).^3;
%% Reprezentare
figure
mesh(X,Y,Z);
set(gcf,'color','w');
grid on;
box on;
axis equal;
xlabel('x');
ylabel('y');
zlabel('z');
title('Octaedrul Hiperbolic');
Suprafața de tip „Moebius Strip”:
Rezolvare
%% Date de intrare
% Domeniul
w=0.3;
R=1;
umin=-w;
umax=w;
nu=20;
u=linspace(umin,umax,nu);
vmin=0;
vmax=2*pi;
nv=50;
v=linspace(vmin,vmax,nv);
[U,V]=meshgrid(u,v);
% Functia
X=(R+U.*cos(V/2)).*cos(V);
Y=(R+U.*cos(V/2)).*sin(V);
Z=U.*sin(V/2);
%% Reprezentare
figure
mesh(X,Y,Z);
set(gcf,'color','w');
grid on;
box on;
axis equal;
xlabel('x');
ylabel('y');
zlabel('z');
title('Suprafata Moebius');
Aplicația 3.3.5.3 Să se reprezinte grafic, prin utilizarea combinată atât a obiectelor grafice de tip wireframe, cât și a liniilor de contur a următoarelor funcții definite în mod parametric:
Suprafața de tip „Cross Cap”:
Rezolvare
%% Date de intrare
% Domeniul
umin=0;
umax=2*pi;
nu=100;
u=linspace(umin,umax,nu);
vmin=0;
vmax=pi/2;
nv=100;
v=linspace(vmin,vmax,nv);
[U,V]=meshgrid(u,v);
% Functia
X=1/2*cos(U).*sin(2*V);
Y=1/2*sin(U).*sin(2*V);
Z=1/2*((cos(V)).^2-(cos(U)).^2.*(sin(V)).^2);
%% Reprezentare
figure
meshc(X,Y,Z);
set(gcf,'color','w');
grid on;
box on;
axis equal;
xlabel('x');
ylabel('y');
zlabel('z');
title('Suprafata Cross Cap');
Suprafața de tip „Corkscrew”:
Rezolvare
%% Date de intrare
% Domeniul
umin=0;
umax=pi;
nu=50;
u=linspace(umin,umax,nu);
vmin=0;
vmax=2*pi;
nv=50;
v=linspace(vmin,vmax,nv);
[U,V]=meshgrid(u,v);
% Functia
X=cos(U).*cos(V);
Y=sin(U).*cos(V);
Z=sin(V)+U;
%% Reprezentare
figure
meshc(X,Y,Z);
set(gcf,'color','w');
grid on;
box on;
axis equal;
xlabel('x');
ylabel('y');
zlabel('z');
title('Corksrew');
Concluzii
Bibliografie
[1] A. DAVIDESCU, Analiza și procesarea datelor în MATLAB, Editura “Politehnica”, Timișoara, 2013
[2] D. ZAHARIEA, MATLAB. Calcul numeric și symbolic, Editura “PIM”, Iași, 2014
[3] D. ZAHARIEA, Simularea sistemelor fizice în MATLAB, Ed. “PIM”, Iași, 2010
[4] MATLAB – The Language of Technical Computing, MATLAB 6 (Release 12),
The MathWorks Inc., 2000
[5] MathWorks, MATLAB, Primer, 2017
[6] MathWorks, MATLAB, Desktop Tools and Development Environment, 2017
[7] MathWorks, MATLAB, Graphics, 2017
[8] MathWorks, MATLAB, Mathematics, 2017
[9] Mathworks, MATLAB, Programming Fundamentals, 2017
[10] Mathworks, MATLAB, Function Reference, 2017
[11] A.I rus, C.Iancu, Modelare matematică, Editura “Transilvania Press”, Cluj-Napoca, 2000
[12] N. BREAZ, Modelare asistată de software matematic, Note de curs și teme de
laborator, Seria Didactică a Universității „1 Decembrie 1918” Alba Iulia,
2010
[13] https://www.mathworks.com/
[14] https://www.mathworks.com/help/matlab/2-and-3d-plots.html
[15] http://www.e-learn.ro/tutoriale/matlab/33.htm
[16] https://ro.wikipedia.org/wiki/MATLAB
[17]https://en.wikipedia.org/wiki/List_of_educational_software#Mathematics
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Prof./Conf. univ. dr. camelia mihaela pintea Cuprins Introducere Capitolul 1 Ce este un software matematic? Noțiunea de “Software matematic” se… [311318] (ID: 311318)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
