Sunteți pe pagina 1din 29

Curs 3

MATLAB
The Language of Technical
Computing

calcul simbolic
polinoame
sisteme de ecuatii liniare
reprezentari grafice
Aproximari numerice
In Matlab avem urmatoarele functii de aproximare numerica.
Precizia aproximarii poate fi adaptata.
inline - definirea functiei

>> g=inline('sin(x)./(sin(x)+cos(x)+4)')
fplot(numef,lm,specl) - graficul funct iei utilizator, unde lm este un

vector cu 2 sau 4 valori indicand limitele pentru x s i eventual y,iar


specl este specificatorul de linie acelas i ca la comanda plot.
fminbnd(numef,xmin,xmax)- determinarea valorii minime a unei

func tii pe un interval, unde [xmin,xmax] indica intervalul in care


ca uta m valoarea minim a.
fzero(numef, x0) -calculul zerourilor(ra da cinilor) unei funct ii,

calculeaza o ra da cina a funct iei cea mai aproape de x0.


 quad(numef,a,b)- calculul integralei definite, unde a si b sunt

limitele intre care se integreaza . Putem calcula integrale duble sau


triple cu func tiile dblquad(numef, ax,bx,ay,by) sau
triplequad(numef,ax,bx,ay,by,az,bz).
Precizia solutiei
In Matlab, solut iile chiar date de formule exacte sunt intotdeauna
aproximative si de aceea este bine ca inainte de a determina
solu tia sa calcula m precizia solu tiei.

Formula preciziei este dat a de:

p < C * cond(A)* p(calculator) unde

C o constant a 1<C<10 ( recomandabil C=10)


p(calculator) precizia calculatorului, pentru PC-uri ~ 2.2 *10-16
cond(A) functia Matlab- num arul de condit ie al matricii referitor
la inversare.

Precizia de calcul, in cel mai defavorabil caz: 2.2 *10-15


cond(A)

Pentru calcule cu numere foarte mari sau foarte mici folositi


Precizia solutiei
Vrem sa calculam exp(7.0873e002). ans=?

Solutie folosind un mic artificiu:


a = 7.0873e2;
x = a/log(10);
D = floor(x); % D va fi un intreg, puterea lui 10
F = 10^(x-D); % va fi F mantisa

F = 6.27376373225551 % mantisa
D = 307 % exponentul (power of ten)

ans = 6.273763732256170e+307

Symbolic Math Toolbox - functia vpa (S,D)


Tipuri de date in Matlab
Un tip de date defineste un set de valori si operatiile permise pe
aceste valori.

Tipurile de date fundamentale din Matlab:


int16 numar intreg 16-biti
single numar precizie simpla (32 biti)
double numar precizie dubla (implicit 64 biti )
logical numar logical, boolean
char sir de caractere
sym obiect simbolic

Un obiect simbolic este o structura de date care stocheaza


reprezentarea unui simbol – folosit pentru reprezentarea
variabilelor, expresiilor si matricilor simbolice.
Calcul simbolic
Toolbox-ul Symbolic Math - lista completa a functiilor si
comenzilor Matlab pentru calcul simbolic.

Pe cale simbolica putem efectua operatiile de derivare, integrare,


calcularea limitelor, simplificarea expresiilor algebrice si
rezolvarea ecuatiilor.

Rezolvarea unei probleme pe cale simbolica trebuie sa inceapa cu


definirea obiectelor simbolice (simbolurilor), apoi se trece la
implementarea propriu-zisa a solutionarii problemei.

Definirea/crearea obiectelor simbolice se face cu comanda sym


(un obiect) sau syms (mai multe obiecte). Pentru crearea
expresiilor simbolice constante, trebuie folosita comanda sym. ( f =
sym('5') e diferita de f = 5, care nu defineste f ca o expresie
simbolica)
Calcul simbolic

 Datele numerice duc la rezultate efective, iar datele simbolice dau


un rezultat simbolic.
 Forma simbolica este un rezultat exact in timp ce forma numeric a

este un rezultat aproximativ (deoarece reprezentarea numeric a are


un numa r infinit de zecimale dupa virgula )
Exemplu: >> a=1/2+1/3
a =0.8333
>> b=sym(1)/sym(2)+sym(1)/sym(3)
b = 5/6

Intotdeauna putem obtine valoarea numerica a unui simbol cu


comanda double( )
Rezultatele simbolice nu se indenteaza!
Functii/comenzi pentru calcul simbolic
 comanda s=sym(x,'optiune') – creaza o variabila simbolica x ce se
stocheaza in s, iar optiunea de reprezentare/afisare poate fi: d (numar
decimal), f (numar real), r (numar rational), e-(numar in forma
rationala plus diferenta intre expresia rationala teoretica si expresia
actuala, reala (a calculatorului) in termeni exponentiali (the floating-
point relative accuracy); real- specifica proprietatile matematice a
variabilei simbolice create.
comanda findsym(f) – determina ce variabile simbolice sunt

prezente in expresia f.
subs(f,x,val) – substituirea/inlocuirea simbolurilor x dintr-o

expresie simbolica f , cu o valoare , val.


collect(f,v) - ordona m in raport cu puterile lui v o expresie f.

Daca variabila v lipses te se considera implicit x.


>> syms x y
>> collect((x+y)*(x^2+y^2+1))
ans =
x^3+y*x^2+(y^2+1)*x+y*(y^2+1)
Functii/comenzi pentru calcul simbolic
 expand(f) - scrierea expresiei f cu elementele ei constitutive.
Aceasta funct ie calculeaza produse de polinoame, desface
expresii trigonometrice, exponen tiale sau logaritmice.
>> expand(cos(x+y))
ans =
cos(x)*cos(y)-sin(x)*sin(y)
 simplify(f) - simplifica expresia f.

>> simplify((x^2+x-2)/(x-1))
ans =
x+2
 [n1,n2]=numden(f) calculeaza f ca o expresie ra tionala s i

calculeaza num ara torul n1 s i numitorul n2.Nu face s i


simplifica rile!
 solve('eq1', 'eq2', …'eqn', 'var1', 'var2'...'varn')- pentru

rezolvarea ecuatiilor si a sistemelor de ecuatii unde eqn sunt


expresiile simbolice reprezentand ecuatiile, iar varn sunt variabilele
simbolice ale necunoscutelor. Se presupune ca eq=0 (ducem toti
Functii simbolice
Unele func tii simbolice au primit acela si nume ca cele pentru
calcule pentru simplicitate.
det - functie care calculeaza determinantul unei matrice simbolice.

>>syms a b c d;
>>det([a, b; c, d]) ans = a*d-b*c
inv -functie care calculeaza inversa unei matrice simbolice

numeric sau simbolic. Exemple:


>>A = sym([a b;c d]);
>>inv(A)
ans =
[ d/(a*d-b*c), -b/(a*d-b*c)]
[ -c/(a*d-b*c), a/(a*d-b*c)]
rank - functie care calculeaza rangul maxim al unei matrice simbolice

factor(f)- factorizeaza expresia f. Dac a f este un num ar intreg face

descompunerea lui f in numere prime.


>> factor(x^3-y^3+x^2-y^2) ans = (x-y)*(x^2+x+y*x+y+y^2)
>> factor(13482) ans= 2 3 3 7 107
>> factor(sym(13482)) ans = (2)*(3)^2*(7)*(107)
Functii simbolice
limit(numef) - calculeaza limita unei functii
- numef este o expresie simbolica a unei funct ii de variabila x, sau
numele unei astfel de funct ii. Limita se calculeaza in 0.
>> syms x ; limit(sin(x)/x) ans =1
- limita in alt punct trebuie sa indica m valoarea ca tre care tinde x.
>> limit((x^2-1)*log(x),2) ans = 3*log(2)
- limite laterale indicand ‚left’- stanga, respectiv ‚right’ -dreapta.
>> limit(1/x,x,0,'left') ans = -Inf
>> limit((2-x-x^2)/(x^2+1),x,inf,'left') ans = -1
diff - derivat a unei funct ii date. Variabila de derivare este considerata

implicit x.
>> diff(x^5*log(x^2+1)) ans = 5*x^4*log(x^2+1)+2*x^6/(x^2+1)
-derivate de ordin superior indic ca argument a lui diff ordinul derivatei
>> diff(x^5*log(x^2+1), 3)
-derivata in funct ie de alta variabila decat x, indicata intre apostrofi – se
foloseste in calculul derivatelor partiale.
>>diff(t*sin(t^2+1),'t') ans = sin(t^2+1)+2*t^2*cos(t^2+1)
>>f (x, y) = x3 *sin y diff(diff(x^3*sin(y),2),'y') ans = 6*x*cos(y)
Functii simbolice
Funct iile int s i diff sunt inverse.
int- calculul primitivei unei functii

>>int(5*x^4*log(x^2+1)+2*x^6/(x^2+1)) ans = x^5*log(x^2+1)

Putem calcula si integrale definite indicand limitele de integrat (care


pot fi simboluri):
>> int(3*x^2,sin(t),cos(t)) ans = cos(t)^3-sin(t)^3

 Acest lucru ne permite sa facem diverse calcule complexe

>>int(int(3*x^2,sin(t),1),t) ans = t+1/3*sin(t)^2*cos(t)+2/3*cos(t)

ezplot(f)- graficul expresiei f=f(x) in intervalul implicit


-2*pi < x < 2*pi.
Polinoame
 Nota tia utilizata la polinoame este una simbolica .

Matlab utilizeaz a in calcule un vector ce are ca elemente


coeficient ii monoamelor.
Ex :se foloseste vectorul p=[1 0 0 0 -5 4] pentru a
reprezenta polinomul: p=x5 - 5x + 4

 Avem la stanga coeficientul monomului de grad maxim.

Avem coeficient zero pentru monoamele care lipsesc (cele


de grad 4, 3 si 2).

Num arul elementelor este cu 1 mai mare decat gradul


polinomului (adica 6, 5 fiind gradul polinomului+1).
Manipularea polinoamelor
In Matlab, manipularea polinoamelor se face prin intermediul mai
multor funct ii aplicate asupra vectorilor coeficien tilor:
w=conv(u,v) - inmul tirea a doua polinoame, unde u si v sunt

vectorii coeficient ilor polinoamelor care se inmul tesc, iar w este


vectorul coeficien tilor polinomului produs.
[c,r]=deconv(p,q) - impa rt irea a doua polinoame,unde c este

vectorul coeficientilor catului, iar r este vectorul coeficient ilor


restului.
roots(p) -determinarea r ada cinilor unui polinom

w=poly(v) -determinarea polinomului ale ca rui ra da cini sunt

elementele unui vector v


polyval(vcoef,x)-determinarea valorii polinomului reprezentat de

vectorul coeficient ilor vcoef, intr-un punct x. (atentie! x poate fi si


un vector!)
w=polyder(p) -derivata polinomului p , unde w sunt coeficient ii

rezultati.
Manipularea polinoamelor
Deseori avem nevoie sa determinam un polinom de un anumit grad
care sa aproximeze un set de date experimentale.

 Una dintre metodele de aproximare este metoda celor mai mici


p atrate (the least squares method)- in care polinomul de gradul n
trebuie generat:

yn(x)= a0xn+a1xn-1+...an-1x+an

astfel incat cei n+1 coeficienti aproximeaza cel mai bine datele
masuratorilor experimentale. n=1- aproximare lineara, n=2-
aproximare patratica etc.

 In Matlab acesti coeficienti sunt calculati cu functia polyfit.

 Pentru evaluarea acestei aproximari putem folosi functia polyval.


Manipularea polinoamelor

w=polyfit(x,y,n)-determinarea unui polinom de un anumit grad


care sa aproximeze un set de date experimentale in sensul
metodei celor mai mici p atrate, unde w este vectorul coeficient ilor
polinomului ca utat, vectorii x s i y sunt vectorii datelor
experimentale, iar n este gradul polinomului c autat.

Exemplu: daca x=0:pi/10:pi, iar y=sqrt(x) atunci polinomul de


gradul 4 ce aproximeaz setul de date este dat de
>> polyfit(x,y,4)
ans =
-0.2969 1.4531 -2.5609 2.3776 0.0183
Adic a polinomul:
-0.2969x4 +1.4531x3 - 2.5609x2 + 2.3776x + 0.0183
Manipularea polinoamelor
interp1(x,y,x0, ‚metoda’)-pentru aflarea valorilor prin interpolare
polinomial a , unde x,y sunt vectorii datelor experimentale. X0 este
punctul in care vrem s a afla m valoarea, iar metoda poate fi:
nearest -nearest neighbor interpolation,
linear - linear interpolation (implicit),
spline - piecewise cubic spline interpolation (SPLINE)
cubic - shape-preserving piecewise cubic interpolation
Metodele spline si cubic necesita mai mult timp de calcul dar sunt
mai precise.

Exemplu :pentru functia sqrt(x) in pct 1.1 avem valorile:


>> sqrt(1.1) ans =1.0488
>> interp1(x,y,1.1,'nearest') ans =1.0954
>> interp1(x,y,1.1,'linear') ans =1.0477
>> interp1(x,y,1.1,'spline') ans =1.0489
>> interp1(x,y,1.1,'cubic') ans = 1.0488
Rezolvarea sistemelor de ecuatii liniare

Pe cale numerica, in Matlab se pot rezolva:


 sisteme compatibile determinate
 sisteme compatibile nedeterminate (se pot gasi maxim 2
solutii particulare)
In rezolvarea sistemelor liniare in Matlab se presupune forma
matriceala:
A*X=b
respectiv,
Y*A=b
A-matricea coeficientilor
b-vectorul coloana al termenilor liberi si
X, Y- vectorul coloana/linie al necunoscutelor.

Un sistem de ecuatii liniare este definit in Matlab prin definirea


matricei A si a vecorului b.
Rezolvarea sistemelor compatibile determinate

Pot fi rezolvate prin doua metode numerice diferite:


 Metoda inversarii matriceale
 Metoda impartirii la stanga/dreapta

Metoda inversarii matriceale

In cazul unui sistem patratic, solutia sistemului este obtinuta


prin inversarea matricei coeficientilor si inmultirea ei cu
vectorul termenilor liberi:
X = inv(A) * b

respectiv,

Y = b * inv(A)
Rezolvarea sistemelor compatibile determinate
In Matlab, aceasta metoda nu necesita determinarea inversei
matricei coeficienţilor.

S-a introdus operatorul \ care calculeaza solutia sistemelor de


ecuatii liniare prin metoda eliminarii in versiunea Gauss.

Metoda impartirii la stanga /dreapta

X=A\b
respectiv,
Y=b /A
Solu ia cu operatorul / este mult mai rapida decat cu formula
clasica a inversarii, acest fapt devenind observabil atunci cand
matricile sunt de mari dimensiuni. Astfel pentru matrici de ordinul
1000 solu ia / a fost de 400 ori mai rapida .
Rezolvarea sistemelor compatibile nedeterminate

In cazul sistemelor compatibile nedeterminate nu se pot


determina pe cale numerica toate solutiile, acestea fiind in
numar infinit.

Se poate determina o solutie particulara folosind una din


urmatoarele doua metode:
 Metoda pseudo-inversarii matriceale
 Metoda impartirii la stanga/dreapta
Metoda pseudo-inversarii matriceale

Solutia sistemului este obtinuta prin inmultirea pseudo-inversei


matricei coeficientilor cu vectorul termenilor liberi. Se
utilizata pseudo-inversa Moore-Penrose a unei matrici -
functia pinv: X = pinv(A) * b
respectiv,
Y = b * pinv(A)
Rezolvarea sistemelor compatibile nedeterminate

Metoda impartirii la stanga /dreapta

X=A\b
respectiv,
Y=b /A

In acest caz, aceasta metoda realizeaza cautarea acelei solutii a


sistemului care minimizeaza (in sensul celor mai mici patrate)
norma euclidiana a vectorului A*X-b si care are cel mult rang A
componente nenule.
Rezolvarea sistemelor de ecuaţii liniare folosind
Symbolic Math Toolbox

Metodele de rezolvare precizate anterior sunt valabile si pentru


rezolvarea pe cale simbolica:
1. metoda inversarii / metoda pseudo-inversarii;
2. metoda impartirii la stanga / dreapta.

Rezolvarea pe cale simbolica necesita de obicei studiul sistemului


si efectuarea solutionarii pe cazuri.
Reprezentari grafice in plan 2D

Matlab permite reprezentarea in plan a graficelor de


functii si a suprafete poligonale.

Reprezentarile grafice ale functiilor pot fi facute in mai


multe tipuri de coordonate:
 carteziene,

 polare,

 logaritmice,

 semilogaritmice
Reprezentari grafice in plan- 2D
O parte din functiile Matlab destinate reprezentarilor grafice
2D:
plot(x,y, speclinie) - grafice in coordonate X-Y liniare; x

s i y sunt vectorii ce definesc punctele de reprezentat, iar


speclinie este un s ir de caractere intre ` ` reprezentand
tipul liniei ce unes te punctele definite de x s i y, markerul
cu care se reprezint a punctele definite de x si y s i
culoarea liniei, toate in aceast a ordine.
line(x,y) -reprezentarea grafica a liniilor poligonale

fill (x,y,s) - reprezentarea grafica a poligoanelor

loglog(x,y,s) -grafice in coordonate X-Y logaritmice

semilogx (x,y,s), semilogy(x,y,s) -grafice in coordonate X-

Y semilogaritmice (in baza 10)


polar(theta,rho,s) -grafice in coordonate polare
Reprezentari grafice in plan - 2D

Tipul de linie poate fi unul din simbolorile:


- continu a (implicit) , -- intrerupta, : puncte, -. linie-punct

Tipul marker-ului:
+ ( semnul +), o (cerc), * (asterisc), . (punct), x (cruce),
s (pa trat), d (romb), p (pentagon), h (hexagon) , ^ (triunghi
cu un varf in sus), v (triunghi cu un varf in jos), > (triunghi
cu un varf la dreapta), < (triunghi cu un varf la stanga)

Culorile pot fi urmatoarele simboluri:


r (ro su), g (verde), b (albastru), c (bleu), m (mov),
y (galben), k (negru), w (alb).
Reprezentari grafice in spatiu- 3D
In Matlab pot fi reprezentate grafic in spatiul 3D: curbe, suprafete
si corpuri 3-dimensionale. O parte din functiile Matlab destinate
reprezentarilor grafice 3D:
plot3(x,y,z, speclinie) - reprezentarea liniilor in spatiu, x,y,z sunt

vectorii ce definesc punctele de reprezentat, iar speclinie este un s ir


de caractere intre ` ` reprezentand tipul liniei ce unes te punctele
definite de x s i y, markerul cu care se reprezint a punctele definite
de x si y s i culoarea liniei, toate in aceast a ordine.
mesh(x,y,z,c) - reprezentarea grafica a suprafetelor 3D sub forma

unei retele (“mesh”)


surf(x,y,z), surfl(x,y,z,s) - reprezentarea grafica a suprafetelor

pline, cu iluminare
contour(x,y,z) , contourf(x,y,z,v) – reprezentarea grafica doar a

liniilor de contur
fill3 - reprezentarea grafica spatiala a poliedrelor

cylinder (y,n), sphere(n), ellipsoid(xc,yc,zc,rx,ry,rz) -

reprezentarea grafica a unor corpuri tridimensionale


Functii auxiliare pentru reprezentari grafice
Cateva functii auxiliare ce pot controla proprietatile modului de
reprezentare:
title - inserarea unui titlu pentru reprezentarea grafica

axes, axis - controlul aparitiei si stabilirea lungimii unitatilor de

reprezentare pe axele sistemului de coordonate


xlabel, ylabel, zlabel - inserarea etichetelor axelor sistemului de

coordonate
text, gtext - plasarea unui text pe grafic la o anumita pozitie, sau

selectata cu mouse-ul.
hold- pastrarea graficului curent si al proprietatilor sale

subplot - impartirea ferestrei de reprezentare grafica in mai multe

regiuni grafice.
grid - suprapunerea unei retele de linii pe grafic

meshgrid -definirea sub forma de retea de puncte a domeniului de

reprezentare 3D a suprafetelor.
colormap - stabilirea sau returnarea matricei de culoare

shading- stabilirea modului de umbrire pentru suprafetele 3D


Bibliografie

Calcul numeric-grafica-aplicatii M. Ghinea, V Fireteanu.


Mathlab. Ed. Teora 2001

 http://www.mathworks.com/help/pdf_doc/matlab/getstart.pdf

http://www.mathworks.com/academia/student_center/tutorials/laun
chpad.html

S-ar putea să vă placă și

  • Imunoglobulinele Si Riu
    Imunoglobulinele Si Riu
    Document8 pagini
    Imunoglobulinele Si Riu
    Ana-Maria Ștefan
    Încă nu există evaluări
  • Metodologie Cursul 1
    Metodologie Cursul 1
    Document29 pagini
    Metodologie Cursul 1
    Ana-Maria Ștefan
    Încă nu există evaluări
  • Code Tica 2019 Final
    Code Tica 2019 Final
    Document19 pagini
    Code Tica 2019 Final
    Ana-Maria Ștefan
    Încă nu există evaluări
  • Matlab Lab2
    Matlab Lab2
    Document25 pagini
    Matlab Lab2
    Ana-Maria Ștefan
    Încă nu există evaluări
  • Matlab Lab1
    Matlab Lab1
    Document34 pagini
    Matlab Lab1
    Ana-Maria Ștefan
    Încă nu există evaluări
  • Matlab Curs2
    Matlab Curs2
    Document46 pagini
    Matlab Curs2
    Ana-Maria Ștefan
    Încă nu există evaluări
  • Matlab Curs1
    Matlab Curs1
    Document29 pagini
    Matlab Curs1
    Ana-Maria Ștefan
    Încă nu există evaluări
  • Anatomie AP. Urinar
    Anatomie AP. Urinar
    Document37 pagini
    Anatomie AP. Urinar
    Ana-Maria Ștefan
    Încă nu există evaluări
  • Cercetare
    Cercetare
    Document37 pagini
    Cercetare
    Ana-Maria Ștefan
    Încă nu există evaluări
  • AP. Genital Masculin
    AP. Genital Masculin
    Document17 pagini
    AP. Genital Masculin
    Ana-Maria Ștefan
    Încă nu există evaluări
  • AP. Genital Feminin
    AP. Genital Feminin
    Document30 pagini
    AP. Genital Feminin
    Ana-Maria Ștefan
    Încă nu există evaluări