introducere in matlab - profs.info.uaic.rofliacob/an2/2007-2008/materiale pentru... · introducere...

7
Introducere in Matlab INDEX ( cu exemple) Constante ans Variabila creata automat de mediul Matlab, in care este returnat rezultatul uni calcul, atunci cand expresia nu a avut un nume asignat eps Variabila permanenta in care este memorata eroarea relativa pentru calcule efectuate in virgula mobila pi Variabila permanenta cu valoarea 3.1415 ... i Variabila folosita la scrierea numerelor complexe. Exemplu: z=x+y*i cu x si y din R j Variabila alternativa la unitatea imaginara inf Variabila folosita pentru reprezentarea lui plus infinit ca rezultat al impartirii 1.0/0.0 nan Variabila folosita pentru reprezentarea lui Not-A-Number ca rezultat al impartirii 0.0/0.0 realmax, realmin Cea mai mare/mica valoare pozitiva in virgula mobila ---------------------------------------------------------------------------------------------------------------- Caractere speciale in Matlab : Se foloseste la generarea diviziunilor ( ) Folosite pentru “corpul” unei functii [ ] Pentru desemnarea unei matrici/vector @ Simbol pentru anuntarea unei functii de tip FUNCTION_HANDLE . Indicator de operatie aritmetica “element cu element” . Continuarea unei comenzi Matlab pe linia de comanda urmatoare , Separator intre instructiuni pe aceiasi linie de comanda (cu ecou pe ecran) ; Separator intre instructiuni pe aceiasi linie de comanda ( fara ecou pe ecran) % Se foloseste pentru a anunta comentarii in program ! Parasirea mediului Matlab pentru o sesiune de lucru externa = Asignare Transpusa unei matrici [,] Separator intre elementele aceleiasi linii intr-o matrice/vector [;] Separator intre liniile unei matrici --------------------------------------------------------------------------------------------------------------- Operatori aritmetici in Matlab 1) ADUNAREA a+b , a si b sunt doua matrici reale sau complexe de acelasi tip SAU a este un scalar si b este o matrice oarecare SAU a si b sunt numere reale sau complexe (operatia a scalar si b matrice este specifica Matlab: se aduna scalarul a la toate elementele matricii b. Spre exemplu: »a=2 ; b=[-1 3;4 5] atunci »a+b=[1 5;6 7] ) 2) SCADEREA a-b , a si b sunt doua matrici reale sau complexe de acelasi tip SAU a este un scalar si b este o matrice oarecare SAU a si b sunt numere reale sau complexe (operatia a scalar si b matrice este specifica Matlab: se scad din scalarul a toate elementele matricii b. Spre exemplu: »a=2 ; b=[-1 3;4 5] atunci »a-b=[3 -1;-2 -3]) 3) INMULTIREA a*b , a si b sunt doua matrici reale sau complexe de acelasi tip SAU numarul coloanelor lui a egal cu numarul liniilor lui b SAU a este un scalar si b o matrice SAU a si b sunt numere reale sau complexe 4) INMULTIREA element cu element a.*b daca a si b sunt doua matrici / vectori de acelasi tip ( operatie specifica Matlab: se inmultesc intre ele elementele de pe aceiasi pozitie. Spre exemplu: » a=[2 4;2 2;1 1] ; b=[-1 2;0 -6;1 7] atunci » a.*b= [-2 8 ;0 -12; 1 7] ) 5) IMPARTIREA LA DREAPTA a/b , a si b sunt numere reale sau complexe SAU daca a si b sunt matrici atunci a/b este solutia sistemului liniar compatibil determinat x*a=b adica b*inv(a) unde inv(a) este inversa matricii a (operatie specifica Matlab). Exemplu: Se da sistemul x*a=b unde a=[1 4;2 -3] si b=[1 3] atunci a/b returneaza solutia [1.300;0.700] 6) IMPARTIREA LA STANGA a\b , a si b sunt numere reale sau complexe SAU daca a si b sunt matrici atunci a\b este solutia sistemului liniar compatibil determinat a*x=b adica x=inv(a)*b unde inv(a) este inversa matricii a (operatie specifica Matlab) . Exemplu: Se da sistemul a*x=b unde a=[1 1; 4 5] si b=[1 2]’ atunci a\b returneaza solutia [ 3 -2]’ 7) IMPARTIREA ELEMENT CU ELEMENT LA DREAPTA a./b , a si b sunt doua matrici reale sau complexe de acelasi tip (operatie specifica Matlab:se impart intre ele elementele de pe aceiasi pozitie). Exemplu: »a=[1 1; 4 5] ; b=[3 -1;-2 -3] atunci »a./b returneaza matricea [0.3333 -1.0000 ; - 2.0000 -1.6667]) 8) IMPARTIREA ELEMENT CU ELEMENT LA STANGA a.\b (operatie specifica Matlab:se impart intre ele elementele de pe aceiasi pozitie). Exemplu: »a=[1 1; 4 5] ; b=[3 -1;-2 -3] atunci »a./b returneaza matricea [0.3333 -1.0000 ; -2.0000 -1.6667] ) 9) RIDICARE LA PUTERE a^b , a si b sunt numere reale sau complexe SAU a este matrice reala sau complexa si b numar natural mai mare decat 1 SAU a este un scalar iar b o matrice patratica

Upload: ngotruc

Post on 08-Feb-2018

217 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Introducere in Matlab - profs.info.uaic.rofliacob/An2/2007-2008/Materiale pentru... · Introducere in Matlab INDEX ( cu exemple) Constante ans Variabila creata automat de mediul Matlab,

Introducere in Matlab INDEX ( cu exemple)

Constante ans Variabila creata automat de mediul Matlab, in care este returnat rezultatul uni calcul, atunci cand expresia nu a avut un nume asignat eps Variabila permanenta in care este memorata eroarea relativa pentru calcule efectuate in virgula mobila pi Variabila permanenta cu valoarea 3.1415 ... i Variabila folosita la scrierea numerelor complexe. Exemplu: z=x+y*i cu x si y din R j Variabila alternativa la unitatea imaginara inf Variabila folosita pentru reprezentarea lui plus infinit ca rezultat al impartirii 1.0/0.0 nan Variabila folosita pentru reprezentarea lui Not-A-Number ca rezultat al impartirii 0.0/0.0 realmax, realmin Cea mai mare/mica valoare pozitiva in virgula mobila ----------------------------------------------------------------------------------------------------------------

Caractere speciale in Matlab : Se foloseste la generarea diviziunilor ( ) Folosite pentru “corpul” unei functii [ ] Pentru desemnarea unei matrici/vector @ Simbol pentru anuntarea unei functii de tip FUNCTION_HANDLE . Indicator de operatie aritmetica “element cu element” . … Continuarea unei comenzi Matlab pe linia de comanda urmatoare , Separator intre instructiuni pe aceiasi linie de comanda (cu ecou pe ecran) ; Separator intre instructiuni pe aceiasi linie de comanda ( fara ecou pe ecran) % Se foloseste pentru a anunta comentarii in program ! Parasirea mediului Matlab pentru o sesiune de lucru externa = Asignare ‘ Transpusa unei matrici [,] Separator intre elementele aceleiasi linii intr-o matrice/vector [;] Separator intre liniile unei matrici ---------------------------------------------------------------------------------------------------------------

Operatori aritmetici in Matlab 1) ADUNAREA a+b , a si b sunt doua matrici reale sau complexe de acelasi tip SAU a este un scalar si b este o matrice oarecare SAU a si b sunt numere reale sau complexe (operatia a scalar si b matrice este specifica Matlab: se aduna scalarul a la toate elementele matricii b. Spre exemplu: »a=2 ; b=[-1 3;4 5] atunci »a+b=[1 5;6 7] ) 2) SCADEREA a-b , a si b sunt doua matrici reale sau complexe de acelasi tip SAU a este un scalar si b este o matrice oarecare SAU a si b sunt numere reale sau complexe (operatia a scalar si b matrice este specifica Matlab: se scad din scalarul a toate elementele matricii b. Spre exemplu: »a=2 ; b=[-1 3;4 5] atunci »a-b=[3 -1;-2 -3]) 3) INMULTIREA a*b , a si b sunt doua matrici reale sau complexe de acelasi tip SAU numarul coloanelor lui a egal cu numarul liniilor lui b SAU a este un scalar si b o matrice SAU a si b sunt numere reale sau complexe 4) INMULTIREA element cu element a.*b daca a si b sunt doua matrici / vectori de acelasi tip ( operatie specifica Matlab: se inmultesc intre ele elementele de pe aceiasi pozitie. Spre exemplu: » a=[2 4;2 2;1 1] ; b=[-1 2;0 -6;1 7] atunci » a.*b= [-2 8 ;0 -12; 1 7] ) 5) IMPARTIREA LA DREAPTA a/b , a si b sunt numere reale sau complexe SAU daca a si b sunt matrici atunci a/b este solutia sistemului liniar compatibil determinat x*a=b adica b*inv(a) unde inv(a) este inversa matricii a (operatie specifica Matlab). Exemplu: Se da sistemul x*a=b unde a=[1 4;2 -3] si b=[1 3] atunci a/b returneaza solutia [1.300;0.700] 6) IMPARTIREA LA STANGA a\b , a si b sunt numere reale sau complexe SAU daca a si b sunt matrici atunci a\b este solutia sistemului liniar compatibil determinat a*x=b adica x=inv(a)*b unde inv(a) este inversa matricii a (operatie specifica Matlab) . Exemplu: Se da sistemul a*x=b unde a=[1 1; 4 5] si b=[1 2]’ atunci a\b returneaza solutia [ 3 -2]’ 7) IMPARTIREA ELEMENT CU ELEMENT LA DREAPTA a./b , a si b sunt doua matrici reale sau complexe de acelasi tip (operatie specifica Matlab:se impart intre ele elementele de pe aceiasi pozitie). Exemplu: »a=[1 1; 4 5] ; b=[3 -1;-2 -3] atunci »a./b returneaza matricea [0.3333 -1.0000 ; -2.0000 -1.6667]) 8) IMPARTIREA ELEMENT CU ELEMENT LA STANGA a.\b (operatie specifica Matlab:se impart intre ele elementele de pe aceiasi pozitie). Exemplu: »a=[1 1; 4 5] ; b=[3 -1;-2 -3] atunci »a./b returneaza matricea [0.3333 -1.0000 ; -2.0000 -1.6667] ) 9) RIDICARE LA PUTERE a^b , a si b sunt numere reale sau complexe SAU a este matrice reala sau complexa si b numar natural mai mare decat 1 SAU a este un scalar iar b o matrice patratica

Page 2: Introducere in Matlab - profs.info.uaic.rofliacob/An2/2007-2008/Materiale pentru... · Introducere in Matlab INDEX ( cu exemple) Constante ans Variabila creata automat de mediul Matlab,

10) RIDICARE LA PUTERE element cu element a.^b, a si b sunt doua matrici reale sau complexe de acelasi tip (operatie specifica Matlab: operatia se efectuaeaza pentru elementele de pe aceiasi pozitie). Exemplu: »a=[1 1; 4 5] ; b=[3 -1;-2 -3] atunci »a.^b returneaza matricea [1.0000 1.0000; 0.0625 0.0080] ) 11) TRANSPUSA a' unde a este o matrice reala sau complexa oarecare ( schimba liniile cu coloanele iar pentru matricile cu elemente numere complexe pe noua pozitie complexele sunt conjugate) ----------------------------------------------------------------------------------------------------------------

OPERATORI RELATIONALI SI LOGICI Operatori relationali = = (egal); ~= (diferit) ; < ; > ; <= ; >= Spre exemplu: »a<b compara matricile a si b de acelasi tip, element cu element si returneaza o matrice de acelasi tip care contine : in pozitiile in care relatia este adevarata intre elemente se afla elementele lui a iar in cele in care relatia nu este adevarata zerouri Operatori logici & (si); | (sau); ~ (not); xor (or) Spre exemplu: »a&b returneaza o matrice de acelasi tip cu a si b cu 1 pe pozitiile in care a si b nu au elemente 0 si 0 pe pozitiile in care a si b au elemntele 0 ( unul dintre elementele operatiei poate fi un scalar iar celalalt o matrice oarecare) ---------------------------------------------------------------------------------------------------------------

INTRODUCEREA DATELOR [ ] Introducerea matricilor si vectorilor in linia de comanda Exemplul 1. Sa se rezolve sistemul liniar x+2*y+3*z=1 4*x+5*y+6*z=2 7*x+8*y+5*z=3 Se introduce matricea A si vectorul B »A=[1 2 3;4 5 6;7 8 5]; B=[1 2 3]’; Vectorii de pas constant intre componente se genereaza cu instructiune : sau cu linspace Exemplul 2: Sa se genereze vectorul cu componentele 100 98 96 …. -98 -100 »x=100:-2:-100

Introducerea functiilor Exemplul 1: Functiile elementare sunt acceptate direct Sa se determine minimul functiei y=sin(x) in intervalul [0,2*pi] »xmin=fmin(‘sin’,0,2*pi) % calculeaza minimul local al functiei y=sin(x) in intervalul [0, 2*pi] Exemplul 2: Sa se afle minimul local al functiei y = 1 ./((x-.3).^2 + .01)+1 ./ ((x-.9).^2 + .04) – 6 in intervalul [1,2] Varianta 1: Se scrie in editorul Matlab , un fisier functie cu numele humps.m function y-humps(x) y = 1 ./ ((x-.3).^2 + .01) + 1 ./ ((x-.9).^2 + .04) - 6; Se apeleaza functia humps.m in corpul functiei fmin, cu sintaxa »x = fmin (‘humps’,1,2) Varianta 2: »f=inline(‘1 ./ ((x-.3).^2 + .01) + 1 ./ ((x-.9).^2 + .04) - 6’), x=fmin(f,1,2) Exemplul 3: Se foloseste metoda functiilor de tip anonymous (function handle). Sa se determine minimul local pentru functia de doua variabile z= 100*(y-x^2)^2+(1-x1)^2, cunoscuta sub numele de banana »banana = @(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2; »[x,fval] = fmins (banana,[-1.2, 1]) Observatie: Comanda Matlab, plot primeste forma analitica a functiei direct in corpul sau pe locul variabilei dependente Exemplu: »x=1:0.1:10; plot(x,’sin(x)./x’.’-‘) ---------------------------------------------------------------------------------------------------------------

Conrolul fluxului si vectorizare if Instructiune pentru executia conditionata (ciclu cu test initial) else Instructiune asociata cu if elseif Instructiune asociata cu if for Instructiune pentru crearea ciclurilor cu numar specificat de pasi while Instructiune pentru crearea ciclurilor cu conditie logica break Instructiune pentru terminarea fortata intr-un ciclu return Returneaza executia la functia specificata error Instructiune pentru afisarea unui mesaj de eroare end Instructiune pentru incheierea ciclurilor de tip for, if ,while switch Instructiune care schimba cazurile in baza unei expresii case Instructiune folosita cu switch

Page 3: Introducere in Matlab - profs.info.uaic.rofliacob/An2/2007-2008/Materiale pentru... · Introducere in Matlab INDEX ( cu exemple) Constante ans Variabila creata automat de mediul Matlab,

otherwise Instructiune folosita cu switch Exemplu: Sa se calculeze functia valorile functiei f(x) definite ca 2*x+3, daca x apartine intervalului [-10,2] si 2*x^2-1 daca x apartine intervalului (2,20] pentru toate valorile intregi pentru care este definita si sa se reprezinte grafic. »x=-10:20; for k=1:length(x) if x<=2 f= 2*x(k)+3 ; else f=2*x.^2-1 end end »plot(x,f) Vectorizare De multe ori ciclurile for pot fi evitate folosind facilitatile de vectorizare Matlab Exemplu ; Generati un vector xn cu elementele, xn = (-1)n+1/(2n-1), n este natural si n=1…200 »n=1:200; xn=(-1).^(n+1)./(2*n-1) -----------------------------------------------------------------------

Analiza matriciala inv Calculeaza inversa unei matrice patratice nesingulare pinv Calculeaza pseudoinversa unei matrici rank Calculeaza rangul unei matrice cond Estimeaza numarul de conditionare al matricei det Calculeaza determinantul unei matrici patratice trace Calculeaza urma unei matrice condest Estimeaza numarul de conditionare al matricei norm Calculeaza norma vectorului sau matricei rcond Estimeaza numarul de conditionare al matricei size Returneaza dimensiunea unei matrici length Returneaza lungimea unui vector ‘ Calculeaza transpusa unei matrici/vector diag Extrage din matrice, matricea diagonala Exemplul 1. Se dau matricile A=[2 -3 1;-4 6 2;1 2 3] si B=[1, 3, 1] Se cere size(A), length(B), rank(A),det(A), inv(A) , cond(A), trace(A), A’, B’ » size(A), length(B), rank(A),det(A), inv(A) , cond(A), trace(A), A’, B’, diag(A) ----------------------------------------------------------------------------------------------------------------

Prelucrarea sirurilor de date si calcule statistice max Determina cea mai mare componenta a unui vector/matrice min Determina cea mai mica componenta a unui vector/matrice mean Calculeaza valoarea medie a componentelor unui vector median Calculeaza valoarea mediana a componentelor unui vector sort Sorteaza elementele in ordine crescatoare std Calculeaza abaterea standard a a componentelor unui vector sum Calculeaza suma componentelor unui vector/matrice cumsum Calculeaza suma cumulate a componentelor unui vector prod Calculeaza produsul a componentelor unui vector cumprod Calculeaza produsul cumulat a componentelor unui vector corrcoef Calculeaza coeficientii de corelatie cov Calculeaza matricea de covarianta hist Reprezinta histograma find Cauta elementele sau indicii elementelor care indeplinesc o anumita conditie

Exemplu Se da sirul xn = (-1)n+1/(2n-1), n este natural si n=1…200. »n=1:200; xn=(-1).^(n+1)./(2*n-1) % genereaza primii 200 termeni din xn »xnmax=max(xn), xnmin=min(xn) % calculeaza cel mai mare/mic element din sir »xnmedie=mean(xn) % calculeaza media aritmetica a elementelor sirului xn »xnsortat= sort(xn) % soerteaza in ordine crecatoare elementele lui xn »s=sum(xn),p=prod(xn) % calculeaza suma/produsul elementelor sirului »sc=cumsum(xn), pc=prod(xn) % calculeaza sumele/produsele partiale ale sirului »s=sum(xn(3:72)) % calculeaza suma elementelor din sir de la pozitia 3 la pozitia 72 » x1=xn(find(xn>0)) % extrage din sir acel sir care contine elementele strict positive »i=find(xn>=0) % genereaza un sir care contine indicii elementelor positive ale sirului ---------------------------------------------------------------------------------------------------------------

Rezolvarea ecuatiilor algebrice si transcendente roots Calculeaza radacinile unui polinom fzero Determina zeroul unei functii de o variabila reala fsolve Calculeaza radacina reala a unei ecuatii Exemplul 1: Sa se rezolve ecuatia polinomiala (1+i)*x^7+4*x^5-3*i*x^2+x+1=0

Page 4: Introducere in Matlab - profs.info.uaic.rofliacob/An2/2007-2008/Materiale pentru... · Introducere in Matlab INDEX ( cu exemple) Constante ans Variabila creata automat de mediul Matlab,

»p=[1+i 0 4 0 0 –3*i 1 1]; r=roots(p);r=r’ »f=inline('-x.^2+log(x)+4'),x=fzero(f,1) Exemplul 2: Sa se rezolve ecuatia transcendenta -x^2+log(x)+4=0 cu solutia de start x0=2 »f=inline('-x.^2+log(x)+4'),x=fzero(f,1) Exemplul 3. Sa se rezolve ecuatia transcendenta -x^2+log(x)+4=0 cu solutia de start x0=2 »f=inline('-x.^2+log(x)+4'),x=fsolve(f,1) ----------------------------------------------------------------------------------------------------------

Rezolvarea sistemelor liniare si nelineare inv Calculeaza inversa unei matrice patratice nesingulare pinv Calculeaza pseudoinversa unei matrici rank Calculeaza rangul unei matrice cond Estimeaza numarul de conditionare al matricei det Calculeaza determinantul unei matrici patratice \ Rezolva prin pivotare Gauss sistemul liniar A*X=B fsolve Calculeaza radacinile realea pentru un sistem liniar sau nelinear Exemplul 1. Sa se rezolve sistemul liniar x+2*y+3*z=1 4*x+5*y+6*z=2 7*x+8*y+5*z=3 »A=[1 2 3;4 5 6;7 8 5]; B=[1 2 3]’; X=inv(A)*B »A=[1 2 3;4 5 6;7 8 5]; B=[1 2 3]’; X=A\B Exemplul 2. Sa se rezolve sistemul neliniar: sin(x) + y^2 + log(z) - 7 = 0; 3*x + 2^y - z^3 + 1 = 0 x + y + z - 5 = 0 folosind functia fsolve cu solutia de start x=1,y=1,z=1 »solutie = fsolve('f_sistem',[1 1 1]) % unde f_sistem.m este functia care descrie sistemul function q = f_name(p) x = p(1); y = p(2); z = p(3); q = zeros(3,1); q(1) = sin(x) + y.^2 + log(z) - 7; q(2) = 3*x + 2.^y – z.^3 + 1; q(3) = x + y + z - 5; ---------------------------------------------------------------------------------------------------------------

Polinoame in Matlab conv Calculeaza produsul a doua polinoame deconv Calculeaza catul si restul impartirii a doua polinoame poly Calculeaza coeficientii unui polinom cu radacinile date polyval Evalueaza un polinom la valorile precizate ale variabilei polyder Calculeaza derivata polinoamelor polyfit Aproximeaza un set de date cu un polinom degrad n residue Descompune in fractii simple raportul a doua polinoame roots Calculeaza radacinile unui polinom Exemplul 1. Fie polinoamele: p1=[1 -3 5 8 0 0 1]; p2=[4 0 -2 4 3 1 -1]; »p3=p1+p2 % p3 este polinomul suma »p4=p1-p2 % p4 este polinomul diferenta »p5=5*p1 % p5 este polinomul 5*p1 »p6=conv(p1,p2) % p6 este polinomul produs » [q,r]=deconv(conv(p1,p2), p1) % Impartirea polinoamului p3=p1*p2 la p1 , q=catul si r=restul » [q1,r1]=deconv(conv(p1,p2),p2) %Impartirea polinomului p3=p1*p2 la p2, q1=catul si r1=restul » [rest,poli,cat]=residue(p1,p2) % rest=vectorul rest, poli=vectorul polilor, cat=vectorul catului »p7=p1.*p2 % p7 este polinomul obtinut prin inmultirea termen cu termen »p8=p1.\p2 % p8 este polinomul obtinut prin impartirea termen cu termen »p9=2 .^p1 % p9 este polinomul obtinut prin ridicarea la puterea a lui 2-a lui p1 »p1deriv=polyder(p1) % p1deriv este derivata polinomului p1 ----------------------------------------------------------------------------------------------------------------

Interpolarea si aproximarea datelor table1 Interpoleaza liniar si citeste date din tabele unidimensionale spline Interpoleaza prin metoda spline date din tabele unidimensionale polyfit Aproximeaza un set de date cu un polinom de gradul n polyval Evalueaza un polinom la valorile precizate ale variabilei interp1 Interpoleaza liniar, spline sau cubic date din tabele unidimensionale table2 Interpoleaza liniar date si citeste date din tabele bidimensionale interp2 Interpoleaza biliniar sau bicubic date din tabele bidimensionale

Page 5: Introducere in Matlab - profs.info.uaic.rofliacob/An2/2007-2008/Materiale pentru... · Introducere in Matlab INDEX ( cu exemple) Constante ans Variabila creata automat de mediul Matlab,

interp3 Interpoleaza biarmonic valorile unei functii de doua variabile interp4 Interpoleaza biliniar valorile unei functii de doua variabile interp5 Interpoleaza bicubic valorile unei functii de doua variabile regress Aproximeaza un set de date cu o functie de mai multe variabile Exemplul 1. In urma unui experiment a rezultat urmatorul tabel de date t(timp) 1 2 3 4 5 T(temp) 0 20 60 77 110 Sa se determine expresia analitica a curbei polinomiale care aproximeaza functia T=f(t) »x = 1:5; y = [ 0.20 60 68 77 110];plot(x,y) % se observa ca datele sunt bine approximate de un polinom de gradul 1 »coef = polyfit(x,y,1); y1= coef(1)*x+coef(2); Exemplul 2. In urma unui experiment se inregistreaza datele: ora=[0 2.5 5 7.5] , temp=[1 -1 0.5 0]; se cere sa se reprezinte grafic variatia lui temp in intervalulul [0, 7.5], folosind cubic_spline de pas 0.25 . Se cere de asemenea sa se estimeze valoarea lui temp la ora=0.25 » ora=[0 2.5 5 7.5] , temp=[1 -1 0.5 0]; xi=0:0.25:7.5; yi=spline(x,y,xi); »plot(ora,temp,'o',xi,yi) »valoarea_ceruta0=spline(ora,temp,0.25) -----------------------------------------------------------------------------------------

Derivarea numerica diff Evalueaza diferenta elementelor succesive ale unui vector sau ale coloanei matricei gradient Calculeaza derivatele partiale ale unei functii de doua variabile 4*del2 Calculeaza Laplacianul unei functii de doua variabile Exemplul 1. Fie functia y=x^2 definita pe [2,4] cu derivata analitica y’=2*x Sa se compare valorile derivatei obtinute cu functia Matlab, diff, cu cele obtinute prin calcul analitic direct »x=2:0.01:4; y=x.^2 ; dx=diff(x); dy=diff(y); yprim=diff(y)./diff(x); »yprim_analitic=2*x (x(1):length(x)); eroare=max(abs(yprim- yprim_analitic)) Exemplul 2. Sa se calculeze derivatele partiale ale functiei z(x,y)=x*exp(-x^2-y^2) » [x,y]=meshgrid(-2:0.2:2, -2:0.2:2); z=x.*exp(-x.^2-y.^2); [px,py]=gradient(z,0.2,0.2) Exemplul 3. Sa se calculeze valoarea aproximativa a Laplacianului pentru functia f(x,y)=3*x^3+2*y^2 pe intervalul [-4,4] x [-4,4] » [x,y]=meshgrid(-4:4, -4:4); f=2*x.^3+2*y.^3; L=4*del2(f) -------------------------------------------------------------------------------------------------------------

Integrarea numerica quad Calculeaza integrala prin metoda adaptiv-recursiva Simpson quad8 Calculeaza integrala prin metoda adaptiv-recursiva Newton Cotes de ordinul 8 trapz Calculeaza integrala prin metoda trapezelor

Exemplul Sa se calculeze ∫4

0

)sin( dxx

x prin metoda trapezelor si cu functiile quad si quad8

»eps=1/10^3; x=eps:0.01:4;f=sin(x)./x; i=trapz(x,y) » eps=1/10^3; f=inline(‘sin(x)./x ‘), i=quad(f,eps,4) » eps=1/10^3; f=inline(‘sin(x)./x ‘), i=quad6(f,eps,4) Extreme locale libere pentru functii de o variabila sau mai multe variabile fmin Calculeaza minimul functiilor de o variabila reala fmins Calculeaza minimul functiilor de mai multe variabile reale fmax=-(fmin(-f)) Exemplul 1. Sa se afle minimul si maximul functiei : f(x)=2*x^3-9*x^2+12*x+12 »f=inline(‘2*x.^3-9*x.^2+12*x+12’), xmin=fmin(f,0,3), fmin=f(xmin) »f=inline(‘-2*x.^3+9*x.^2-12*x-12’), xmax=fmin(f,0,3), fmax=-f(xmax) Exemplul 2. Sa se afle minimul functiei: z(x,y)=sin(x)*sin(y)*sin(x+y) , in intervalul [-pi/2,pi/2], folosind valoarea de start [1 1] »f = inline('sin(x(1)).*sin(x(2)).*sin(x(1)+x(2))'); Xmin = fmins(f,[1 1]) ---------------------------------------------------------------------------------------------------------------

Rezolvarea ecuatiilor diferentiale ordinare ode23 Rezolva ecuatii diferentiale sau sisteme de ecuatii diferentiale prin metoda Runge-Kutta de ordinul 2/3 ode45 Rezolva ecuatii diferentiale sau sisteme de ecuatii diferentiale prin metoda Runge-Kutta de ordinul 4/5 Exemplul 1. Sa se integreze ecuatia diferentiala y’=3*x^2 pe intervalul [2,4] cu conditia initiala y(2)=0.5 » [x,y] = ode23(‘yprim’,[2 4], 0.5) % unde yprim.m este functia care descrie ecuatia function dy=yprim(x,y) dy=3*x^2; --------------------------------------------------------------------------------------------------------------

Page 6: Introducere in Matlab - profs.info.uaic.rofliacob/An2/2007-2008/Materiale pentru... · Introducere in Matlab INDEX ( cu exemple) Constante ans Variabila creata automat de mediul Matlab,

GRAFICA 2D plot Deseneaza graficul 2D al unei functii y=f(x) in coordonate carteziene subplot Permite desenarea mai multor ferestre grafice pe acelasi ecran polar Deseneaza graficul 2D al unei functii in coordinate polare semilogx Deseneaza graficul 2D in coordinate semilogaritmice (logaritmice pe directia Ox) semilogy Deseneaza graficul 2D in coordinate semilogaritmice (logaritmice pe directia Oy) loglog Deseneaza graficul 2D in coordinate logaritmice (pe Ox si pe Oy) compass Deseneaza imagini de numere complexe sub forma trigonometrica grid Adauga graficului, o retea grid legend Adauga pe grafic o legenda bar Grafic cu bare 2D clf Sterge fereastra grafica curenta title Pune un titlu graficului xlabel Pune o eticheta (text)pentru axa Ox ylabel Pune o eticheta (text) pentru axa Oy axis Setarea manuala a axelor pentru graficul curent axes Crearea axelor in pozitii arbitrare text Plaseaza un text pe grafic la pozitia impusa hold Comanda inghetarea grafic curent pe ecran

Culori pentru trasarea graficului b –albastru g –verde k –negru m –magenta r –rosu y –galben c -cyan

Caractere acceptate pentru trasarea graficului . , o , x, * , +, s –patrat , d-diamond , v –triunghi cu varf in jos, ^ - triunghi cu varf in sus, < - triunghi cu varf instanga, > - triunghi cu varf in dreapta, p –pentagram, h –hexagram, - , : , -. , --

Exemplul 1: Sa se reprezinte grafic functia f(x)= sin(x)+log(x)-sqrt(x)+log2(x) pe intervalul [1,10] cu o descretizare a intervalului de pas egal cu 0.1 »x=1:0.1:10 % genereaza o diviziune a intervalului [1,10] de pas 0.01 »plot(x , sin(x)+log(x)-sqrt(x) + log2(x) ,’*’), title(‘Graficul … 2D’), … grid,xlabel(‘Variabila independenta x pe [0,10]’), ylabel(‘Functia y= sin(x)+log(x)-sqrt(x)+log2(x) ’) Exemplul 2. Se reprezinta grafic functiile: f(x)=(x.^2)./(x.^3+1) si g(x)=x./(x.^2+x+1) pe [1,3] cu pas de discretizare egal cu 0.1 (in coordinate carteziene, semilogaritmice pe Ox, semilogaritmice pe Oy) » x=1:0.1:3; f=(x.^2)./(x.^3+1); g=x./(x.^2+x+1); » plot(x,f,'*',x,g,'+'),grid ,title(' f(x)=x^2/(x^3+1) , g(x)=x/(x^2+x+1)'), xlabel('X'), … ylabel('f si g'),legend(' * ---> f(x) , + ---> g(x)') »semilogx(x,f,'*',x,g,'+'), grid , title(' f(x)=x^2/(x^3+1) , g(x)=x/(x^2+x+1)'), …. xlabel('log(X)'), ylabel('f si g'), ... legend(' * ---> f(x) , + ---> g(x) in coordinate logaritmice pe directia axei X') »semilogy(x,f,'*',x,g,'+'), grid , title(' f(x)=x^2/(x^3+1) ,g(x)=x/(x^2+x+1)'), xlabel('X'), ... ylabel('log(f) si log( g)'), ... legend(' * ---> f(x) , + ---> g(x) in coordinate logaritmice pe directia axei X') Exemplul 3. Sa se reprezinte grafic functiile sin(x), log(x), sqrt(x) si log2(x) definite pe intervalul [3,10] , in patru ferestre grafice pe acelasi ecran (se va face o discretizare a domeniului de pas egal cu 0.1 »x=3:0.1:10; »subplot(2,2,1), plot(x , sin(x),’*’), subplot(2,2,2), plot(x , log(x),’-’), subplot(2,2,3) , … plot(x , sqrt(x) , ’o’), subplot(2,2,4) , plot(x , log2(x),’+’) ----------------------------------------------------------------------------------------------------------------

GRAFICA 3D meshgrid Genereaza o diviziune 2D mesh Graficul unei suprafete in 3D meshc Graficul unei suprafete cu contur in 3D meshz Graficul unei suprafete cu “piedestal” in 3D surf Deseneaza suprafete 3D colorate; graficul 3D pentru o functie de doua variabile definita parametric surfc Deseneaza suprafete cu contur, 3D colorate surfnorm Deseneaza suprafete 3D si normalele la ele

Page 7: Introducere in Matlab - profs.info.uaic.rofliacob/An2/2007-2008/Materiale pentru... · Introducere in Matlab INDEX ( cu exemple) Constante ans Variabila creata automat de mediul Matlab,

waterfall Produce un mesh de tip “waterfall” plot3 Analogul in 3D pentru plot bar3 Grafic cu bare 3D comet3 Grafic 3D animat (effect de cometa) cylinder Deseneaza un cilindru sphere Deseneaza o sfera ellipsoid Deseneaza un ellipsoid de rotatie contour Deseneaza proiectiile intersectiilor cu plane paralele cu xOy, in planul xOy quiver Deseneaza vectorii tangenti la o suprafata Exemplu: Sa se reprezinte grafic hiperboloidul cu o panza de ecuatie x^2/25+y^2/9+z^2-16=0 (jumatatea pentru z<0) folosind functiile mesh si surf . Pentru a face reprezentarea grafica este necesar ca mai intai sa se genereze o retea patratica/dreptunghiulara in planul xOy ( in acest exemplu se va folosi un pas de discretizare egal cu 0. 1) pe intervalul [-3,3]x[-3,3] folosind functia meshgrid Sa se personalizeze graficul folosind functiile: xlabel, ylabel,zlabel ,title . Folosind functia surfnorm sa se reprezinte vectorii normali la suprafata. Folosind functia surfc sa se puna in evidenta liniile de acelasi nivel ale suprafetei hiperboloidului » [X,Y] = meshgrid([-3:.1:3],[-3:.1:3]); Z = sqrt(16 - X.^2/25 - Y.^2/9); »mesh(X,Y,Z) , xlabel('X'), ylabel('Y'), zlabel('Z'), title(' Functia Z=sqrt(16 -x.^2/25 - y.^2/9') »surf(X,Y,Z) , xlabel('X'), ylabel('Y'), zlabel('Z'), title(' Se foloseste functia SURF') »surfc(X,Y,Z) , xlabel('X'), ylabel('Y'), zlabel('Z'), title(' suprafata si liniile de acelsi nivel') ---------------------------------------------------------------------------------------------------------------------