Software Matematic - Matlab

  • View
    221

  • Download
    0

Embed Size (px)

Text of Software Matematic - Matlab

  • 7/30/2019 Software Matematic - Matlab

    1/63

    Lector univ. dr. A. Dunca

    Software matematic Matlab

    Universitatea Spiru Haret, 2008

  • 7/30/2019 Software Matematic - Matlab

    2/63

    Cuprins

    1 Introducere 8

    2 Lucrul cu fisiere in Matlab 10

    3 Functii de gestionare a timpului 14

    4 Lucrul cu vectori si matrici 18

    5 Instructiuni de control 23

    6 Siruri de caractere 27

    7 Numere Complexe 29

    8 Functii matematice 29

    9 Operatii cu matrici 31

    10 Functii pentru calcule statistice 34

    11 Optimizari de functii, rezolvari de ecuatii neliniare 36

    12 Operatii cu polinoame 40

    13 Derivare si integrare numerica 47

    14 Functii pentru grafica 49

    5

  • 7/30/2019 Software Matematic - Matlab

    3/63

    Prefata

    Prezentele notite de curs se adreseaza studentilor de la Facul-

    tatea de Matematica-Informatica a Universitatii Spiru Haret care

    sunt nscrisi la cursul de Software Matematic.

    Prezentele notite au fost redactate utilizand pachetul MikTex,

    www.miktex.org, versiunea pentru Windows a sistemului LATEX.Editia electronica utilizeaza formatul PDF al companiei Adobe

    Systems.

    Lector univ. dr. A. Dunca

    Facultatea de Matematica-Informatica

    Universitatea Spiru Haret, Bucuresti, 2008

    6

  • 7/30/2019 Software Matematic - Matlab

    4/63

    7

  • 7/30/2019 Software Matematic - Matlab

    5/63

    8

    1 Introducere

    Pachetul software Matlab al companiei MathWorks este un soft-ware special conceput pentru rezolvarea cu usurinta a problemelorde calcul numeric ce apar in domeniul stiintei si ingineriei. El are ogama bogata de rutine ce permite scrierea rapida de cod datoritafelului natural in care variabilele pot fi definite si initializate inMatlab. Printre domenii de aplicabilitate se afla:

    1. calcul matricial si vectorial

    2. operatii cu functii trigonometrice, exponentiale, polinomiale

    3. rezolvarea de sisteme de ecuatii liniare si neliniare

    4. interpolare

    5. optimizari

    6. statistica

    7. grafica

    8. operatii cu siruri de caractere

    Pachetul software Matlab nu este gratis. Pentru rularea exem-

    plelor din aceste note vom folosi Octave, versiunea free a softuluiMatlab. La data scrierii acestor note Octave putea fi downloa-dat de pe situl http://sourceforge.net, efectuati pe acel site ocautare dupa cuvantul cheie Octave. Downloadati de acolo fisierulOctave Forge Windows. Fisierul are aprox. 32Mb. Puteti gasiOctave deasemenea in distributia cygwin (linux emulator for win-dows),www.cygwin.com. Daca sunteti utilizator de linux atunciputeti instala Octave selectand in sectiunea Math din pachetele

    dumneavoastra distributia Octave corespunzatoare versiunii de

    http://sourceforge.net/http://www.cygwin.com/http://www.cygwin.com/http://www.cygwin.com/http://sourceforge.net/
  • 7/30/2019 Software Matematic - Matlab

    6/63

    9

    linux pe care o aveti. Exista compatibilitate foarte mare intreOctave si Matlab, scripturile Octave putand fi rulate pe platformaMatlab si invers.

    Se poate spune ca Matlab e cel mai eficient limbaj de progra-mare pentru proiectarea de soft ce presupune un bogat continutmatematic precum calcule extinse sau grafica. Ca drawback, da-torita flexibilitatii ce duce la scriere foarte rapida de cod el ruleaza

    mai incet decat executabile in C si chiar Java, de aceea pentruprobleme foarte mari ce presupun foarte multe calcule (de pildarezolvarea unui sistem cu matrice de dimesiunea milioanelor) e depreferat ca Matlab sa fie utilizat numai ca unealta pt proiectarearutinelor, verificarea lor pe probleme mai mici si apoi convertirearutinelor Matlab in cod C/C++ sau alt limbaj de programare mairapid.

    Atat Matlab cat si versiunea free Octave sunt amplu documen-

    tate atat online cat si in editii tiparite. Se pot consulta de pildasiturilesite-ul Gnu Octave, in englezaMathWorks site, in englezatutorial Matlab al Univ. of Ottawa, in englezatutorial Matlab al Univ. of Michigan, in englezatutorial Matlab, Univ. A.I. Cuza, Iasisau cartea [1].

    http://www.gnu.org/software/octave/doc/interpreter/http://www.mathworks.com/access/helpdesk_r13/help/techdoc/ref/ref.htmlhttp://www.site.uottawa.ca/~adler/octave/octave_manual.pdfhttp://www.engin.umich.edu/group/ctm/basic/basic.htmlhttp://thor.info.uaic.ro/~fliacob/An2/2007-2008/Materiale%20pentru%20seminarii%20si%20laborator/Introducere%20in%20Matlab-Index%20cu%20exemple.pdfhttp://thor.info.uaic.ro/~fliacob/An2/2007-2008/Materiale%20pentru%20seminarii%20si%20laborator/Introducere%20in%20Matlab-Index%20cu%20exemple.pdfhttp://www.engin.umich.edu/group/ctm/basic/basic.htmlhttp://www.site.uottawa.ca/~adler/octave/octave_manual.pdfhttp://www.mathworks.com/access/helpdesk_r13/help/techdoc/ref/ref.htmlhttp://www.gnu.org/software/octave/doc/interpreter/
  • 7/30/2019 Software Matematic - Matlab

    7/63

    10

    2 Lucrul cu fisiere in Matlab

    Presupunand ca ati instalat versiunea Windows a pachetului Oc-tave, trebuie doar ca sa deschideti terminalul de lucru Octave se-lectand Octave din sectiunea All Programs a calculatorului dum-neavoastra. Daca lucrati pe cygwin sau linux, tipariti comandaoctave in terminal si apoi apasati enter.Din acest moment aveti acces la comenzile built-in din Octave/Matlab.Comanda path

    Puteti vedea caile de acces la aceste comenzi executand comandapath. In cazul meu, comanda path returneaza

    octave:1> path

    Octaves search path contains the following directories:

    .

    /usr/lib/octave/2.1.73/site/oct/i686-pc-cygwin//

    /usr/lib/octave/site/oct/api-v13/i686-pc-cygwin//

    /usr/lib/octave/site/oct/i686-pc-cygwin//

    /usr/share/octave/2.1.73/site/m//

    /usr/share/octave/site/api-v13/m//

    /usr/share/octave/site/m//

    /usr/lib/octave/2.1.73/oct/i686-pc-cygwin///usr/share/octave/2.1.73/m//

    m-files

    Fisierele in care dumneavoastra veti scrie instructiuni matlab tre-buie sa aiba extensia .m. Daca ele sunt plasate in directorul curent,adica directorul returnat de comanda pwd, ele pot fi apelate direct,altfel ele se apeleaza impreuna cu intreaga cale la ele.

  • 7/30/2019 Software Matematic - Matlab

    8/63

    11

    Instructiunile matlab se pot scrie la linia de comanda in terminaluloctave sau se pot plasa intr-un fisier si apoi executa apeland la liniade comanda numele fisierului respectiv.Presupunand ca ati scris instructiuni matlab in fisierul test.m indirectorul curent pentru a le executa tipariti la linia de comandadin octavetest

    De pilda, daca fisierul test.m contine linia de codx=1atunci comanda test afiseaza valoarea 1. Fisierele matlab pot con-tine doar instructiuni matlab(scripturi matlab) sau pot continefunctii. Fisierele ce contin o functie trebuie sa aiba acelasi numeca si functia pe care o contin iar prima linie din fisier trebuie sacontina antetul functiei. De exemplu pentru implementarea uneifunctii numita patrat care calculeaza patratul unui numar real vom

    crea fisierul patrat.m(cu notepad, de exemplu) in directorul curentdupa care adaugam in el liniile de cod

    function z=patrat(x)

    z=x^2;

    Dupa efectuarea in terminalul octave a comenziipatrat(2)octave va afisa numarul 4.

    Comanda help

    Comanda help urmata de numele unei comenzi built-in matlabafiseaza intructiuni ajutatoare in legatura cu acea comanda.Comanda help urmata de numele unei functii matlab create dedumneavoastra si care se afla in path afiseaza intructiunile co-

    mentate cu % pe care le-ati plasat imediat dupa antetul functiei.

  • 7/30/2019 Software Matematic - Matlab

    9/63

    12

    Revenind la exemplul anterior, daca vom considera functia pa-trat.m

    function z=patrat(x)

    %calculeaza patratul unui numar x

    z=x^2;

    comandahelp patratva afisa textul calculeaza patratul unui numar x. Acest mod decomentare a modului de utilizare a unei functii poate fi foarte utilpentru a obtine cu unsurinta informatii despre functii precum ceinput accepta si ce anume returneaza.

    Tipuri de date

    In matlab exista o flexibilitate foarte mare in ce priveste utilizareavariabilelor din spatiul de lucru.Variabilele pot fi printre altele de tip real, intreg, complex, sir decaractere, vectori sau matrici, ele nu necesita declarare si tipul lor edetectat automat de matlab la momentul intializarii lor. Deaseme-nea in timpul executiei tipul variabilei se poate schimba dand vari-abilei respective o valoare de un tip diferit.De pilda, se pot efectua succesiv la linia de comanda operatiile

    x=1;

    x=[1 2];

    initializeaza mai intai variabila x cu valoare de tip intreg 1, dupacare se stocheaza in x vectorul linie de componente 1,2.

  • 7/30/2019 Software Matematic - Matlab

    10/63

    13

    Comanda which urmata de o comanda matlab functioneazaprecum comanda similara din sistemul linux. Ea returneaza caleacatre comanda matlab respectiva.

    Comanda who listeaza numele variabilelor din sesiunea curenta.

    Comanda whos listeaza numele variabilelor din sesiunea curenta

    precum si tipul si dimensiunea lor.

    Comanda diary test stocheaza in fisierul test din directorulcurent toate comenzile efectuate la linia de comanda si rezultateleafisate dupa efectuarea comenzii diary. Inregistrarea comenzilor sia rezultatelor se poate opri cu comanda diary off.

    Pentru mai multe informatii si exemple in ce priveste utilizareacomenzilor which, whos, who, diary consultati [1] sau siturile re-comandate in primul capitol, Introducere.

  • 7/30/2019 Software Matematic - Matlab

    11/63

    14

    3 Functii de gestionare a timpului

    Functiile matlab tic,toc,clock, etime ne dau informatii despre tim-pul de executia al unei comenzi si informatii despre