Sunteți pe pagina 1din 374

DANIEL N.

POP
INIIERE N MATLAB
CTEVA APLICAII PRACTICE
N DIVERSE DOMENII DE ACTIVITATE
Refereni tiinifici:
Prof. univ. dr. Eugen Ioan Drghici
Conf. univ. dr. Radu Trmbia
ISBN 978-973-595-672-1
2014 Autorul volumului. Toate drepturile rezervate.
Reproducerea integral sau parial a textului, prin orice
mijloace, fr acordul autorului, este interzis i se pedepsete
conform legii.
Universitatea Babe-Bolyai
Presa Universitar Clujean
Director: Codrua Scelean
Str. Hasdeu nr. 51
400371 Cluj-Napoca, Romnia
Tel./fax: (+40)-264-597.401
E-mail: editura@editura.ubbcluj.ro
http://www.editura.ubbcluj.ro/
DANIEL N. POP
INIIERE N MATLAB
CTEVA APLICAII PRACTICE
N DIVERSE
DOMENII DE ACTIVITATE
PRESA UNIVERSITAR CLUJEAN
2014
Profesorilor mei trecui n venicie.
CUPRINS
PREFA ............................................................................
.............................................. 9
CAPITOLUL 1. PREZENTARE GENERAL .................................................
.......................... 11
1.1. Limbajul MATLAB............................................................
............................................. 11
1.2. Handle Graphics.............................................................
............................................ 12
1.3. Interfaa de aplicaii program a MATLAB-ului (API) .............................
..................... 13
1.4. Toolbox-urile MATLAB .......................................................
........................................ 13
1.5. Pachetul SIMULINK ..........................................................
.......................................... 13
CAPITOLUL 2. FUNDAMENTELE PROGRAMRII N MATLAB.....................................
........ 15
2.1. Expresii fundamentale .....................................................
............................................ 15
2.2. Help on-line, formatul datelor, opiuni de salvare ..........................
............................ 17
2.3. Crearea fiierelor MATLAB (.m files) ........................................
................................... 21
CAPITOLUL 3. MEDIUL DE LUCRU MATLAB ............................................
......................... 27
3.1. Lansarea sesiunilor de lucru ..............................................
.......................................... 27
3.2. Fereastra de comand (fereastra principal) ...................................
........................... 28
3.3. Fereastra grafic (figure) ..................................................
........................................... 37
3.4. Importul i exportul de date ................................................
........................................ 38
3.5. Utilizarea memoriei .......................................................
............................................. 41
CAPITOLUL 4. PROGRAMAREA N LIMBAJUL MATLAB ......................................
.............. 43
4.1. Fiiere MATLAB ..............................................................
.............................................. 43
4.1.1. Script-uri ..............................................................
..................................................... 43
4.2. Tipuri de date i operatori .................................................
.......................................... 45
4.3. Instruciuni de salt i bucle .................................................
......................................... 48
4.4. Evaluarea datelor de tip caracter .........................................
....................................... 49
4.5. Reprezentarea i manipularea informaiilor despre dat i timp ....................
........... 50
4.6. Intrri utilizator ..........................................................
.................................................. 50
CAPITOLUL 5. EDITORUL/DEBUGGER-UL I PROFILER-UL MATLAB............................
.... 51
5.1. Editorul/Debugger-ul MATLAB ................................................
................................. 51
5.2. Profiler-ul MATLAB .........................................................
........................................... 57
CAPITOLUL 6. GRAFICE I INTERFEE GRAFICE N MATLAB ..................................
........... 63
6.1. Tehnici de reprezentare grafic..............................................
..................................... 63
6.2. Micarea i Animaia imaginilor .................................................
................................. 74
6.3. Reprezentri grafice tridimensionale (3 D) ..................................
.............................. 76
6.2. Handle Graphics i Interfee Grafice n MATLAB (GUI) ............................
................... 79
CAPITOLUL 7. ALGEBR .............................................................
..................................... 87
7.1. Matricile n MATLAB ..........................................................
........................................ 87
7.2. Rezolvarea ecuaiilor liniare ...............................................
......................................... 93
7.3. Inverse i determinani .......................................................
......................................... 94
5
7.4. Funcii de matrice. Valori proprii...........................................
...................................... 95
7.5. Reprezentarea polinoamelor.................................................
...................................... 98
7.6. Rezolvarea ecuaiilor neliniare .............................................
..................................... 106
CAPITOLUL 8. ANALIZ MATEMATIC ....................................................
..................... 109
8.1. Reprezentarea grafic a funciilor matematice..................................
....................... 109
8.2. Minimizarea funciilor i gsirea zerourilor.....................................
.......................... 111
8.3. Integrarea i derivarea numeric a funciilor ...................................
......................... 113
8.4. Funcii speciale ............................................................
.............................................. 117
CAPITOLUL 9. ELEMENTE DE TEORIA PROBABILITILOR I STATISTIC MATEMATIC 121
9.1. Legi de probabilitate de tip discret.......................................
..................................... 121
9.2. Legi de probabilitate continue ............................................
...................................... 123
9.3. Legi de probabilitate continue statistice .................................
.................................. 124
9.4. Funcia Matlab disttool .....................................................
.................................. 124
9.5. Caracteristici numerice ...................................................
........................................... 126
9.6. Statistic Matematic .........................................................
....................................... 128
9.6.6. Funcia randtool ..........................................................
........................................... 134
9.6.9. Funcia interactiv nlintool ................................................
.............................. 141
9.7. Teoria Seleciei ............................................................
.............................................. 142
CAPITOLUL 10. REZOLVAREA ECUAIILOR DIFERENIALE ORDINARE ..........................
... 147
10.1. Metode numerice pentru problema Cauchy ...................................
........................ 147
10.2. Rezolvarea numeric a problemelor cu valori iniiale .........................
................. 152
10.3. Sisteme dinamice..........................................................
........................................... 166
10.4. Aplicaii ale sistemelor de ecuaii difereniale cu argument ntrziat n medicin. 1
10.5. Sisteme de ecuaii difereniale cu aplicaii n dinamica fluidelor ...............
............ 188
10.6. Rezolvarea numeric a problemelor cu valori pe frontier .....................
.............. 192
CAPITOLUL 11. REZOLVAREA ECUAIILOR CU DERIVATE PARIALE ...........................
..... 211
11.1. Metode numerice pentru ecuaii cu derivate pariale ..........................
.................. 211
11.2. Aplicaii n dinamica fluidelor ..............................................
.................................... 213
CAPITOLUL 12. REELE NEURONALE ...................................................
.......................... 219
12.1. Introducere ..............................................................
................................................ 219
12.2. Procese de nvare n sisteme cu inteligen artificial ...........................
.......... 219
12.3. Elemente de neurodinamic ..................................................
................................ 222
12.4. Reele neuronale multistrat ................................................
.................................... 223
12.5. Modelul Perceptronului....................................................
...................................... 224
12.6. Funcia Criteriu ...........................................................
............................................. 226
12.7. Algoritmul de propagare napoi .............................................
................................. 227
12.8. Arhitecturi moderne de reele neuronale ....................................
........................... 228
12.9. Prelucrri de imagini cu reele neuronale ....................................
........................ 229
CAPITOLUL 13. PREZENTAREA SUCCINT A UNOR TOOLBOX-URI MATLAB .................. 23
9
13.1.Toolbox-ul Comunicaii (Communications Toolbox) .............................
................... 239
13.2.Toolbox-ul pentru Sisteme de Conducere Automat (Control System) ............
...... 239
13.3.Toolbox-ul pentru Baze de Date (Database Toolbox) .........................
..................... 240
6
13.4. Toolbox-ul de Procesare a Semnalelor (Signal Processing Toolbox) .........
.............. 240
13.5. Toolbox-ul DSP Blockset ..................................................
........................................ 240
13.6. Toolbox-ul Finane (Financial Toolbox) .....................................
.............................. 241
13.7. Toolbox-ul de Procesare a Imaginilor (Image Processing Toolbox) ..........
.............. 241
13.8. Toolbox-ul Optimizare (Optimization Toolbox) .............................
.......................... 241
13.9. Toolbox-ul pentru Sisteme de Putere (Power System Blockset)...............
.............. 242
13.10. Toolbox-ul Stateflow (Diagrame de stare) ................................
............................ 242
13.11. Toolbox-ul de Statistic (Statistics Toolbox)..............................
............................ 242
13.12. Toolbox-ul pentru Calcul Simbolic (Symbolic Math Toolbox) ...............
................ 243
13.13. Toolboxul de ecuaii cu derivate pariale (PDE toolobox)......................
............. 247
CAPITOLUL 14. PACHETUL DE MODELARE I SIMULARE SIMULINK ...........................
... 249
14.1. Rularea unui model SIMULINK demonstrativ...................................
..................... 249
14.2. Crearea modelelor SIMULINK ................................................
................................ 251
14.3. Rularea simulrilor n SIMULINK ...............................................
............................ 257
14.4. Modul de lucru al unui program SIMULINK....................................
....................... 258
BIBLIOGRAFIE EXTINS..............................................................
............................................ 259
7
PREFA
Lucrarea de fa se adreseaz, tuturor acelora (elevi, studeni, ingineri de formaiuni
diferite, medici, economiti etc.) care doresc s neleag rolul softului matematic
MATLAB n activitatea de cercetare i simulare.
Am utilizat n cuprinsul acestei cri versiunea MATLAB v 7.7 release 2008b.
Pentru a lrgii n mod natural aria de interes a lucrrii, vor fi tratate pe scurt uti
lizarea
acestuia n domeniile:
Noiuni introductive n mediul de programare MATLAB.
Algebr.
Analiz matematic.
Elemente de Teoria Probabilitilor i Statistic Matematic.
Rezolvarea Ecuaiilor difereniale i cu derivate pariale.
Reele Neuronale.
Procesarea imaginilor.
Pachetul de simulare SIMULINK.
Mare parte din lucrarea de fa face n mod curent obiectul unor cursuri predate
civa ani la rnd studenilor Facultii de tiine Economice i a Facultii de Inginerie
omeniile electric, energetic, electronic i al Facultii de Calculatoare din cadrul
Universitii Romno-Germane din Sibiu, precum i n cadrul Facultii de Mecanic secia
S.I.A din cadrul Universitii Lucian Blaga Sibiu.
Mulumesc pe aceast cale domnilor prof. dr. Damian Trif , conf dr. Radu T. Trmbia
de la Universitatea Babe-Bolyai Cluj Napoca i prof.dr. Eugen Drghici de la Universi
tatea
Lucian Blaga din Sibiu pentru sfaturile deosebit de utile, care m-au ajutat enor
m n redactarea acestei lucrri.
Orice observaii sau comentarii, n special critice, sunt bine primite la adresele d
e
e-mail: popdaniel31@yahoo.com, daniel.pop@roger_univ.ro.
9
CAPITOLUL 1.
PREZENTARE GENERAL
Definiie MATLAB = Limbaj de nalt performan pentru proiectarea asistat de calculator.
este n acelai timp un limbaj de programare i un sistem de dezvoltare care integrea
z
calculul, vizualizarea i programarea ntr-un mediu uor de utilizat, problemele i solui
ile
acestora fiind exprimate ntr-un limbaj matematic accesibil.
Domenii de utilizare:
Matematic i calcul numeric
Dezvoltarea algoritmilor
Modelare, simulare i testarea prototipurilor
Analiza i vizualizarea datelor
Grafic inginereasc i din tiinele aplicate
Dezvoltarea de aplicaii, inclusive interfee grafice
MATLAB [7], [15] este un sistem interactiv care are ca element de baz tabloul, mat
ricea, ceea ce permite rezolvarea problemelor de calcul numeric, n special cele c
are necesit
prelucrarea de vectori sau matrici.
Numele MATLAB provine de la Matrix laboratory, firma productoare este The
MathWorks, Inc., SUA.
MATLAB -ul a evoluat:
n mediul universitar unde este pachetul standard pentru cursurile introductive i
avansate de matematic, inginerie, medicin, tiine.
n industrie, unde este utilizat pentru cercetarea de nalt randament, dezvoltare i
producie
MATLAB permite dezvoltarea unei familii de aplicaii sub forma toolbox-urilor. Aces
te
toolbox-uri permit nvarea i aplicarea tehnologiilor specializate din diverse domenii
. Sunt
disponibile toolbox-uri pentru domenii cum ar fi: procesarea numeric a semnalelor
, sisteme
de conducere automat, reele Neuronale, logic fuzzy, wavelet, simulare (SIMULINK),
identificare etc.
Sistemul MATLAB const n cinci pri principale:
Limbajul MATLAB.
Mediul de lucru MATLAB.
Handle Graphics.
Biblioteca de funcii matematice a MATLAB -ului.
Interfaa de aplicaii program a MATLAB -ului (API).
1.1. Limbajul MATLAB
Reprezint un limbaj de nivel nalt de tip matrice/tablou cu instruciuni de control a
l salturilor, funcii, structuri de date, intrri/ieiri i cu proprieti de programare or
entat pe obiecte.
11
Facilitile de programare sunt organizate pe 6 directoare:
Ops
Operatori i caractere speciale.
Lang
Comenzi ale limbajului de programare.
Strfun
iruri de caractere.
Iofun
Fiiere input/output.
Timefun
Funcii pentru data calendaristic i timp.
Datatypes
Tipuri de date i structuri.
Mediul de lucru MATLAB reprezint un set de faciliti care permit manevrarea
variabilelor n spaiul de lucru, importul i exportul de date, dezvoltarea, manipular
ea, editarea i depanarea fiierelor MATLAB (.m) i a aplicaiilor MATLAB.
Aceste faciliti sunt organizate n directorul:
general
Comenzi generale.
1.2. Handle Graphics
Reprezint sistemul grafic al MATLAB ului. Cuprinde comenzi de nalt nivel
pentru vizualizarea datelor bi i tri-dimensionale, procesarea imaginilor, animaie,
prezentri
de grafice. Permite de asemenea utilizarea unor comenzi de nivel sczut pentru cre
area unor
interfee grafice GUI. Funciile grafice sunt organizate n 5 directoare:
graph2d
Grafice bidimensionale
graph3d
Grafice tridimensionale
specgraph
Grafice ultraspecializate.
Graphics
Unelte grafice.
Instrumente de interfa grafic pentru utilizator.
Uitools
Biblioteca de funcii matematice a MATLAB -ului: reprezint o colecie complex de algori
tmi de calcul pornind de la funcii elementare (sinus, cosinus etc.) pn la
funcii sofisticate (inversarea de matrice, valori proprii, funcii Bessel, FFT etc.
).
Funciile matematice sunt organizate n 8 directoare:
12
Elmat
Operaii cu matrici.
Elfun
Funcii matematice elementare.
Specfun
Funcii matematice speciale.
Matfun
Funcii de matrici.
Datafun
Transformata Fourier.
Polyfun
Polinoame i interpolri.
Funfun
Rezolvitori ODE.
Sparfun
Matrici rare.
1.3. Interfaa de aplicaii program a MATLAB-ului
(API)
Este o bibliotec care permite scrierea de programe n C++ sau Java care interacionea
z cu MATLAB -ul. Include faciliti pentru apelarea rutinelor din MATLAB
apelarea MATLAB -ului ca main de calcul, scrierea i citirea fiierelor de tip .MAT .
1.4. Toolbox-urile MATLAB
Toolbox-urile reprezint o familie de aplicaii care permit nvarea i aplicarea
tehnologiilor specializate din diverse domenii. Aceste toolbox-uri sunt colecii d
e funcii
MATLAB (functions) (M-files) care extind mediul MATLAB pentru rezolvarea unor
clase particulare de probleme. Cteva din cele mai utilizate aplicaii sunt prezenta
te n figura
urmtoare.
1.5. Pachetul SIMULINK
SIMULINK este un pachet software ataat MATLAB -ului i reprezint un sistem interactiv
pentru simularea dinamicii sistemelor neliniare (bineneles i a celor liniare).
Este conceput sub forma unei interfee grafice care permite crearea unui model pri
n trasarea schemei bloc a sistemului i apoi simularea dinamicii sistemului.
SIMULINK poate lucra cu sisteme liniare, neliniare, continue, discrete, multivari
abile etc.
SIMULINK beneficiaz de aa-numitele Blockset-uri care sunt de fapt biblioteci suplim
entare care conin aplicaii specializate din domenii cum ar fi: comunicaii, procesar
ea
semnalelor, bioinformatic, reele Neuronale etc.
REAL TIME WORKSHOP este un program foarte important care permite generarea unui
cod Java pentru schemele bloc create n SIMULINK i prin urmare permite rularea de
aplicaii n timp real de o mare diversitate.
13
CAPITOLUL 2.
FUNDAMENTELE PROGRAMRII N MATLAB
2.1. Expresii fundamentale
MATLAB -ul lucreaz cu expresii matematice ca i celelalte limbaje de programare, dar
spre deosebire de majoritatea acestor limbaje, aceste expresii implic la scar larg
lucrul cu
matrici.
Expresiile sunt alctuite cu ajutorul urmtoarelor tipuri:
Variabile
Numere
Operatori
Funcii
2.1.1. Variabile
MATLAB -ul nu necesit declararea dimensiunii variabilelor, deoarece la ntlnirea
unui nou nume de variabil genereaz automat variabila respectiv i aloc spaiul necesar
e
memorie.
Numele unei variabile este o liter, urmat de un numr orict de mare de litere, cifre
sau
simboluri. Din acest numr orict de mare sunt pstrate primele 31 de caractere.
MATLAB -ul este case sensitive - face distincie ntre literele mici i cele mari.
Exemplu:
a = 85
creeaz o matrice 1 x 1 cu numele a i stocheaz valoarea acesteia 85 ntr-o singur locai
corespunztoare singurului element al matricei.
2.1.2. Numere
MATLAB -ul utilizeaz notaia zecimal, cu punct zecimal opional i cu semn + sau -. Se
utilizeaz i notaia tiinific cu litera e pentru a specifica o putere a lui 10. Repreze
tarea
numerelor imaginare este realizat cu litera i sau j ca sufix.
Exemple:
3
-48
0.00001
5.4873679
1.43267e-15
5.03456e13
3i
-7.348923j
5e3i
Toate numerele sunt stocate intern utiliznd formatul long specificat de standardu
l IEEE n
virgul mobil (precizie de 16 zecimale semnificative n domeniul 10-308 la 10+308).
Operatori
Expresiile utilizeaz operatori aritmetici uzuali:
+
Adunare
-
Scdere
15
*
Multiplicare
/
mprire
\
mprire la stnga
^
Ridicarea la o putere
'
Transpusa complex conjugat
()
Operatorul de specificare a ordinii de evaluare
2.1.4 Funcii
MATLAB -ul furnizeaz un mare numr de funcii matematice elementare standard (abs,
sqrt, exp, sin ).
Exist i funcii matematice avansate (funcii Bessel, Gama etc.), multe dintre
acestea acceptnd argumente complexe.
Pentru vizualizarea funciilor elementare se poate tasta:
help elfun
Pentru a vedea lista funciilor avansate se poate tasta:
help specfun
help elmat
O parte din funcii (cum ar fi sqrt, sin)sunt de tip built-in, adic sunt o parte a
nucleului
MATLAB, au o mare eficien, dar detaliile constructive nu sunt accesibile utilizator
ului.
Alte funcii sunt implementate ca fiiere MATLAB (M-files) i pot fi chiar modificate.
Cteva funcii furnizeaz valorile unor constante universale:
pi
3.14159265.
I
Sqrt ( -1).
J
La fel ca I.
Realmin
Cel mai mic numr n virgul flotant, 2-1022
Realmax
Cel mai mare numr n virgul flotant, 21023
Inf
Infinit.
NaN
Not-a-number
16
Numele funciilor nu sunt rezervate i deci este posibil suprascrierea lor.
Exemplu:
eps = 3.e-9
Funcia original este reconstituit prin comanda:
clear eps
2.1.5 Expresii
Exemple de expresii i rezultatele corespunztoare ale evalurii acestor expresii:
rad=(1+sqrt(12))/2
rad =
2.2321
a = abs(12+5i)
a =
13
z = sqrt(besselk(4/3,rho-i))
z=
0.3730+ 0.3214i
nolin = exp(log(realmax))
nonlin =
1.7977e+308
toobig = pi*nonlin
toobig =
Inf
2.2. Help on-line, formatul datelor, opiuni de salvare
2.2.1. Help on-line
Pentru rularea MATLAB pe un PC trebuie pur i simplu executat un dublu click cu
mouse-ul pe icon-ul MATLAB. Dac sistemul de operare nu este de tip Windows (este d
e
tip UNIX) trebuie tastat matlab dup prompter-ul sistemului de operare.
Limbajul MATLAB este mult mai simplu de nvat, dac se utilizeaz comenzile help,
helpdesk, demo tastate direct de la prompterul MATLAB.Pentru aflarea tuturor info
rmaiilor utile despre o comand sau o funcie se tasteaz help urmat de numele comenzii
sau funciei respective. Pachetul MATLAB [15] dispune de asemenea de informaii compl
ete despre utilizare sub forma unei documentaii tip .pdf.
n cazuri particulare se poate apela la INTERNET, existnd o legtur la pagina Web a
firmei productoare:
http://www.mathworks.com
Alte comenzi utile pentru aflarea de informaii sunt: helpwin, lookfor, help
help.
Exemple sugestive de utilizare a comenzii help:
help sin
SIN
Sine.
SIN(X) is the sine of the elements of X.
17
Overloaded methods
help sym/sin.m
help exp
EXP
Exponential.
EXP(X) is the exponential of the elements of X, e
to the X.
For complex Z=X+i*Y, EXP(Z) =
EXP(X)*(COS(Y)+i*SIN(Y)).
See also LOG, LOG10, EXPM, EXPINT.
Overloaded methods
help sym/exp.m
help demtseries/exp.m
help plot
PLOT
Linear plot.
PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix, then the
vector is plotted versus the rows or columns of the matrix, whichever line
up. If X is a scalar and Y is a vector, length(Y) disconnected points are
plotted.
PLOT(Y) plots the columns of Y versus their index. If Y is complex,
PLOT(Y) is equivalent to PLOT(real(Y),imag(Y)). In all other uses of PLOT,
the imaginary part is ignored.
Various line types, plot symbols and colors may be obtained with
PLOT(X,Y,S) where S is a character string made from one element from any
or all the following 3 colunms:
b
blue
.
point
solid
g
green
o
circle
:
dotted
r
red
x
x-mark
-.
dashdot
c
cyan
+
plus
-dashed
m
magenta
*
star
(none) no line
y
yellow
s
square
k
black
d
diamond
w
white
v
triangle (down)
^
triangle (up)
<
triangle (left)
>
triangle (right)
p
pentagram
h
hexagram
For example, PLOT(X,Y,'c+:') plots a cyan dotted line with a plus
at each data point; PLOT(X,Y,'bd') plots blue diamond at each data
point but does not draw any line.
PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) combines the plots defined by
the (X,Y,S) triples, where the X's and Y's are vectors or matrices
and the S's are strings.
For example, PLOT(X,Y,'y-',X,Y,'go') plots the data twice, with a
solid yellow line interpolating green circles at the data points.
The PLOT command, if no
the colors specified by
ColorOrder is listed in
default is blue for one
color is specified, makes automatic use of
the axes ColorOrder property. The default
the table above for color systems where the
line, and for multiple lines, to cycle
18
through the first six colors in the table. For monochrome systems,
PLOT cycles over the axes LineStyleOrder property.
If you do not specify a marker type, PLOT uses no marker.
If you do not specify a line style, PLOT uses a solid line.
PLOT(AX,...) plots into the axes with handle AX.
PLOT returns a column vector of handles to lineseries objects, one
handle per plotted line.
The X,Y pairs, or X,Y,S triples, can be followed by
parameter/value pairs to specify additional properties
of the lines. For example, PLOT(X,Y,'LineWidth',2,'Color',
[.6 0 0])
will create a plot with a dark red line width of 2 points.
Example
x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'--rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10)
See also plottools, semilogx, semilogy, loglog, plotyy, plot3, grid, title, xlab
el, ylabel, axis, axes, hold, legend, subplot, scatter.
Overloaded methods:
timeseries/plot
phytree/plot
commscope.plot
channel.plot
cfit/plot
darray/plot
fints/plot
idmodel/plot
idfrd/plot
iddata/plot
idnlhw/plot
idnlarx/plot
cgrules/plot
xregtwostage/plot
xregtransient/plot
xregmodel/plot
xregarx/plot
localmulti/plot
localmod/plot
localavfit/plot
sweepset/plot
mdevtestplan/plot
cgdatasetnode/plot
mpc/plot
rfckt.plot
frd/plot
dspdata.plot
wdectree/plot
ntree/plot
dtree/plot
wvtree/plot
19
rwvtree/plot
edwttree/plot
Reference page in Help browser
doc plot
De exemplu, Plot (X,Y, 'c+:') deseneaz o linie punctat de culoare cyan cu un
marker + n fiecare punct al graficului. Dac comanda Plot nu are culori specificate
,
atunci preia implicit culorile axelor.
2.2.2. Formatul datelor
MATLAB -ul afieaz numerele cu 5 zecimale (setare implicit). Aceast setare se poate
modifica cu ajutorul comenzii format:
>>FORMAT Set output format.
All computations in MATLAB are done in double precision.
FORMAT may be used to switch between different output
display formats as follows:
FORMAT
Default. Same as SHORT.
FORMAT SHORT
Scaled fixed point format with 5 digits.
FORMAT LONG
Scaled fixed point format with 15 digits.
FORMAT SHORT E Floating point format with 5 digits.
FORMAT LONG E Floating point format with 15 digits.
FORMAT SHORT G Best of fixed or floating point format with
5 digits.
FORMAT LONG G Best of fixed or floating point format with
15 digits.
FORMAT HEX
Hexadecimal format.
FORMAT +
The symbols +, - and blank are printed
for positive, negative and zero elements.
Imaginary parts are ignored.
FORMAT BANK
Fixed format for dollars and cents.
FORMAT RAT
Approximation by ratio of small integers.
Spacing:
FORMAT COMPACT Suppress extra line-feeds.
FORMAT LOOSE
Puts the extra line-feeds back in.
Exemple:
c=1.333456789233
c =
1.3335
format long
c
c =
1.33345678923300
format short e
c
c =
1.3335e+000
20
format long e
c
c =
1.333456789233000e+000
format
c
c =
1.3335
2.2.3. Opiuni de salvare
Pentru salvarea variabilelor curente cu care se lucreaz n MATLAB la ncheierea unei
sesiuni de lucru se poate utiliza comanda save, aceast comand va salva toate varia
bilele
curente generate de ctre utilizator ntr-un fiier numit matlab.mat . Dac se dorete se
poate
da un nume fiierului de date n care se salveaz variabilele.
Exemplu:
save date c determ A%
realizeaz salvarea datelor c, determ i A ntr-un fiier date.mat .
Pentru restituirea variabilelor ntr-o sesiune de lucru ulterioar se folosete comand
a load.
Exemplu:
load date
Dac se dorete aflarea variabilelor curente se pot utiliza comenzile who,whos:
who
Your variables are:
A
whos
Name
c
determ
Size
Bytes
Class
A
2x2
32 double array
c
1x1
8 double array
determ
1x1
8 double array
is 6 Grand total elements using 48 bytes.
Pentru tergerea tuturor variabilelor curente din memoria de lucru se poate utiliz
a comanda
clear.
2.3. Crearea fiierelor MATLAB (.m files)
Deoarece este mult mai comod i util dect introducerea comenzilor linie dup linie la
prompterul MATLAB, se lucreaz cu fiiere text care conin aceste linii program cu
comenzile necesare.
Aceste fiiere conin cod n limbajul MATLAB i sunt denumite .m files (sau M-files).
Fiierele se creeaz utiliznd un editor de text i apoi se utilizeaz ca o comand MATLAB
obinuit (Placeholder1) [16].
Sunt dou tipuri de fiiere .m:
21

Fiiere Script, care nu accept argumente de intrare i nu returneaz argumente de
ieire. Aceste fiiere opereaz cu datele din spaiul de lucru.
Rutine (funcii), care accept argumente de intrare i returneaz argumente de ieire. Va
iabilele utilizate sunt variabile locale (interne) ale funciei.
Pentru a vedea coninutul unui fiier MATLAB, de exemplu balanta.m, se folosete
comanda:
type balanta
2.3.1. Fiiere Script
Atunci cnd se apeleaz la un fiier script, MATLAB -ul execut comenzile gsite n
fiierul respectiv. Fiierele script pot lucra cu date din spaiul de lucru (workspace
) sau pot
crea date noi cu care opereaz. Script-urile nu furnizeaz argumente de ieire, iar va
riabilele
create rmn n workspace, pentru a fi eventual folosite n calculele ulterioare.
Fiierele script pot furniza ieiri grafice folosind funcii cum ar fi plot, bar.
Exemplu de fiier script [7] : magicrank.m, cu urmtoarele comenzi MATLAB:
% Investigate the rank of magic squares
r = zeros (1,32);
for n = 3:32
r(n) = rank(magic(n));
end
r
bar(r)
La tastarea numelui fiierului script (fr extensia .m):
magicrank
MATLAB -ul execut comenzile, calculeaz rangul unor matrici (matricile magice), i
traseaz graficul cu rezultatele calculului. Dup ce se termin execuia fiierului, varia
bilele
n i r rmn n spaiul de lucru.
Graficul rezultat este prezentat n continuare:
2.3.2. Funcii (rutine)
Aceste fiiere accept argumente de intrare i furnizeaz argumente de ieire. Numele
fiierului MATLAB (M-file) i cel al funciei (subrutinei) respective trebuie s fie iden
tice. Funciile (subrutinele) lucreaz cu variabile proprii separate de spaiul de luc
ru uzual al
MATLAB -ului.
22
Exemplu: funcia rank.
Fiierul M-file rank.m este disponibil n directorul
toolbox/matlab/matfun
Se poate vizualiza fiierul cu comanda:
type rank
function r = rank(A,tol)
% RANK Matrix rank.
% RANK(A) provides an estimate
% linearly independent rows or
% RANK(A,tol) is the number of
% that are larger than tol.
% RANK(A) uses the default
% tol = max(size(A)) * norm(A)
s = svd(A);
if nargin==1
tol = max(size(A)) * max(s)
end
r = sum(s > tol);
of the number of
columns of a matrix A
singular values of A
* eps.
* eps;
Prima linie a unei funcii M-file ncepe cu cuvntul cheie function. Aceast linie d nume
le funciei, ordinea i numrul argumentelor.
Liniile urmtoare (care ncep cu caracterul %) sunt linii de comentariu, care de fap
t sunt
i liniile afiate atunci cnd se apeleaz la comanda
help rank
Restul liniilor sunt executabile. Variabila s, ca i r, A, tol sunt variabile loca
le ale
funciei i sunt separate de variabilele din workspace.
Funcia rank poate fi utilizat n diferite moduri:
rank(A)
r = rank(A)
r = rank(A,1.e-6)
2.3.3. Variabile globale
Dac se dorete ca mai multe astfel de subrutine s utilizeze o anume variabil comun, se
declar variabila respectiv ca global utiliznd comanda global n toate funciile respect
ve.
Exemplu fiierul exg.m:
function h = exg(t)
global GB
h = 1/2*GB*t.^2;
Se introduc apoi n mod interactiv liniile:
global GB
GB = 32;
y = exg((0:.1:5)');
2.3.4. Funcia eval
Funcia eval lucreaz cu variabil text pentru implementarea unei faciliti puternice de
tip
macro text.
Expresia eval(s)folosete interpretor-ul MATLAB pentru evaluarea expresiei sau exec
uia declaraiei din irul de caractere.
23
2.3.5. Vectorizarea
Pentru a obine o vitez de calcul mare, este foarte important aa-numita vectorizare a
algoritmilor n fiierele MATLAB. Acolo unde alte limbaje folosesc bucle de tip for
sau DO,
MATLAB-ul poate utiliza operaii matriceale sau vectoriale.
Un exemplu simplu este urmtorul:
x = 0;
for k = 1:1001
y(k) = log10(x);
x = x + .01;
end
Versiunea vectorizat a aceluiai program este :
x = 0:.01:10;
y = log10(x);
Atunci cnd nu se poate elimina complet folosirea unei bucle se utilizeaz procedura
de
prealocare.
2.3.6. Funcii de funcii
n MATLAB exist o clas de funcii care lucreaz cu funcii neliniare ca argument.
Funciile de funcii includ:
Gsirea zerourilor
Optimizare
Integrare numeric
Ecuaii difereniale ordinare
MATLAB -ul reprezint funcia neliniar ca o funcie M-file care poate fi ulterior utiliz
at
ca argument de alte funcii MATLAB.
Exemplu:
Urmtorul fiier creeaz o funcie neliniar:
function y = nelin(x)
y = 1./((x-.3).^2 + .01) + sqrt(1./((x-.9).^2 + .04) 6);
Aceast funcie poate fi evaluat pentru un set de puncte n intervalul 0 <=x <=1 cu pro
gramul:
x = 0:.002:1;
y = nelin(x);
i apoi se poate reprezenta grafic funcia cu comanda:
plot(x,y); grid on; title('y=nelin(x)')
24
y(x)=nelin(x)
100
90
80
70
60
50
40
30
20
10
0
0
0.2
0.4
0.6
Dac dorim s evalum aceast funcie n
>>p =0.637;
0.637
>> nelin(p);
ans =
5.1192
25
0.8
1
CAPITOLUL 3.
MEDIUL DE LUCRU MATLAB
MATLAB [16] este, dup cum s-a afirmat deja, att un limbaj ct i un mediu de
programare. Ca mediu de lucru, MATLAB include faciliti pentru manipularea variabile
lor n spaiul de lucru, pentru importul i exportul datelor, precum i instrumente pent
ru
dezvoltarea i manipularea fiierelor (M-files) i a aplicaiilor MATLAB.
Mediul de programare este utilizat n mod diferit n funcie de platforma pe care rule
az
MATLAB -ul (este vorba de sistemul de operare care poate fi de tip Windows , Linu
x,
Unix).
3.1. Lansarea sesiunilor de lucru
Pe platformele de tip Windows, programul de instalare creeaz un shortcut la program
ul
executabil, shortcut care poate fi plasat pe desktop (pe display-ul de lucru al
calculatorului).
Prin efectuarea unui dublu click pe icon-ul care reprezint acest shortcut se star
teaz
MATLAB -ul.
Pentru startarea MATLAB -ului pe un sistem UNIX trebuie tastat matlab la prompter
ul
sistemului de operare.
3.1.1. Fiiere de pornire (Startup Files)
La pornireMATLAB -ul execut automat fiierul master matlabrc.m i, dac
exist, fiierul startup.m.
Fiierul matlabrc.m este rezervat pentru administratorul de sistem (reea), n timp ce
fiierul
startup.m este destinat utilizatorilor. De aici se pot seta cile de acces, se pot
defini setrile
implicite pentru instrumentele Handle Graphics i se pot predefini variabile n spaiu
l de
lucru.
De exemplu, dac n startup.m se introduce linia:
addpath /home/me/mytools
se adaug un director de instrumente proprii pentru calea implicit de cutare.
Pe platformele Windows, fiierul startup.m se plaseaz n directorul local din directo
rul
toolbox.
3.1.2. Opiuni de pornire
Se pot specifica opiuni de pornire, aceste opiuni fiind adugate pe calea shortcut-u
lui
MATLAB.
n continuare sunt prezentate cteva posibile opiuni.
27
Opiunea de
Startup
Descriere
Automation
Lanseaz MATLAB-ul ca un server automat, minimizat, fr splash
screen.
Scrie n mod automat ieirile din MATLAB ntr-un log file specificat.
Logfile logfilename
Minimize
Nosplash
r M_file
Regserver
Unregserver
Lanseaz MATLAB-ul minimizat i fr splash screen-ul MATLAB.
Starteaz MATLAB-ul fr afiarea splash screen-ului MATLAB.
Ruleaz automat fiierul .m specificat imediat dup lansarea
MATLAB.ului.
Modific regitrii Windows cu intrri adecvate tip ActiveX pentru
MATLAB.
Modific regitrii Windows pentru tergerea intrrilor ActiveX.
Se utilizeaz pentru resetarea regitrilor.
De exemplu, pentru a porni MATLAB -ul i a rula imediat n mod automat un fiier cum ar
fi de exemplu rezultate.m, se poate utiliza urmtoarea cale pentru shortcut:
C:\bin\nt\matlab.exe /r rezultate
3.1.3. Terminarea unei sesiuni de lucru
Pentru a prsi mediul MATLAB, se tasteaz quit la prompterul MATLAB.
n cazul platformelor Windows, se poate termina sesiunea prin selectarea opiunii ex
it din
meniul File sau se poate utiliza butonul close vizibil n colul din dreapta sus al
ferestrei de
comand MATLAB.
Se pot include comenzi de tipul save n acest fiier, pentru a salva automat variabi
lele din
spaiul de lucru la ncheierea sesiunii. O alt opiune este de a cere afiarea unei caset
e de
dialog pentru confirmarea terminrii sesiunii.
Aceste dou tipuri de opiuni se pot gsi n directorul /toolbox/local:
finishsav.m: permite salvarea variabilelor curente
finishdlg.m: afieaz o caset de dialog pentru confirmarea opririi
3.2. Fereastra de comand (fereastra principal)
Fereastra de comand este fereastra principal prin intermediul creia se poate comuni
ca cu
MATLAB-ul.
Pe platformele Windows, MATLAB-ul furnizeaz o fereastr special, cu faciliti de
tip Windows.
Pe sistemele UNIX, fereastra de comand este fereastra terminal din care este lans
at
MATLAB-ul.
Interpreterul MATLAB afieaz un prompter (>>) indicnd faptul c este gata s accepte
comenzile utilizatorului. De exemplu, pentru introducerea unei matrici 3 x 3 se
poate tasta:
A = [1 2 3; 4 5 6; 7 8 10]
28
i la apsarea tastelor Enter sau Return, MATLAB-ul rspunde cu:
A =
1
2
3
4
5
6
7
8
10
Editarea liniilor de comand n fereastra principal
Tastele de tip sgeat i tasta Ctrl permit apelarea, editarea i eventual reutilizarea
comenzilor editate anterior. De exemplu:
rad = (1+ sqt(5))/2
Undefined function or variable 'sqt'.
Pentru eliminarea greelii de editare a numelui funciei radical (sqrt) nu se mai ed
iteaz din
nou toat linia, ci se folosete tasta , apare din nou linia de comand greit i apoi cu
sta
se deplaseaz cursorul pe linie i se repar greeala.
Lista complet a sgeilor i tastelor care permit controlul asupra operaiunilor cu linia
de
comand este prezentat n tabelul urmtor:
Arrow Key
ctrlctrlhome
end
esc
del
backspace
Control Key
Ctrl-p
Operation
Recall previous line.
Ctrl-n
Recall next line.
Ctrl-b
Move back one character.
Ctrl-f
Move forward one character.
Ctrl-r
Move right one word.
Ctrl-l
Move left one word.
Ctrl-a
Ctrl-e
Ctrl-u
Ctrl-d
Ctrl-h
Ctrl-k
Move to beginning of line.
Move to end of line.
Clear line.
Delete character at cursor.
Delete character before cursor.
Delete (kill) to end of line.
3.2.1. tergerea ferestrei de comand
Pentru tergerea coninutului (afiajul) ferestrei principale se poate folosi comanda
clc,
care ns nu are ca efect tergerea variabilelor curente din spaiul de lucru.
29
3.2.2. Controlul afirii paginilor ecran n fereastra de comand
Pentru a controla afiarea paginilor n fereastra de comand se utilizeaz comanda more.
Setarea implicit este more off. Atunci cnd setm more on, o pagin ecran este afiat.
Apoi se poate utiliza:
Return
Space Bar
q
To advance to the next line
To advance to the next page
To stop displaying the output
ntreruperea unui program care ruleaz
Se poate ntrerupe un program care ruleaz prin apsarea pe tastele Ctrl+c.
Pe sistemele Windows se va atepta terminarea execuiei funciilor de tip built-in sau
a
fiierelor de tip MEX-file.
Pe sistemele UNIX, execuia programului se va ncheia imediat.
Comanda format
Comanda format controleaz formatul numeric al valorilor afiate pe ecran i a fost de
ja
discutat ntr-un paragraf anterior. Comanda are efect asupra afirii numerelor, i nu as
upra
modului intern de reprezentare a acestora.
Pe sistemele Windows, se poate schimba setarea implicit a formatului prin selecta
rea meniului Preferences din meniul File i selectarea formatului dorit din Genera
l.
3.2.3. Suprimarea afirii rezultatelor unei linii comand
Deoarece la apsarea tastelor Return sau Enter MATLAB-ul afieaz automat rezultatele
pe ecran, dac ncheiem linia de comand cu punct i virgul, va fi realizat calculul, dar
nu
va mai fi afiat. Aceast facilitate este important atunci cnd avem de lucrat cu matri
ci mari
sau cu multe date.
Exemplu:
A = magic(100);
3.2.4. Linii de comand lungi
Dac o declaraie nu ncape ntr-o linie de comand, se pot utiliza trei puncte urmate de
Return sau Enter pentru a indica faptul c expresia continu pe linia urmtoare.
Exemplu:
s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 ...
- 1/8 + 1/9 - 1/10 + 1/11 - 1/12;
Spaiile albe din jurul semnelor =, +, - sunt opionale i pot mbunti citirea liniilor.
ximul numrului de caractere pe o singur linie este de 4096.
30
3.2.5. Descrierea ferestrei de comand
Fereastra de comand permite rularea comenzilor MATLAB, lansarea unor instrumente
cum ar fi Editor/Debugger i permite startarea toolbox-urilor.
3.2.6. Toolbar (bara de instrumente)
Toolbar-ul din fereastra de comand permite accesul la operaii simple:
3.2.7. Meniuri
Meniurile fereastrei de comand furnizeaz accesul la operaii care nu sunt accesibile
din
toolbar.
31
3.2.8. Preferine
Sunt utilizate pentru controlarea operaiilor i a modului de prezentare din fereast
ra de comand. Pentru aceasta se selecteaz Preferences din meniul File, iar dup apar
iia casetei de
dialog Preferences se pot seta preferinele pentru General, Command Window Font i
Copying Options.
General Preferences:

Numeric Format Specific formatul numeric implicit.


Editor Preference Permite folosirea editorului MATLAB sau specificarea altui edit
or.
Help Directory Specific directorul n care se afl fiierele de tip help.
Echo On Seteaz facilitatea de afiare a liniilor program n timp ce un program
MATLAB este rulat.
32

Show Toolbar Arat sau ascunde toolbar-ul.


Enable Graphical Debugging Permite depanarea (Debugger) n mod automat la fiecare
breakpoint.
Command Window Font-Specific caracteristicile fontului pentru textul afiat
n fereastra de comand.
Copying Options: -Specific opiunile utilizate la copierea unor obiecte din
MATLAB n clipboard pentru rescrierea n alte aplicaii.
3.2.9. Spaiul de lucru al MATLAB-ului (workspace)
Spaiul de lucru conine un set de variabie (numite tablouri sau matrice) care pot f
i manevrate
din linia de comand. Se pot folosi comenzile who i whos (deja prezentate) pentru a
vedea
care sunt variabilele curente din workspace.
Pentru tergerea variabilelor din workspace se utilizeaz comanda clear.
ncrcarea i salvarea din workspace
Comenzile save i load descrise ntr-un subcapitol anterior au rolul de a salva vari
abilele din
spaiul de lucru i respectiv de a le rencrca ntr-o sesiune ulterioar. Aceste comenzi s
pot
folosi i pentru a importa i exporta date.
Pe platformele Windows, operaiile save,load sunt disponibile i prin selectarea opiu
nilor Save Workspace As, respectiv Load Workspace din meniul File.
Citirea sau scrierea unor fiiere .mat din programe externe n C++ sau Java se poate
face cu Interfaa de Aplicaii Program (API).
Formatul n care comanda save stocheaz datele poate fi controlat prin adugarea unor
flaguri n lista de nume de fiiere sau variabile:
-mat
Utilizeaz formatul binar tip .MAT (implicit).
-ascii
Utilizeaz formatul ASCII pe 8 digii.
-ascii-double
Utilizeaz formatul ASCII pe 16 digii.
-ascii -double tabs
Delimiteaz elementele tablourilor cu tab-uri.
-v11
Salveaz ntr-un format pe care versiunea 11 MATLAB l poate
deschide.
-append
Adaug datele ntr-un fiier .MAT existent.
Observaie: Atunci cnd se salveaz coninutul spaiului de lucru n format ASCII trebuie
salvat cte o variabil pentru a permite reconstituirea ulterioar a acesteia.
33
3.2.10. ncrcarea unor fiiere cu date ASCII
Comanda load permite importul de fiiere de date ASCII. Exemplu:
load informatii.dat
creeaz o variabil cu numele diverse n workspace. Dac datele ASCII au m linii cu n va
lori
pe fiecare linie, rezultatul va fi o matrice numeric m x n.
Nume de fiiere ca iruri de caractere
Dac numele fiierelor sau variabilelor cu care se lucreaz sunt stocate n variabile de
tip ir
de caractere, se poate folosi dualitatea comand/funcie pentru a apela load i save c
a
funcii.
De exemplu:
save('fis1','VAR1','VAR2')
A = 'fis1';
load(A)
au acelai efect ca
save fis1 VAR1 VAR2
load A
Pentru ncrcarea sau salvarea mai multor fiiere cu acelai prefix i cu sufixe numere nt
egi
succesive se poate utiliza o bucl.
Exemplu:
file = 'prog';
for i = 1:10
j = i.^2;
save([file int2str(i)],'j');
end
Wildcards
Comenzile load i save permit specificarea unui caracter special de tip wildcard (
*).
Exemplu:
save data x*%salveaz toate variabilele din workspace care ncep cu x n fiierul
data.mat.
3.2.11. Browser-ul Workspace
Browser-ul Workspace permite vizualizarea coninutului spaiului de lucru curent (es
te de
fapt varianta grafic a comenzii whos). Pentru a deschide acest instrument, se sel
ecteaz
Show Workspace din meniul File i apoi se face click din mouse pe tasta Workspace
Browser din toolbar.
34
Ci de cutare
MATLAB -ul utilizeaz o cale de cutare (search path) pentru a gsi fiierele .m . Aceste
fiiere sunt organizate n directoare, din care unele sunt furnizate de MATLAB i altel
e
sunt disponibile separat ca toolbox-uri.
Dac de exemplu tastm numele fis1 la prompterul >>, interpretorul MATLAB va face
urmtoarea cutare:
Caut pe fis1 ca pe o variabil.
Verific dac fis1 este o funcie tip buit-in.
Caut n directorul curent fiierul numit fis1.m.
Caut n directoarele aflate n calea de cutare fiierul fis1.m.
Schimbarea cii de cutare
Calea de cutare poate fi afiat sau schimbat folosind funciile path, addpath,
rmpath:
Path determin rentoarcerea la calea curent.
path(s), unde s este un ir de caractere, seteaz calea la s.
addpath /home/lib i path (path,'/home/lib') adaug noi directoare la
calea de cutare.
rmpath /home/lib terge calea /home/lib.
Calea de cutare implicit este definit n fiierul pathdef.m n directorul local.
Fiiere pe calea de cutare
Pentru a afia calea de cutare se poate folosi path. Dac dorim s vedem ce fiiere
MATLAB sunt ntr-un director se utilizeaz comanda what. Exemplu:
what matlab/elfun
Pentru a vedea coninutul unui fiier se folosete comanda type (deja descris ntr-un par
agraf anterior). Exemplu:
type fis2
Pentru editarea unui fiier M-file se poate utiliza edit. Exemplu:
edit fis2
35
Path Browser
MATLAB-ul furnizeaz i un browser al cii de cutare (Path Browser) cu o interfa grafic
pentru vizualizarea i schimbarea cii de cutare [15]. Pentru startarea acestui brows
er se
utilizeaz pathtool, sau se selecteaz Set Path din meniul File, sau se face click p
e
butonul Path Browser din toolbar.
Meniurile din Path Browser pot fi folosite pentru:
- Adugarea unui director pe calea de cutare.
- tergerea (ndeprtarea) unui director din cale.
- Salvarea setrilor n fiierul pathdef.m.
- Restabilirea setrilor implicite.
3.2.12. Directorul curent
MATLAB -ul menine un director curent pentru lucrul cu fiiere de tip *.m i *.mat.
Pe platformele Windows, directorul curent iniial este specificat n shortcut-ul uti
lizat
pentru pornirea MATLAB -ului. Pentru schimbarea setrilor implicite se poate face c
lick
cu butonul din dreapta al mouse-ului i se selecteaz meniul Properties.
Deschiderea fiierelor n MATLAB
Se pot deschide fiiere n funcie de extensiile lor prin folosirea funciei open, care
este o
funcie extensibil de ctre utilizator.
Se pot include i alte tipuri de fiiere n afara fiierelor MATLAB standard:
36
Nume
Aciune
Figure file (*.fig) Deschide o figur ntr-o fereastr tip figur.
M-file (daniel.m) Deschide fiierul daniel de tip .m n Editor.
Model
(daniel.mdl)
Deschide modelul daniel.m n Simulink.
P-file (daniel.p)
Variable
Deschide fiierul corespunztor daniel.m, dac exist, n Editor.
Deschide tabloul name n Array Editor (tabloul trebuie s fie numeric);
open apeleaz openvar.
Deschide daniel.custom prin apelarea funciei helper opencustom, unde
opencustom este o funcie definit de utilizator.
Alte extensii
(daniel.custom)
3.3. Fereastra grafic (figure)
MATLAB -ul direcioneaz ieirile grafice spre o fereastr distinct de fereastra de coman
Aceast fereastr grafic este denumit figur (figure).
Funciile grafice creeaz n mod automat o nou fereastr grafic dac nu exist una curent
Dac exist o astfel de fereastr MATLAB -ul o va utiliza.
Dac exist mai multe ferestre de tip figur, atunci una dintre ele este asignat ca fii
nd
fereastra curent (n general este ultima fereastr figur utilizat).
Funcia figure genereaz ferestre grafice. De exemplu,
>> figure
genereaz o nou fereastr i o face fereastra curent.
O funcie grafic, cum ar fi funcia plot, genereaz un grafic n fereastra de tip figur.
e
exemplu,
>>figure (1)
>>t = 0:pi/100:2*pi;
y = cos(t);
plot(t,y)
traseaz graficul funciei cosinus de la 0 la 2 n fereastra curent de tip figur, dac a
sta
exist, iar dac nu ntr-una nou creat.
3.3.1. Prelucrarea graficelor cu Plot Editor
Dup generarea unui grafic (plot), se pot face schimbri i prelucrri ale graficului cu
interfaa grafic Plot Editor. Figura urmtoare ilustreaz principalele faciliti ale fer
strei grafice
i ale interfeei Plot Editor.
Pentru salvarea unei figuri se selecteaz Save din meniul File. Pentru salvarea ntr
-un format
diferit, cum ar fi EPS, necesar utilizrii n alte aplicaii se selecteaz Export din me
niul File.
37
3.4. Importul i exportul de date
Sunt multe posibiliti de a realiza importul i exportul de date ntre MATLAB i alte
aplicaii.
n majoritatea cazurilor se pot utiliza facilitile MATLAB de a citi sau scrie fiiere
(pentru
aplicaii complicate trebuie scrise programe n Java).
3.4.1. Importul de date
n tabelul urmtor sunt prezentate cteva metode de import date:
Metoda
Cnd trebuie utilizat metoda.
Introducerea
unei liste
explicite de
elemente
Crearea de
date ntr-un
fiier .m
ncrcarea
datelor dintrun fiier
ASCII
Atunci cnd cantitatea de date este mic. Se tasteaz pur i simplu datele
utiliznd parantezele drepte ([ ]).
Se utilizeaz un editor de text pentru generarea unui fiier .m.
Metoda este util atunci cnd datele nu sunt deja n form digital. Este
ntr-un fel similar cu prima metod.
Fiierele ASCII stocheaz datele pe linii cu un numr egal de elemente
spaiate prin blanc-uri, linii ncheiate cu Enter. Aceste fiiere se pot edita
cu un editor de texte obinuit. Datele sunt introduse n MATLAB cu
funcia load. Se poate utiliza dlmread dac este necesar specificarea
altor delimitatori.
38
Citirea
datelor cu
fopen, fread
i cu funciile
de intrare/ieire
Funcii specializate de
citire a
fiierelor
Metoda este folosit cnd se ncarc date de la alte aplicaii, date care au
propriul lor format.
Dlmread - Citete fiiere de date ASCII.
Wk1read - Citete fiiere de tip (WK1) (tip foaie de lucru)
Imread - Citete din fiiere grafice.
Auread - Citete fiiere de sunet tip (.au).
Waveread - Citete fiiere de sunet Microsoft WAVE (.wav).
Crearea de
fiiere tip
MEX pentru
citirea datelor
Dezvoltarea
unor programe n Java
sau C++
Este metoda potrivit dac sunt deja disponibile rutine C++ sau Java
pentru citirea datelor din alte aplicaii.
Se utilizeaz n cazuri complexe pentru translatarea unor date n format
.mat i apoi ncrcarea cu comanda load.
3.4.2. Exportul datelor
n tabelul urmtor sunt prezentate cteva metode de export date:
Metoda
Mod de utilizare
Folosirea
comenzii diary
Pentru tablouri de date de mic dimensiune se folosete comanda diary
pentru crearea unui fiier de tip jurnal i afiarea variabilelor. Ieirea diary
include comenzile MATLAB folosite ntr-o sesiune de lucru.
Se utilizeaz comanda save cu opiunea -ascii. Se poate folosi dlmwrite
dac este necesar specificarea altor delimitatori.
Salvarea
datelor n format ASCII
Scrierea
datelor n formate speciale
Funcii specializate de scriere
a fiierelor
Se folosesc fwrite i alte funcii I/O de nivel sczut. Este util la scrierea
datelor n formate cerute de alte aplicaii.
Dlmwrite
wk1write
Imwrite
Auwrite
Wavwrite
Scrie fiiere n format ASCII.
Scrie fiiere tip (WK1).
Scrie imagini pentru fiiere grafice.
Scrie fiiere de sunet tip (.au).
Scrie fiiere de sunet tip Microsoft WAVE (.wav).
39
Crearea unor
fiiere tip
MEX pentru
scrierea datelor
Scrierea
datelor n
fiiere tip
.MAT
Este metoda potrivit dac sunt deja disponibile rutine C++ sau Java
pentru scrierea datelor n formate cerute de alte aplicaii.
Se folosete comanda save i apoi se scrie un program n Java sau C++
pentru translatarea fiierului .mat n formatul dorit.
3.4.3. Fiiere de tip text cu delimitatori
Funciile dlmread i dlmwrite amintite mai sus permit citirea i scrierea unor valori
separate prin delimitatori nt-un fiier de date ASCII. Un delimitator este orice ca
racter care
separ valorile.
Exemplu:
Considerm un fiier roger.dat ale crui componente sunt separate prin punct i virgul:
7.2;8.5;6.2;6.6
5.4;9.2;8.1;7.2
Citirea i transcrierea componentelor ntr-un tablou (matrice) A se face folosind dl
mread:
A = dlmread('roger.dat', ';');
A =
1
2
3
4
5
6
n mod similar se folosete dlmwrite pentru scrierea unui text cu delimitatori ntr-un
fiier
extern:
dlmwrite('roger',A,';')
roger va conine:
1;2;3
4;5;6
Citirea fiierelor cu format uniform
Funcia textread citete date de tip caracter sau numerice dintr-un fiier i le transcr
ie n
variabile MATLAB folosind specificatorii de conversie care definesc lungimea cmpu
lui de
date i formatul acestora. Funcia textread este util pentru fiiere cu format uniform i
cunoscut (de exemplu cu delimitatori de tip virgul sau tab).
Exemplu: Fie fiierul roger.dat :
Salv
Type 25.74 65 Yes
Pentru citirea fiierului roger.dat ca fiier cu format liber se folosete formatul de
conversie %:
[names,types,x,y,answer]=textread('roger.dat','%s %s %f %d
%s',1),
unde %s citete un ir de caractere separat prin spaii albe, %f citete o valoare tip f
loating
point, i %d citete un ntreg cu semn.
MATLAB va rspunde:
40
names =
'Salv'
types =
'Type'
x =
25.74000000000000
y =
65
answer =
'Yes'
3.4.4. Schimbarea de date ntre platforme (sisteme de
operare)
n unele situaii este necesar transferul de date i programe ntre utilizatori care luc
reaz cu
sisteme de operare diferite. Aplicaiile MATLAB constau n fiiere .m cu funcii i script
-uri
i fiiere tip .mat cu date binare. Ambele tipuri de fiiere pot fi transportate direc
t ntre diferite computere:
Fiierele *.m conin text simplu i sunt independente de main.
Fiierele .mat sunt binare i dependente de main dar pot fi transportate ntre
computere deoarece conin semntura de main n antetul fiierului.
Observaie Pentru utilizarea i transportul aplicaiilor MATLAB pe diverse computere
(sisteme de operare) trebuie s ne asigurm c fiierele .mat se transmit n binary file m
ode
i fiierele .m n ASCII file mode.
Comanda diary
Comanda diary genereaz o copie a sesiunii de lucru MATLAB ntr-un fiier disc (fr
grafice). Se poate vizauliza i edita textul rezultat cu orice procesor de texte.
De exemplu, pentru crearea unui fiier cu numele mai2013.out care conine comenzile i
ieirile (rspunsurile) MATLAB corespunztoare, trebuie tastat:
diary mai2013.out
Pentru oprirea nregistrrii sesiunii se folosete:
diary off
3.5. Utilizarea memoriei
MATLAB -ul necesit o zon continu de memorie pentru stocarea datelor din
fiecare matrice. De asemenea, imaginile i filmele (animaia) cer o mare cantitate d
e memorie.
n plus, harta de pixeli (pixmap) folosit pentru imagini cere o cantitate de memori
e proporional cu suprafaa imaginii de pe ecran. O imagine color de 500x500 pixeli c
ere
1 Mb de memorie. Pentru limitarea memoriei necesare trebuie limitat dimensiunea i
maginilor de pe ecran.
41
3.5.1. Rezolvarea erorilor de memorie
Dac nu exist memorie suficient, n cazul unor matrici de dimensiuni mari este posibil
apariia unei erori de memorie de tip out of memory. Se poate ncerca o defragmentare
a
memoriei cu comanda pack.
Dac astfel de erori out of memory sunt dese se pot ncerca i alte metode.
n cazul sistemelor Windows se crete memoria virtual folosind System Properties
pentru Performance, instrument accesibil din Control Panel.
Pentru sisteme UNIX trebuie cerut administratorului de sistem s creasc spaiul swap
[14].
42
CAPITOLUL 4.
PROGRAMAREA N LIMBAJUL MATLAB
4.1. Fiiere MATLAB
Fiierele care conin cod MATLAB sunt numite M-files sau fiiere *.m . Dup cum
s-a precizat n capitolul de Fundamente ale programrii n MATLAB, aceste fiiere pot fi
funcii (functions) care accept argumente de intrare i furnizeaz ieiri, sau pot fi fii
re
script care execut o serie de instruciuni MATLAB. Pentru ca MATLAB-ul s recunoasc
un fiier ca fiier M-file trebuie ca numele acestuia s se termine cu extensia .m.
Fiierul * .m poate fi creat cu un editor de text i apoi poate fi folosit ca orice
funcie sau
comand MATLAB:
1. Crearea unui fiier cu un
editor de text.
2. Apelarea fiierului .m de
la linia de comand sau
din alt fiier .m.
Caracteristicile celor dou tipuri de fiiere sunt prezentate n tabelul urmtor:
Fiiere Script
Nu acccept argumente de intrare
i nu returneaz ieiri.
Opereaz cu datele din workspace.
Utile pentru automatizarea unei
serii de pai care trebuie executai de multe ori.
Fiiere Function
Accept argumente de intrare i returneaz ieiri.
Variabilele interne ale funciei sunt locale (implicit).
Utile pentru extinderea limbajului MATLAB pentru diverse aplicaii.
4.1.1. Script-uri
Fiierele script sunt cele mai simple fiiere MATLAB nu au argumente de intrare sau d
e
ieire i sunt utile pentru executarea secvenial a unor calcule care altfel ar trebui
executate
43
n mod repetat de la linia de comand. Script-urile opereaz cu datele din workspace s
au pot
crea date noi. Aceste date sunt disponibile dup terminarea execuiei fiierului.
Prile componente ale unui fiier de tip function
O funcie .m are urmtoarele pri componente:
Linia de definire a funciei
Linia de prim help H1
Textul Help-ului
Corpul funciei
Comentarii
Linia de definire
Aceast linie informeaz MATLAB -ul c fiierul conine o funcie i specific argumentele
Exemplu:
Linia H1
Linia H1 este o linie de comentariu care ncepe cu semnul "%" i furnizeaz prima lini
e text
atunci cnd utilizatorul tasteaz help function_name la prompterul MATLAB.
Textul Help-ului
Se poate crea un help online prin introducerea uneia sau mai multor linii de com
entariu dup
linia H1, fiecare linie ncepnd cu "%".
Corpul funciei
Corpul funciei conine toate instruciunile n cod MATLAB care permit efectuarea calcule
lor i asigneaz valori argumentelor de ieire. Declaraiile din corp pot conine apelri d
funcii, instruciuni de salt, intrri/ieiri interactive, calcule etc.
Comentarii
O linie de comentariu ncepe dup cum s-a precizat cu semnul "%" i poate fi plasat ori
unde
ntr-un fiier.
Pot fi adugate linii albe oriunde n fiier, acestea fiind ignorate.
44
4.2. Tipuri de date i operatori
4.2.1. Tipuri de date
MATLAB -ul are ase tipuri fundamentale de date (sau clase), fiecare putnd fi consid
erat
ca tablou multidimensional. Cele ase clase sunt: double, char, sparse, storage, c
ell i struct. Versiunile bi-dimensionale ale acestor tablouri sunt numite
matrici i de aici provine i numele de MATLAB.
n tabelul urmtor sunt prezentate detaliat tipurile de date:
Clasa
Array
Cell
Char
Double
Numeric
sparse
storage
struct
uint8
User
Object
Exemple
Descriere
Tip de date virtual.
{17'hello'ey Tablou tip celul. Elementele celulei conin alte tablouri.
e(2)}
'Hello'
Tablou de tip caracter (sau ir de caracterestring); fiecare caracter
are 16 bii lungime.
[1 2;3 4]
Tablou numeric n dubl precizie (cel mai obinuit tip de variabil
5+6I
MATLAB).
Tip de date virtual.
Speye(5)
Matrice de tip sparse n dubl precizie (doar 2-D). Tablourile de
tip sparse stocheaz matrici cu doar cteva elemente nenule ntr-o
fraciune din spaiul necesar unei matrici normale echivalente.
Tip de date virtual.
a.day = 12; Tablou tip structur, care conine nume de cmpuri, cmpuri care
a.color =
conin alte tablouri.
'Red';
a.mat =
magic(3);
Uint8(magi Tablou de numere ntregi fr semn pe 8 bii.
c(3))
InTip de date definit de utilizator.
line('ln(x)')
45
4.2.2. Operatori
Operatorii MATLAB pot fi clasificai n trei categorii:
Operatori aritmetici
Operatori relaionali care compar operanzii cantitativ
Operatori logici
Operatori aritmetici:
+
Adunare
:
Operatorul dou puncte
-
Scdere
.^
Putere
.*
nmulire
.'
Transpusa
./
mprire la dreapta
'
Transpusa complex conjugat
.\
mprire la stnga
*
nmulire de matrici
+
Plus unar
/
mprire matriceal la dreapta
-
Minus unar
\
mprire matriceal la stnga
^
Putere de matrice
Cu excepia unor operatori matriceali, operatorii aritmetici lucreaz cu elementele
corespondente ale unor tablouri de dimensiuni egale. Pentru vectori i tablouri dr
eptunghiulare ambii operanzi trebuie s aib aceeai dimensiune, cu excepia situaiei n c
re unul
dintre ei este scalar. n acest caz MATLAB -ul aplic scalarul fiecrui element al celu
ilalt
operand (proprietatea de expansiune scalar).
Operatori relaionali:
<
<=
>
>=
==
~=
Mai mic
Mai mic sau egal
Mai mare
Mai mare sau egal
Egal cu
Diferit de
Operatorii relaionali compar elementele corespondente ale unor tablouri de dimensi
une
egal.
Operatorii relaionali lucreaz totdeauna element cu element.
Exemplu:
A = [2 7 6;9 0 5;3 0.5 6];
B = [8 7 0;3 2 5;4 -1 7];
A == B
ans =
0 1 0
0 0 1
0 0 0
46
Operatori logici:
&
|
~
AND (I)
OR (SAU)
NOT (NU)
O expresie care utilizeaz operatorul & este adevrat dac ambii operanzi sunt adevrai.
termeni numerici, expresia este adevrat dac ambii operanzi sunt nenuli. Exemplu:
u = [1 0 2 3 0 5];
v = [5 6 1 0 0 7];
u & v
ans =
1
0
1
0
0
1
O expresie care utilizeaz operatorul | este adevrat dac unul dintre operanzi este lo
gic
adevrat sau dac ambii operanzi sunt adevrai. n termeni numerici, expresia este fals d
c
ambii operanzi sunt nuli.
Exemplu:
u | v
ans =
1
1
1
1
0
1
O expresie care utilizeaz operatorul NOT, ~, neag operandul. n termeni numerici, or
ice
operand nenul devine nul i orice operand nul devine unu. Exemplu:
~u
ans =
0
1
0
0
1
0
Operatorii logici lucreaz cu elementele corespondente ale unor tablouri de dimens
iuni egale.
Pentru vectori i tablouri dreptunghiulare ambii operanzi trebuie s aib aceeai dimens
iune,
cu excepia situaiei n care unul dintre ei este scalar. n acest caz, ca i la operatori
i aritmetici, MATLAB -ul aplic scalarul fiecrui element al celuilalt operand.
Funcii logice
n plus fa de operatorii logici MATLAB-ul furnizeaz i funcii logice:
Funcie
Descriere
Exemple
xor
Realizeaz sau exclusiv. Returneaz logic
a = 1;
adevrat dac unul din operanzi este adevrat i b = 1;
cellalt fals. n termeni numerici, returneaz 1
xor(a,b)
dac un operand este nenul i cellalt este zero. ans =
0
all
Returneaz 1 dac toate elementele unui vector u = [0 1 2 0];
sunt adevrate sau nenule. Opereaz i cu
all(u)
matrici (pe coloane).
ans =
0
any
Returneaz 1 dac oricare din elementele argumentului sunt adevrate sau nenule; n caz
contrar returneaz 0.
47
A = [0 1 2;3 5 0];
all(A)
ans =
0 1 0
v = [5 0 8];
any(v)
ans =
1
Alte funcii: isnan, isinf, find (a se folosi help pentru detalii).
Prioritatea operatorilor
Deoarece se pot construi expresii cu diverse tipuri de operatori, nivelurile de
prioritate determin ordinea n care sunt evaluate expresiile. n cadrul fiecrui nivel,
operatorii au prioritate egal i sunt evaluai de la stnga la dreapta.
Regulile de prioritate sunt prezentate n continuare, de la nivelul de prioritate
cel mai mare
spre cel mai mic.
Operator
()
~ (negare)
.' .^ ' ^ + (plus unar) - (minus unar)
.* ./ .\ * / \
+ (adunare) - (scdere)
: < <= > >= == ~=
& |
Nivel de prioritate
Prioritate maxim
Prioritate minim
4.3. Instruciuni de salt i bucle
n MATLAB exist mai multe tipuri de instruciuni de control al buclelor:
if, mpreun cu else i elseif execut un grup de instruciuni pe baza unei condiii
logice.
switch, case i otherwise execut diverse grupuri de instruciuni n
funcie de valoarea unei anumite condiii logice.
while execut un grup de instruciuni de un numr nedefinit de ori, pe baza unei
condiii logice.
for execut un grup de instruciuni de un numr fixat de ori.
break termin execuia pentru o bucl for sau while.
try...catch schimb controlul buclei dac o eroare este detectat n timpul execuiei.
return provoac ntoarcerea la funcia care a apelat prcedura.
Toate instruciunile de salt folosesc comanda end pentru a indica sfritul blocului r
espectiv.
Exemple de utilizare a unor instruciuni de salt:
4.3.1. Instruciunile if i elseif:
if n < 0 % Daca n este negativ afiseaza un mesaj de eroare.
disp('Intrarea trebuie sa fie pozitiva');
elseif rem(n,2)= =0
%Daca n este pozitiv si par, imparte-l la 2.
A = n/2;
else
A = (n+1)/2; %Daca n este pozitiv si impar incrementeaza i mparte
la 2
end
48
4.3.2. Instruciunea for:
for i = 1:m
for j = 1:n
A(i,j) = 1/(i + j - 1);
end
end
4.4. Evaluarea datelor de tip caracter
Evaluarea datelor de tip caracter asigur putere i flexibilitate limbajului MATLAB.
4.4.1. Funciile eval i feval
Funcia eval evalueaz un ir de caractere care conine o expresie, o declaraie sau un ap
el
de funcie. n cea mai simpl form, sintaxa este urmtoarea:
eval('string')
Exemplu:
Evaluarea unei expresii folosite la generarea unei matrice Hilbert de ordinul n:
t = '1/(i+j-1)';
for i = 1:n
for j = 1:n
a(i,j) = eval(t);
end
end
Alt exemplu de utilizare a funciei eval pentru o declaraie:
eval('t = clock')
Funcia feval difer de eval prin faptul c execut o funcie a crui nume este ntr-un ir
caractere. Se poate folosi feval i funcia input pentru a alege din mai multe sarci
ni definite
de fiiere .m .
Exemplu:
fun = ['sin'; 'cos'; 'log'];
k = input('Choose function number: ');
x = input('Enter value: ');
feval(fun(k,:),x)
Este indicat folosirea funciei feval n locul funciei eval, deoarece execuia este mai
rapid.
4.4.2. Construirea irurilor de caractere pentru evaluare
Se pot concatena irurile de caractere pentru a crea expresii de intrare necesare
funciei
eval. n continuare este prezentat un exemplu n care funcia eval creeaz 10 variabile
numite P1, P2, ...P10, i seteaz fiecare variabil la o anumit valoare:
for i=1:10
eval(['P',int2str(i),'= i.^2'])
end
49
4.5. Reprezentarea i manipularea informaiilor despre
dat i timp
MATLAB -ul furnizeaz funcii pentru manipularea informaiilor despre dat i timp,
funcii grupate n directorul timefun.
Categorie
Data i timpul curent
Conversii
Utilitare
Timing
Funcie
now
date
clock
datenum
datestr
datevec
calendar
weekday
eomday
datetick
cputime
tic, toc
etime
Descriere
Data i timpul curent ca numr serial.
Data curent ca ir de caractere.
Data i timpul curent ca vector.
Conversia la numr serial al datei.
Conversia la reprezentare de tip caracter.
Componentele datei.
Calendar.
Ziua din sptmn.
Ultima zi din lun.
Etichete formatate de tip dat.
Timpul CPU n secunde.
Start i oprire pentru timer.
Timp scurs.
4.6. Intrri utilizator
Pentru a obine o intrare de la utilizator n timpul execuiei unui fiier exist urmtoare
e
posibiliti:
Afiarea unui prompter prin intermediul unei funcii tip input i introducerea unor da
te de la
tastatur.
Oprirea execuiei cu o comand pause (reluarea execuiei la apsarea unei taste).
Construirea unei interfee grafice GUI complet [14] .
Funcia input asigur afiarea unui prompter i ateapt un rspuns de la utilizator.
Sintaxa este:
n = input('prompt_string')
Funcia determin afiarea irului de caractere prompt_string, ateapt o intrare de la tas
atur i returneaz valoarea introdus de la tastatur. Funcia este util pentru implement
a
aplicaiilor de tip meniu. Aceast funcie poate s returneze intrarea de la utilizator
sub form
de caracter.
Exemplu:
name = input('Enter address: ','s');
Comanda pause, fr argumente, oprete execuia pn la apsarea unei taste. Pentru a avea
o pauz de n secunde se folosete comanda:
pause(n)
50
CAPITOLUL 5.
EDITORUL/DEBUGGER-UL I PROFILER-UL
MATLAB
5.1. Editorul/Debugger-ul MATLAB
MATLAB -ul dispune de un editor propriu, editor care este asociat i cu un program
de
depanare (debugger). Editorul/debugger-ul ofer posibilitatea de a efectua operaiun
ile de
editare de baz precum i accesul la instrumente de depanare a fiierelor .m .
Pachetul Editor/Debugger [16] ofer i o interfa grafic uor de utilizat. Pentru lansare
editorului se tasteaz la prompterul MATLAB comanda edit. Se pot folosi i butoanele
/meniurile accesibile din fereastra de comand.
5.1.1. Setarea implicit a Editorului
Facilitile de editare i depanare sunt setate s fie active n mod implicit atunci cnd
MATLAB-ul este instalat.
Dac se dorete instalarea altui editor sau nu se dorete apelarea la depanarea n regim
grafic
se pot dezactiva aceste faciliti prin setarea corespunztoare.
De exemplu (n UNIX) se modific ~home/.Xdefaults file:
matlab*builtInEditor: Off
matlab*graphicalDebugger: Off
Trebuie rulat
xrdb -merge ~home/.Xdefaults
nainte de pornirea MATLAB-ului.
51
5.1.2. Debugger-ul MATLAB.
Exemple de depanare a fiierelor MATLAB
Debugger-ul permite identificarea erorilor de programare. Prin folosirea debugge
rului se poate vizualiza coninutul workspace-ului n orice moment n timpul execuiei u
nei
funcii i se poate executa programul (codul) MATLAB linie cu linie. Pentru folosirea
acestui instrument de depanare se poate utiliza interfaa grafic a debugger-ului sa
u se pot
folosi linii de comand.
Depanarea permite corectarea a dou tipuri de erori:
Erori de sintax, cum ar fi scrierea incorect a numelui unei funcii sau omiterea
unor paranteze. MATLAB -ul detecteaz majoritatea acestor erori i afieaz un
mesaj de eroare care descrie natura erorii i numrul liniei din programul .m n care
a aprut eroarea respectiv.
Erori de rulare (de calcul), care sunt mai mult de natur algoritmic. De exemplu es
te posibil s modificm o alt variabil dect trebuie sau s efectum un calcul incorect.
ste erori sunt observate atunci cnd fiierul rulat furnizeaz rezultate
necorespunztoare.
n timp ce erorile de sintax se corecteaz relativ uor pe baza mesajelor de eroare, er
orile de
rulare sunt mai greu de depanat. Se pot utiliza n acest caz mai multe tehnici de
depanare. Se
ndeprteaz delimitatorii de tip punct i virgul de la sfritul liniilor program. Astfel
rularea programului vor fi afiate i rezultatele intermediare corespunztoare fiecrei
linii.
Se adaug comanda keyboard n fiierele .m care sunt depanate. Aceast comand oprete
execuia programului respectiv, d controlul la tastatur i d posibilitatea examinrii i
schimbrii unor funcii sau variabile. Acest mod de lucru este indicat printr-un pro
mpter
special:
"K>>."
Pentru a continua execuia, se tasteaz return i se apas apoi tasta Return i
se folosesc n continuare comenzi ale Debugger-ul MATLAB .
Debugger-ul este util deoarece permite accesul la funciile din workspace, examina
rea i
eventual modificarea coninutului acestora.
Debugger-ul permite setarea sau tergerea unor puncte de oprire: breakpoints, care
sunt linii
speciale n programul MATLAB la ntlnirea crora execuia se oprete i sunt posibile
operaii de schimbare i de execuie a liniilor de comand una cte una.
Exemplu de depanare:
Pentru a ilustra procedurile de depanare disponibile (ndeosebi pentru cazul erori
lor de rulare) vom folosi un exemplu preluat din MATLAB User Guide [16]. Vom scri
e un fiier
denumit variance.m care este o funcie avnd ca intrare un vector i ca ieire un scalar
.
Fiierul apeleaz la o alt funcie, numit sqsum, care calculeaz o sum medie ptratic a
vectorului de intrare.
function y = variance(x)
mu = sum(x)/length(x);
tot = sqsum(x,mu);
y = tot/(length(x)-1);
n fiierul sqsum.m se strecoar intenionat o eroare:
function tot = sqsum(x,mu)
tot = 0;
for i = 1:length(mu)
tot = tot + ((x(i)-mu).^2);
end
52
Pentru verificarea corectitudinii calculelor, folosim funcia MATLAB std (calculeaz
deviaia standard) care permite efectuarea unui calcul echivalent.
Se introduce mai nti un vector de intrare de test:
v = [1 2 3 4 5];
apoi se utilizeaz funcia std:
var1 = std(v).^2
var1 =
2.5000
ncercm funcia variance care apeleaz funcia sqsum (scris eronat):
myvar1 = variance(v)
myvar1 =
1
Rspunsul este greit. Vom ncerca cu debugger-ul s gsim i s corectm greeala.
5.1.3. Depanarea cu ajutorul interfeei grafice a Debuggerului
A. Pentru startarea procedurii de depanare
Dac fiierul .m (adic variance.m) a fost creat cu editorul MATLAB i suntem n fereastra
Editor/Debugger, se continu din acest punct. Dac fiierul a fost creat cu un editor
extern,
se starteaz Editor/Debugger-ul i apoi se face click pe butonul Open M-file din too
lbar.
Toolbar-ul Editor/Debugger conine o serie butoane descrise n continuare:
Buton
Toolbar
Scop
Descriere
Comand
Echivalent
Seteaz/
terge
Breakpoint
Seteaz sau terge un breakpoint pe linia pe care
este poziionat cursorul.
Dbstop/
Dbclear
terge toate breakpoint-urile care sunt setate n
mod curent.
Dbclear all
terge
toate
Breakpoint-urile
Step In
(Pas n)
Execut linia curent a fiierului .m i dac linia
este o apelare la alt funcie sare (face un pas) n
funcia respectiv.
Single Step
(Un singur
pas)
Execut linia curent a fiierului .m .
Dbstep
Continu
Continu execuia fiierului pn la terminare sau
pn la alt breakpoint.
Dbcont
Ieirea din starea de depanare.
dbquit
Sfrit
depanare
53
Dbstep in
Prin apsarea butonului din dreapta al mouse-ului n fereastra editorului se poate
obine un meniu cu toate aceste opiuni.
B. Setarea Breakpoint-urilor
Punctele de oprire (breakpoint-uri) determin oprirea execuiei fiierului la linia
specificat i permit evaluarea i schimbarea variabilelor din workspace nainte de relu
area
execuiei. Breakpoint-ul este indicat printr-un semn rou de stop ( ) nainte de linia
respectiv.
Pentru exemplul considerat, la nceputul depanrii nu se tie unde ar putea fi eroarea
, ns un
loc logic de amplasare a unui breakpoint pentru a face verificri este n linia 4 a
funciei
variance.m:
y = tot/(length(x)-1);
Pentru setarea breakpointului se poziioneaz cursorul pe linia 4 i se face click pe
butonul din toolbar sau se alege Set Breakpoint din meniul Debug.
C. Examinarea variabilelor
Pentru verificarea variabilelor, se execut mai nti funcia din fereastra de comand:
variance(v)
Atunci cnd execuia programului ajunge la breakpoint, o sgeat galben orizontal (=>)
arat urmtoarea linie care va fi executat. Dac sgeata galben este vertical , atunci a
sta indic o pauz la sfritul unui script sau a unei funcii i permite examinarea variab
lelor
nainte de rentoarcerea la funcia principal.
54
Acum putem verifica valorile variabilelor mu i tot. Se selecteaz textul care conine
variabilele i se face click din butonul drept al mouse-ului dup care se alege din
meniu Evaluate
Selection.
n fereastra de comand va fi afiat att textul selectat ct i rezultatul:
K>> mu
mu =
3
K>> tot
tot =
4
Din analiza acestor valori se observ c eroarea se afl n sqsum.
D. Schimbarea contextului spaiului de lucru
Se poate folosi meniul Stack pentru schimbarea contextului spaiului de lucru, adi
c pentru
ieirea din funcia variance i vizualizarea coninutului workspace-ului, prin selectare
a din
meniu a opiunii Base Workspace:
Prin utilizarea comenzii whos sau a Browserului Workspace se vor vizualiza varia
bilele v i myvar1, ca de altfel i celelalte variabile create. Pentru ntoarcerea la
contextul
spaiului de lucru local al funciei variance se selecteaz Variance din meniu.
E. Executarea pas cu pas a programului i continuarea execuiei
Se terge breakpoint-ul din linia 4 din variance.m prin plasarea cursorului pe lin
ie i selectarea opiunii Clear Breakpoint din meniul Debug. Se continu execuia progra
mului
cu Continue din meniul Debug.
Se deschide sqsum.m i se seteaz un breakpoint la linia 4 pentru verificarea buclei
i a calculelor. Se ruleaz din nou variance.
Execuia se va opri acum la linia 4 din sqsum.
55
Se poate acum evalua indicele buclei i:
K>> i
i =
1
dup care prin selectarea opiunii Single Step din meniul Debug se execut linia urmtoa
re.
Se evalueaz variabila tot:
K>> tot
tot =
4
Se selecteaz din nou Single Step:
for i = 1:length(mu)
Se observ c bucla este iterat numai pn la lungimea lui mu, care este scalar, i nu pn
lungimea lui x, vectorul de intrare (aceasta este de fapt greeala).
O dat eroarea gsit se selecteaz Quit Debugging i se termin execuia programului. Se
terge breakpoint din sqsum i se pune un breakpoint la linia 4 din variance.m, dup c
are
rulm din nou:
variance(v)
La oprirea execuiei se seteaz valoarea lui tot la valoarea corect 10:
K>> tot = 10
tot =
10
Selectm Continue Execution i obinem rezultatul corect.
F. Terminarea sesiunii de depanare
Se selecteaz Exit Editor/Debugger din meniul File i se termin sesiunea de depanare.
Pentru corectarea definitiv a erorii se folosete editorul i se ruleaz din nou progra
mul
pentru o ultim verificare.
G. Depanarea n linia de comand
Folosirea facilitilor de depanare se poate realiza i direct din linia de comand, pri
n intermediul unui set de comenzi. Aceste comenzi sunt prezentate n forma lor gen
eral n tabelul
urmtor:
56
Descriere
Setarea unui breakpoint.
tergerea unui breakpoint.
Sintax
dbstop at line_num in file_name
dbclear at line_num in file_name
Reluarea execuiei.
dstop if warning
error
naninf
infnan
Dbcont
Listarea apelrii de funcii.
Dbstack
Listarea tuturor breakpointurilor.
dbstatus file_name
Stop la atenionare, eroare
sau generarea de NaN/Inf.
Executarea a una sau mai
multe linii.
Descriere
Listarea fiierelor M-file cu
liniile numerotate.
Schimbarea contextului
spaiului de lucru local
(down).
Schimbarea contextului
spaiului de lucru local (up).
Prsirea modului de
depanare.
Dbstep nlines
Sintax
dbtype file_name
dbdown
dbup
dbquit
Pentru informaii suplimentare privind utilizarea acestor funcii se poate apela la
comanda
help urmat de numele comenzii respective.
Observaie: Exemplul de depanare a unui fiier cu erori prezentat anterior poate fi
reluat,
utilizndu-se n locul interfeei grafice a debugger-ului comenzi corespunztoare n linia
de
comand.
5.2. Profiler-ul MATLAB
Pentru mbuntirea performanelor fiierelor MATLAB se utilizeaz un instrument
MATLAB numit Profiler. Acest instrument furnizeaz informaii utile privitoare la tim
pul
alocat calculelor efectuate de fiecare linie program.
Cu ajutorul Profiler-ului se msoar modul n care programul consum timp, i o msur
este evident mai bun dect ghicitul rutinelor sau funciilor care consum mult timp de
calcul.
Programarea eficient presupune folosirea Profiler-ului pentru determinarea strangu
lrilor
din programul creat i apoi modificarea programului pentru optimizarea timpului de
calcul.
57
Programele MATLAB au n general o structur multistrat generat de faptul c funciile
utilizate apeleaz deseori alte funcii i aa mai departe. De aceea este important s fie
identificate acele funcii consumatoare de timp i nlocuite dac este posibil.
Profiler-ul permite:
Evitarea calculelor inutile.
Schimbarea algoritmilor pentru evitarea folosirii unor funcii consumatoare de tim
p.
Evitarea recalculrilor prin stocarea unor rezultate ce pot fi utilizate ulterior.
5.2.1. Comanda profile
Pentru a crea un profil al programului (fiierului) MATLAB se folosete comanda profi
le
pentru a genera i vizualiza statisticile despre programul respectiv. n tabelul urmt
or sunt
prezentate formele posibile ale acestei comenzi.
Sintax
Opiuni
Profile on
Lanseaz profiler-ul i terge statisticile nregistrate anterior.
-detail
level
-history
Profile
report
Basename
Profile
plot
Profile
resume
Profile
clear
Profile off
Profile
status
stats =
profile('info')
Descriere
Specific nivelul funciei analizate.
Specific secvena exact a apelurilor fcute de funcia care va fi
nregistrat.
Suspend activitatea profilerului dup care genereaz un raport n
format HTML pe care l afieaz n browserul Web.
Salveaz raportul n fiierul basename din directorul curent.
Suspend activitatea profiler-ului dup care afieaz un grafic n
fereastra figur cu funciile care consum majoritatea timpului de
execuie.
Restarteaz profiler-ul fr a terge statisticile nregistrate anterior.
terge statisticile nregistrate.
Termin activitatea profiler-ului.
Afieaz o structur care conine starea curent a profiler-ului.
Suspend profiler-ul i afieaz o structur cu rezultatele activitii
de analiz.
Exemplu de utilizare a Profiler-ului:
Se starteaz profiler-ul:
profile on -detail builtin -history
58
Opiunea -detail builtin determin profilerul s ntocmeasc statistici i pentru funciile
built-in.
Se execut un fiier .m .
n exemplu urmtor este preluat programul care ruleaz modelul Lotka-Volterra pentru p
opulaii tip prdtor-prad (lotkademo pentru demo).
[t,y] = ode45('lotka',[0 2],[20;20]);
Se genereaz un raport i se salveaz rezultatele n fiierul lotkaprof.
profile report lotkaprof
Se restarteaz profiler-ul fr tergerea statisticilor existente.
profile resume
Se oprete profiler-ul.
profile off
5.2.2. Vizualizarea rezultatelor
A. Rapoarte
Pentru afiarea unui raport cu rezultatele statistice obinute se tasteaz profile rep
ort
Raportul care rezult apare n fereastra browserului Web i ncepe cu un rezumat al rapo
rtului din care se pot accesa un raport detaliat i un raport al apelrilor de funcii
(o cronic).
Raportul rezumat. n figura urmtoare este prezentat raporul rezumat pentru exemplul
Lotka-Volterra [20].
Raportul detaliat. Acest raport furnizeaz detalii despre funciile de tip printe i
copil ale unei funcii. Este prezentat raportul detaliat pentru funcia lotka din exem
plul considerat.
Raportul apelrilor de funcii. Acest raport afieaz secvena exact a funciilor
apelate. Pentru a vizualiza acest raport, trebuie startat profiler-ul cu opiunea
history.
profile on -history
Este prezentat un exemplu de astfel de raport.
59
60
B. Reprezentarea grafic a rezultatelor Profiler-ului
Pentru a obine o reprezentare grafic trebuie s tastm n linia de comand:
>> profile plot.
n fereastra grafic va apare un grafic de forma din figura urmtoare:
61
62
CAPITOLUL 6.
GRAFICE I INTERFEE GRAFICE N MATLAB
6.1. Tehnici de reprezentare grafic
n general, pentru a realiza o reprezentare grafic, trebuie parcurse etapele urmtoar
e [13] :
Etapa
1.Pregtirea datelor
2. Selectarea ferestrei
grafice i pozionarea
graficului n fereastr
3. Apelarea unei funcii
elementare de plotare
4. Selectarea caracteristicilor liniei i markerului.
5. Setarea limitelor axelor,
gridare (caroiere)
6. Completarea graficului
cu etichete pe axe, legend,
text
7. Export grafice
Instruciuni
x = 0:0.2:12;
y1 = bessel(1,x);
y2 = bessel(2,x);
y3 = bessel(3,x);
figure(1)
subplot(2,2,1)
h = plot(x,y1,x,y2,x,y3);
set(h,'LineWidth',2,{'LineStyle'},{'--';':';'-.'})
set(h,{'Color'},{'r';'g';'b'})
axis([0 12 -0.5 1])
grid on
xlabel('Time')
ylabel('Amplitude')
legend(h,'First','Second','Third')
title('Bessel Functions')
[y,ix] = min(y1);
text(x(ix),y,'First Min \rightarrow',...
'HorizontalAlignment','right')
print -depsc -tiff -r200 myplot
Funciile de baz folosite la reprezentarea grafic sunt prezentate n tabelul urmtor:
Funcie
Plot
Plot3
loglog
semilogx
semilogy
plotyy
Utilizare
Genereaz grafice 2-D cu scalare liniar a axelor
Genereaz grafice 3-D cu scalare liniar a axelor
Genereaz grafice cu scalare logaritmic a axelor
Genereaz grafice cu scalare liniar a axei y i cu scalare logaritmic a axei x
Genereaz grafice cu scalare liniar a axei x i cu scalare logaritmic a axei y
Genereaz grafice cu dubl reprezentare a axei y (pe stnga i pe dreapta)
63
6.1.1. Reprezentri grafice 2-D
Generarea graficelor
Funcia plot are diferite forme n funcie de argumentele de intrare.
Dac de exemplu y este un vector, plot(y) produce un grafic liniar al elementelor
lui y
versus indexul elementelor sale.
Dac se specific doi vectori ca argumente, plot(x,y) produce graficul lui y versus
x.
Exemplu:
t = 0:pi/100:2*pi;
y = sin(t);
plot(t,y);grid
Se pot realiza grafice multiple utiliznd un singur apel al funciei plot MATLAB -ul
realizeaz automat o reprezentare cu culori diferite pentru a permite distingerea
graficelor.
Exemplu:
y2 = sin(t-0.25);
y3 = sin(t-0.5);
plot(t,y,t,y2,t,y3)
64
Specificarea stilului de linie
Se pot crea diferite tipuri de linii pentru fiecare set de date prin folosirea u
nor identificatori
de tip string n funcia plot.
Exemplu:
t = 0:pi/100:2*pi;
y = sin(t);
y2 = sin(t-0.25);
y3 = sin(t-0.5);
plot(t,y,'-',t,y2,'--',t,y3,':')
Funciile de plotare accept deci argumente de tip caracter care specific stilul lini
ei, simbolurile utilizate pentru marker, culoarea etc. Forma general este:
plot(x,y,'linestyle_marker_color'),
unde linestyle_marker_color este un ir de caractere construit din:
Un stil de linie (de exemplu linie punctat, plin etc.)
Un tip de marker (de exemplu x, *, o, etc.)
Un specificator de culoare (c, m, y, k, r, g, b, w)
Se poate folosi un specificator sau mai muli, n orice ordine.
De exemplu,
'go--' % definete o linie ntrerupt, cu markere circulare, ambele colorate n verde.
Specificarea culorii i dimensiunii liniilor
Caracteristicile liniilor se pot controla prin specificarea unor valori pentru p
roprietile
linilor:
LineWidth specific limea unei linii.
MarkerEdgeColor seteaz culoarea markerului sau culoarea marginilor markerului n ca
zul anumitor forme (cerc, ptrat etc.)
MarkerFaceColor seteaz culoarea interiorului markerelor.
MarkerSize specific dimensiunea markerului.
Exemplu:
x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'--rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10)
65
Suprapunerea unor grafice peste un grafic existent
Se pot aduga grafice peste unul existent cu comanda hold. Dac se seteaz hold on,
MATLAB -ul nu nltur graficul existent, ci suprapune noul grafic n aceeai fereastr
grafic.
Exemplu:
semilogx(1:100,'+')
hold on
plot(1:3:300,1:100,'--')
hold off
Reprezentarea grafic simultan a markerelor i liniilor
Pentru reprezentarea grafic a markerelor (care indic punctele corespunztoare datelo
r) i a
liniilor (care unesc aceste date) se specific att tipul markerului ct i stilul linie
i.
Exemplu:
x = 0:pi/15:4*pi;
y = exp(2*cos(x));
plot(x,y,'-r',x,y,'ok')
Reprezentarea grafic a datelor din matrici
Atunci cnd funcia plot este utilizat cu un singur argument de tip matrice:
plot(y)
va fi realizat un grafic pentru fiecare coloan a matricii, cu axa x reprezentnd in
dexul de
linie 1:m, cu m numrul liniilor din Y.
66
Exemplu:
Cu instruciunea Z = peaks;
este creat o matrice 49 x 49 obinut printr-o evaluare de funcie.
Dac plotm matricea cu plot(Z) vom avea un grafic cu 49 de linii.
Reprezentarea grafic cu axa Y dubl
Comanda plotyy permite crearea unor grafice pentru dou seturi de date i cu repreze
ntare
dubl a axei Y, pe partea stng i pe partea dreapt.
Exemplu
t = 0:pi/20:2*pi;
y = exp(sin(t));
plotyy(t,y,t,y,'plot','stem')
Setarea parametrilor axelor
MATLAB -ul seteaz automat limitele axelor i gradarea acestora. Se pot ns folosi i
setrile utilizatorului, cu comenzile:
axis seteaz axele pentru fereastra grafic curent.
axes creeaz axe noi cu caracteristici specificate.
get i set permit obinerea i setarea unor proprieti ale axelor.
gca returneaz identificatorul axelor curente.
Se pot parcurge n detaliu aceste comenzi prin apelarea la help.
Ferestre de tip figur
MATLAB -ul direcioneaz ieirile grafice spre o fereastr distinct de fereastra de coman
Aceast fereastr grafic este denumit figur (figure). (a se vedea paragraful 3.3).
67
Funcia figure genereaz ferestre grafice. De exemplu,
>> figure ( )% genereaz o nou fereastr i o face fereastra
curent.
Afiarea unor n aceeai fereastr grafic a mai multor grafice
Se poate realiza o afiare a mai multor grafice n aceeai fereastr prin intermediul fu
nciei
subplot.
Funcia subplot(m,n,i) desparte fereastra de tip figur ntr-o matrice m x n de mici
subgrafice i selecteaz subgraficul i ca grafic curent.
Exemplu:
t = 0:pi/20:2*pi;
[x,y] = meshgrid(t);
subplot(2,2,1)
plot(sin(t),cos(t))
axis equal
subplot(2,2,2)
z = sin(x)+cos(y);
plot(t,z)
axis([0 2*pi -2 2])
subplot(2,2,3)
z = sin(x).*cos(y);
plot(t,z)
axis([0 2*pi -1 1])
subplot(2,2,4)
z = (sin(x).^2)-(cos(y).^2);
plot(t,z)
axis([0 2*pi -1 1])
68
Comenzi de marcare, etichetare i gradare a graficelor
MATLAB -ul furnizeaz comenzi de etichetare a fiecrei axe i de plasare a unui text n
orice loc din grafic.
Comenzile sunt prezentate n tabelul urmtor:
Comand
title
xlabel
ylabel
zlabel
legend
Text
Gtext
Descriere
Adaug un titlu
Adaug o etichet pe axa x
Adaug o etichet pe axa y
Adaug o etichet pe axa z
Adaug o legend
Afieaz un text la o locaie specificat
Plaseaz textul pe grafic utiliznd mouse-ul
Etichetarea axelor
Se pot aduga etichete pe axe cu comenzile : xlabel,
ylabel,
zlabel.
Exemplu:
xlabel('t = 0 to 2\pi','FontSize',16)
ylabel('sin(t)','FontSize',16)
title('Value of the Sine from Zero to Two
Pi','FontSize',16)
MATLAB -ul interpreteaz caracterele care urmeaz dup backslash "\" ca i comenzi
LaTeX. Aceste comenzi permit reprezentarea unor simboluri cum ar fi literele gre
ceti sau
sgeile.
Adugarea textelor
Prin utilizarea funciei text se poate plasa un text (ir de caractere) oriunde pe g
rafic.
Exemplu:
text(3*pi/4,sin(3*pi/4),...
'\leftarrowsin(t) = .707',...
'FontSize',16)
text(pi,sin(pi),'\leftarrowsin(t) = 0',...
'FontSize',16)
text(5*pi/4,sin(5*pi/4),'sin(t)=-.707\rightarrow',...
'HorizontalAlignment','right',...
'FontSize',16)
69
Plasarea textului n mod interactiv
Dac utilizm funcia gtext se poate plasa un text n mod interactiv, cu mouse-ul, oriun
de
pe grafic. Aceast funcie accept ca argument un ir de caractere i ateapt pn cnd ut
l selecteaz un loc pe grafic cu ajutorul mouse-ului.
Se poate utiliza i Plot Editor pentru plasarea textului.
6.1.2. Grafice 2 D specializate
MATLAB -ul permite lucrul cu o mare varietate de tipuri de grafice, astfel nct info
rmaiile s poat fi prezentate eficient. Tipul de grafic selectat depinde n mod esenial
de
natura datelor prelucrate.
Graficele de tip bare sau arie (bar, area) sunt utile pentru vizualizarea unor r
ezultate, compararea lor i afiarea unei contribuii individuale din total.
Graficele de tip statistic (pie charts) indic contribuiile individuale dintr-un to
tal.
Histogramele (histogram) sunt utile pentru a indica distribuia valorilor datelor.
Graficele de tip stem i stairstep sunt utile pentru date discrete.
Graficele compass, feather, quiver sunt utile pentru plotarea vectorilor de tip
direcie i vitez.
Graficele de tip contur (contour) sunt utile la reprezentarea unor regiuni de va
lori
egale ale datelor.
Plotrile interactive (interactive) permit selectarea unor puncte de plotare n mod
interactiv.
Graficele de tip animaie (animations) adaug date la grafice consecutive i creeaz
o animaie.
70
Grafice de tip Bar i Area
Funcie
Descriere
Bar
Barh
bar3
bar3h
Afieaz coloanele unor matrici mxn ca m grupe de n bare verticale
Afieaz coloanele unor matrici mxn ca m grupe de n bare orizontale
Afieaz coloanele unor matrici mxn ca m grupe de n bare verticale 3-D
Afieaz coloanele unor matrici mxn ca m grupe de n bare orizontale tridimensionale
3-D
Afieaz datele din vectori ca suprafee
Area
Grafice Bar grupate
Ca setare implicit, un grafic cu bare reprezint fiecare element dintr-o matrice cu
o singur
bar. n cazul unui grafic 2-D, barele create cu funcia bar sunt distribuite de-a lun
gul axei x,
cu fiecare element dintr-o coloan desenat la alt locaie. Toate elementele dintr-o l
inie sunt
reprezentate grupat la aceeai locaie pe axa x.
Exemplu:
Y = [5 2
8 7
9 8
5 5
4 3
bar(Y)
1
3
6
5
2];
Grupele de coloane
reprezint linii din
Y.
Grafice Bar 3-D separate
Funcia bar3, n cea mai simpl form, traseaz fiecare element ca un bloc separat
de tip 3-D, cu elementele fiecrei coloane distribuite de-a lungul axei y. Barele
care reprezint elementele din prima coloan a unei matrice sunt centrate la 1 pe ax
a x .a.m.d.
Barele care reprezint elementele din ultima coloan sunt centrate la valoarea size(
Y,2) de pe
axa x.
71
Exemplu: bar3(Y).
Ultimul grup de
bare reprezint
ultima linie din Y
Grafice Bar 3-D grupate
Pentru a realiza un grafic de bare grupate 3 D se specific argumentul 'group':
bar3(Y,'group')
Ultimul grup de bare
reprezint ultima linie
Grafice statistice - pie charts
Graficele pie afieaz procentul cu care fiecare element al unui vector sau matrice
contribuie la suma tuturor elementelor. Funciile pie i pie3 creeaz grafice 2-D i 3-D
.
n continuare prezentm un exemplu de vizualizare a ponderii a trei produse din
totalul vnzrilor. Se consider o matrice X, pentru care fiecare coloan reprezint vnzr
anuale pentru cte un produs, pe o perioad de nregistrri de 5 ani:
X = [19.3
34.2
61.4
50.5
29.4
22.1
70.3
82.9
54.9
36.3
51.6;
82.4;
90.8;
59.1;
47.0];
Se pot calcula vnzrile pentru fiecare produs n cei 5 ani cu ajutorul funciei:
>>x = sum(X);
Dac utilizm argumentul de intrare explode putem reprezenta ntr-un mod explodat care
dintre produse a avut o contribuie mai mare la vnzri (de exemplu).
Programul are urmtoarea form:
72
explode = zeros(size(x));
[c,offset] = max(x);
explode(offset) = 1;
h = pie(x,explode); colormap summer
Crearea de grafice tip contur
Funciile contour i contour3 afieaz contururi 2-D i 3-D. Funciile cer un singur argume
t, i anume o matrice, ale crei date sunt interpretate ca nlimi fa de un plan.
Pentru a seta numrul de niveluri de contur (implicit se realizeaz automat pe baza
valorilor
minime i maxime) se folosete un argument suplimentar opional. De exemplu,
[X,Y,Z] = peaks;
contour(X,Y,Z,20)% afieaz 20 de contururi ale funciei peaks ntr-o vedere bidimension
al.
Dac dorim o reprezentare 3 D putem folosi comenzile:
[X,Y,Z] = peaks;
contour3(X,Y,Z,20)
h = findobj(`Type','patch');
set(h,'LineWidth',2)
title('Twenty Contours of the peaks Function')
73
6.2. Micarea i Animaia imaginilor
Se pot crea secvene animate n MATLAB [7] pe dou ci:
Salvarea unui numr de imagini i rularea lor ca pe un film.
tergerea continu i redesenarea unor obiecte pe ecran, fcnd schimbri n mod
incremental la fiecare redesenare.
Pentru a realize micarea i animaia imaginilor (cadrelor) reprezentate ntr-o matrice
M,
trebuie ca ntr-o prim etap s se creeze o nou matrice cu coloanele deplasate, utiliznd
funcia getframe care se apeleaz cu una din urmtoarele sintaxe:
M=getframe %returneaz un vector coloan cu un cadru micat, care reprezint o fotografi
ere instantanee (pixel cu pixel)
M=getframe(h)%returneaz un identificator care permite modificarea
proprietilor obiectului figur sau a obiectului axe;
M=getframe(h,poz)%returneaz un cadru micat al obiectului h din zona
ncadrat de dreptunghiul cu dimensiunile (L,H) situate la distana
(l,h) de colul din stnga jos al ferestrei grafice. Parametrul poz
trebuie s fie unn vector linie cu patru elemente: poz=[l h L H]
Pentru a evita utilizarea unei memorii considerabile, este preferabil prealocarea
unei matrici
de micare capabil s memoreze cele n cadre succesive, acest lucru se realizeaz cu fun
cia:
M=moviein(n);
Dup aceste prelucrri asupra matricei ce reprezint imaginea de animat, se utilizeaz f
uncia
movie pentru a mica cadrele ntr-o anumit ordine, cu o anumit frecven i un interval
de timp precizat.
Exemplu [7 , pag. 257]
S se scrie un program care s realizeze vibraia funciei predefinite vibes (membran n f
rm de L)
Codul Matlab :
load vibesdat
n=max(size(L1));nh=fix(n/2);
74
x=(-nh:nh)/nh;
clear c;clf; view(3);
for k=1:12
eval(['c(k)=L' num2str(k) '(24,13)/3'])
end
colormap(prism(6));
delt=0.1;ncadre=10;
M=moviein(ncadre);
for k=1:ncadre
disp(k);
t=k*delt;s=c.*sin(sqrt(lambda)*t);
L=s(1)*L1+s(2)*L2+s(3)*L3+s(4)*L4+s(5)*L5+s(6)*L6+s(7)*L7+...
s(8)*L8+s(9)*L9+s(10)*L10+s(11)*L11+s(12)*L12;
s=s.*lambda;
V=s(1)*L1+s(2)*L2+s(3)*L3+s(4)*L4+s(5)*L5+s(6)*L6+s(7)*L7+...
s(8)*L8+s(9)*L9+s(10)*L10+s(11)*L11+s(12)*L12;
V(1:nh,1:nh)=NaN*ones(nh,nh);
cla;surfc(x,x,L,V);
axis ([-1 1 -1 1 -1 1]);
grid on
M(:,k)=getframe;
end
movie(M,20,100);
Concluzie
Pentru realizarea unui film se parcurg trei etape:
1. Se folosete moviein pentru iniializarea memoriei pentru o matrice suficient de
mare.
2. Se utilizeaz getframe pentru a genera fiecare cadru de film, care este returna
t ca
un vector coloan cu care se poate construi o matrice de tip film.
3. Se folosete movie pentru rularea filmului de un numr specificat de ori cu o vitez
specificat.
tergere i redesenare
Pot fi create diferite efecte prin selectarea unor moduri de tergere.
Pentru crearea unei animaii sunt utile trei moduri de tergere:
none - MATLAB nu terge obiectele.
background - MATLAB terge obiectul i l redeseneaz n background. Acest
mod terge obiectul i tot ce este sub el (linii de grid etc.).
xor Acest mod terge doar obiectul i este cel mai folosit la animaie.
Pentru vizualizarea unor efecte de animaie i construirea unor exemple proprii este
indicat
utilizarea facilitii demo a MATLAB-ului.
75
6.3. Reprezentri grafice tridimensionale (3 D)
Paii tipici care trebuie parcuri pentru trasarea unor grafice tridimensionale sunt
prezentai
n continuare.
Etapa
Instruciuni
1.Pregtirea datelor
Z = peaks(20);
2. Selectarea ferestrei
grafice i poziionarea
graficului n fereastr
3. Apelarea unei funcii de
plotare 3-D
4a. Setarea unei hri de
culori i a unui algoritm
de umbrire
figure(1)
subplot(2,1,2)
h = surf(Z);
colormap hot
shading interp
set(h,'EdgeColor','k')
4b. Adugarea unei
iluminri
light('Position',[-2,2,20])
lighting phong
material([0.4,0.6,0.5,30])
set(h,'FaceColor',[0.7 0.7 0],...
'BackFaceLighting','lit')
5. Setarea unui punct de
vizualizare
view([30,25])
set(gca,'CameraViewAngleMode','Manual')
6. Setarea limitelor axelor
i a marcajelor
axis([5 15 5 15 -8 8])
set(gca'ZTickLabel','Negative||Positive')
7. Setarea proporionalitii
set(gca,'PlotBoxAspectRatio',...
[2.5 2.5 1])
6.3.1. Reprezentarea unei matrice ca o suprafa
MATLAB -ul definete o suprafa prin coordonatele z ale punctelor de deasupra unui
caroiaj dreptunghiular n planul x-y. Graficul este format prin unirea punctelor a
diacente
cu linii drepte. Plotrile de suprafee sunt utile pentru vizualizarea matricilor ca
re sunt prea
mari pentru a fi afiate n form numeric i pentru trasarea graficelor funciilor de dou
variabile.
MATLAB -ul poate crea diferite forme de trasare a suprafeelor:
76
Funcie
Utilizare
mesh, surf
Trasare a unei suprafee
meshc, surfc
Trasarea suprafeei, inclusiv conturul
meshz
Trasarea suprafeei, inclusiv planul de referin
pcolor
surfl
Plotare plan a suprafeei (valorile sunt proporionale doar cu culoarea)
Trasarea suprafeei luminat din direcia specificat
surface
Funcie de nivel sczut pentru crearea unor obiecte tip grafice suprafa
6.3.2. Grafice realizate cu mesh i surf
Comenzile mesh i surf genereaz suprafee 3-D din datele provenite de la matrici. Dac
Z
este o matrice pentru elementele creia Z(i,j) se definete nlimea unei suprafee peste
n
caroiaj (i,j), atunci:
mesh(Z)%genereaz o imagine colorat, caroiat a suprafeei i
o afieaz n vedere 3-D.
Similar,
surf(Z)% genereaz o imagine colorat, continu a suprafeei
i o afieaz n vedere 3-D.
n cazul comenzii mesh se pot folosi comenzi de tipul shading pentru eliminarea li
niilor de
tip mesh (shading flat) sau pentru interpolarea umbririlor de-a lungul faetelor s
uprafeei (shading interp).
6.3.3. Vizualizarea funciilor de dou variabile
Primul pas care trebuie parcurs pentru trasarea graficului unei funcii de dou vari
abile,
z = f(x,y), este de a genera matricile X i Y care definesc domeniul n care va fi v
izualizat
funcia. Apoi se utilizeaz aceste matrici pentru evaluare i trasarea graficului funci
ei.
Funcia meshgrid transform domeniul specificat prin doi vectori, x i y, n matricile
X i Y. Liniile matricei X sunt copii ale vectorului x i coloanele matricei Y sunt
copii ale
vectorului y.
Pentru a vedea cum se folosete meshgrid, vom considera funcia f(r)= sin(r)/r
(numit funcia sinc).
Pentru a evalua funcia ntre -8 i 8 i pentru x i pentru y, este necesar doar un argume
nt de tip vector pentru meshgrid, care va fi utilizat n ambele direcii:
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Matricea R conine distanele de la centru (originea), iar eps este adugat pentru a e
vita
mprirea la zero. Acum se poate forma funcia sinc i se poate realiza plotarea cu mesh.
Z = sin(R)./R;
mesh(Z)
77
Se poate realiza o mbuntire a reprezentrii grafice n condiiile utilizrii acelorai
prin folosirea unor faciliti de iluminare i ajustare a imaginii (daspect, axis, cam
light, view).
Exemplu:
surf(X,Y,Z,'FaceColor','interp','EdgeColor','none',...
'FaceLighting','phong')
daspect([5 5 1]);axis tight;view(-50,30);camlight left
6.3.4. Harta culorilor
Fiecare fereastr grafic MATLAB are asociat o hart a culorilor (colormap), care este o
matrice cu trei coloane a cror lungime este egal cu numrul de culori definite.
Fiecare linie a matricii definete o culoare particular prin specificarea a trei va
lori n
domeniul 0 1. Aceste valori definesc componentele RGB (red, green, blue) (adic in
tensitile componentelor video rou, verde i albastru).
78
Funcia colormap fr argumente returneaz harta figurii curente. Funcia colorbar
afieaz n fereastra grafic harta curent a culorilor, sub forma unei bare aezate lng
grafic.
Exemplu:
[x,y] = meshgrid([-2:.2:2]);Z = x.*exp(-x.^2-y.^2);
surf(x,y,Z,gradient(Z));colorbar
6.2. Handle Graphics i Interfee Grafice n MATLAB
(GUI)
Crearea i manipularea graficelor n MATLAB se realizeaz cu ajutorul unui sistem de gr
afic orientat pe obiecte denumit Handle Graphics [13]. Acest sistem furnizeaz
componentele necesare generrii unor grafice: comenzi de trasare a liniilor, texte
lor, grafice
3-D, poligoane etc. precum i instrumente interactive de tipul meniurilor, butoane
lor, ferestre
de dialog etc.
Cu Handle Graphics se pot manipula direct elementele grafice (aa cum o fac funciil
e
MATLAB de nivel nalt descrise n capitolul anterior) pe dou ci:
fie de la linia de comand MATLAB ,

fie cu ajutorul unor fiiere MATLAB create special.


6.2.1. Ierarhia graficelor private ca obiecte
Obiectele grafice sunt de fapt elementele grafice de baz utilizate de MATLAB pentr
u
afiarea datelor i pentru crearea Interfeelor Grafice Utilizator (Graphical User Int
erfaces GUI) [13]. Fiecare stare a unui obiect este asociat unui identificator un
ic numit handle, care
poate fi folosit pentru manipularea caracteristicilor obiectului respectiv (cara
cteristici care
sunt numite proprietile obiectului).
Obiectele grafice sunt structurate ntr-o ierarhie pe trei nivele:
79
Ierarhia este bazat pe interdependenele dintre diferitele obiecte grafice. De exem
plu, pentru
trasarea unui obiect linie, MATLAB utilizeaz un obiect de tip axe pentru orientare
a i
furnizarea unui sistem de referin liniei. Obiectul de tip axe are nevoie la rndul su
de o
fereastr grafic pentru afiarea liniei.
Obiectele grafice sunt interdependente i prin urmare un ecran grafic conine o mare
varietate
de obiecte care mpreun furnizeaz o imagine sau un grafic care are o semnificaie clar.
Pentru exemplificare se poate analiza urmtoarea fereastr grafic, fereastr care conine
mai
multe obiecte grafice.
Fiecare tip de obiect grafic are o funcie generatoare corespunztoare, funcie care
este utilizat pentru crearea unui obiect din clasa respectiv de obiecte. Funciile d
e generare
a obiectelor au aceleai nume ca i obiectele pe care le creeaz (funcia text pentru ob
iecte de
tip text, funcia figure pentru obiecte de tip figur etc.).
80
Tipurile de obiecte grafice sunt descrise pe scurt n continuare [19].
6.2.2. Rdcina (Root)
n fruntea ierarhiei este obiectul rdcin, care corespunde cu ecranul calculatorului.
Acest
obiect nu trebuie creat, el exist, este unic i toate celelalte obiecte sunt descen
denii
acestuia. Se pot modifica anumite proprieti ale obiectului rdcin.
Obiectele figur (Figure)
Obiectele de tip figur sunt ferestre individuale pe ecranul rdcin pe care MATLAB -ul
afieaz graficele. Nu exist limit pentru numrul de ferestre grafice (dect cele datorat
limitelor calculatorului). Toate obiectele figur sunt copii ai rdcinii i celelalte ob
ecte
grafice sunt descendeni ai figurilor.
Obiectele de tip Uicontrol
Obiectele Uicontrol sunt elemente de control ale interfeei utilizator care execut
subrutine
de apel atunci cnd utilizatorul activeaz un obiect. Exist mai multe stiluri de cont
rol cum ar
fi butoane, liste etc. Fiecare astfel de instrument este proiectat s accepte un a
numit tip de
informaie de la utilizator. De exemplu, listele sunt de obicei folosite pentru pe
ntru furnizarea
unei liste de nume, din care utilizatorul poate selecta unul sau mai multe artic
ole.
Obiectele Uicontrol pot fi utilizate n diferite combinaii pentru construirea unor
ecrane de
control i a unor ferestre de dialog. n exemplul urmtor sunt prezentate astfel de co
mbinaii:
meniuri pop-up,
ferestre de tip text editabile,
ferestre de verificare (check boxes),

butoane,

text static,

cadre etc.
Meniurile pop-up permit alegerea dintre
mai multe articole predefinite
Utilizatorul poate introduce valori
numerice n astfel de ferestre de tip text
editabile
Ferestrele de verificare (check boxes)
indic alegerea fcut de utilizator
Cadrele realizeaz grupri logice pentru
diverse tipuri de comenzi
Textele statice permit etichetarea
diverselor tipuri de controale
Butoanele indic o anumit aciune
81
Obiectele Uicontrol sunt copiii obiectelor de tip figur i sunt independente de obi
ectele de
tip axe.
Obiectele de tip Uimenu
Obiectele Uimenu sunt meniuri pull-down care execut rutine de apelare atunci cnd uti
lizatorul selecteaz un articol individual dintr-un meniu. MATLAB-ul plaseaz obiect
ele
Uimenu pe bara de meniuri a ferestrei grafice, la dreapta meniurilor existente d
efinite de
sistem.
Imaginea urmtoare [14] arat partea de sus a unei figuri MS-Windows care are defini
te trei
meniuri de top Uimenu (intitulate Workspace, Figure, i Axes). Dou niveluri de subm
eniuri
sunt vizibile n meniul Workspace.
Obiectele Uimenu sunt descendente directe ale obiectelor de tip figur i deci sunt
independente de axe.
Obiectele de tip axe (Axes)
Obiectele de tip axe definesc o regiune ntr-o fereastr de tip figur i orienteaz desce
ndenii
lor spre aceast regiune. Obiectele de tip axe sunt copiii obiectelor de tip figur i
sunt
prinii obiectelor de tip imagine, luminozitate, linie, patch, suprafa i text.
Toate funciile care traseaz grafice (plot, surf, mesh, bar etc.) creeaz un obiect d
e tip axe
dac nu exist deja unul.
Uicontrol i Uimenu nu sunt descendeni ai obiectelor de tip axe.
Obiectele de tip Imagine (Image)
O imagine n MATLAB const ntr-o matrice de date i o hart a culorilor. Exist trei tipur
de baz de imagini care difer n funcie de modul n care elementele matricii de date sun
t
interpretate ca pixeli color indexai, intensitate i truecolor.
Obiectele de tip lumin (luminozitate) (Light)
Aceste obiecte definesc surse de lumin care influeneaz toate obiectele de tip patch
i suprafa dintre axe. Se pot seta proprietile care determin tipul sursei de lumin,
oarea,
localizarea i altele.
Obiectele de tip linie (Line)
Obiectele de tip linie sunt elemente grafice de baz care sunt folosite pentru a g
enera cele
mai multe plotri 2-D i unele 3-D. Funciile de nivel nalt plot, plot3, loglog etc. ge
nereaz
obiecte de tip linie. Sistemul de coordonate al obiectului printe obiectul de tip
axe
poziioneaz i orienteaz linia.
82
Obiectele de tip Patch
Aceste obiecte sunt contururi poligonale cu muchii (laturi), umplute. Un singur
obiect patch
poate conine mai multe fee, fiecare colorat independent. Funciile fill, fill3, conto
ur3
creeaz obiecte patch. Ca i n cazul liniei, sistemul de coordonate al obiectului prin
te (axele) poziioneaz i orienteaz obiectul patch.
Obiectele de tip dreptunghi (Rectangle)
Aceste obiecte sunt arii 2-D umplute, cu o form care poate varia de la un dreptun
ghi la o
elips.
Obiectele de tip suprafa (Surface)
Obiectele de tip Surface sunt reprezentri 3-D ale matricilor de date create prin
plotarea
fiecrui element al matricii ca o nlime deasupra planului x-y. MATLAB-ul poate trasa
suprafee pline, colorate sau doar o reea de linii (mesh) care conecteaz punctele re
spective.
Sistemul de coordonate al axelor poziioneaz i orienteaz obiectul de tip suprafa.
Funciile de nivel nalt pcolor, surf, mesh genereaz obiecte de tip suprafa.
Obiectele de tip Text
Obiectele de tip text sunt de fapt iruri de caractere. Sistemul de coordonate al
axelor
poziioneaz textul. Funciile de nivel nalt: title, xlabel, ylabel, zlabel,
gtext genereaz obiecte de tip text.
6.2.2. Proprietile obiectelor grafice
Proprietile obiectelor grafice determin aspectul i comportamentul acestora. Proprieti
e
includ informaii generale (tipul obiectului, printe, copii, dac obiectul este vizib
il etc.) i
informaii specifice unei anumite clase particulare de obiecte.
MATLAB -ul organizeaz informaiile ntr-o ierarhie i salveaz aceste informaii n propr
e obiectelor. De exemplu, proprietile rdcinii conin identificatorul (handle)
figurii curente i locaia curent a pointerului (cursorului), proprietile figurii conin
liste cu
descendenii i evenimentele din fereastr, proprietile axelor conin informaii despre c
fiecare din obiectele copil folosete harta culorilor etc.
Valoarea curent a oricrei proprieti poate fi aflat, iar unele valori pot fi modificat
e.
Valoarea unei proprieti este aplicat numai unui obiect particular i nu ntregii clase
de
obiecte. Se pot seta valori implicite care s fie valabile pentru toate obiectele
create ulterior.
Anumite proprieti sunt comune tuturor obiectelor grafice.
Proprietate
BusyAction
ButtonDownFcn
Children
Clipping
CreateFcn
Informaii coninute
Controleaz modul n care MATLAB-ul apeleaz rutinele de ntreruperi definite pentru un
anumit obiect.
Rutin executat la apsarea unui buton.
Manipuleaz toate obiectele copil ale obiectului.
Activare/dezactivare mod tiere.
Rutin executat atunci cnd acest tip de obiect este creat.
83
DeleteFcn
HandleVisibility
Interruptible
Parent
Selected
SelectionHighlight
Tag
Type
UserData
Visible
Rutin executat atunci cnd se d o comand de distrugere
(tergere) a obiectului.
Permite controlul obiectului de la linia de comand sau din rutine de
apelare.
Determin cnd o rutin poate fi ntrerupt printr-o rutin invocat
ulterior.
Printele obiectului.
Indic dac obiectul este selectat.
Specific dac este indicat starea de selectare.
Etichet a unui obiect specificat de utilizator.
Tipul obiectului (figur, linie, text etc.)
Orice dat care se dorete a fi asociat obiectului.
Determin dac obiectul este vizibil sau nu.
6.2.3. Funcii de generare a obiectelor grafice
Fiecare obiect grafic, mai puin rdcina, are o funcie de generare corespondent:
Funcie
axes
figure
image
light
line
patch
rectangle
surface
text
uicontextmenu
uicontrol
uimenu
Descriere obiect
Sistem de coordonate carteziene care scaleaz i orienteaz obiectele copil:
imagine, lumin, linie, patch, suprafa i text.
Fereastr pentru afiare grafic.
Imagine 2-D definit prin indicarea hrii culorilor sau valori RGB. Datele
pot fi pe 8 bii sau dubl precizie.
Surs direcionat de lumin, localizat ntre axe, care influeneaz suprafeele i obiect
.
Linie format prin conectarea coordonatelor prin segmente drepte ntr-o
secven specificat.
Form poligonal creat prin interpretarea fiecrei coloane din matricile de
coordonate ca un poligon separat.
Arie 2-D umplut (plin), cu form de la dreptunghi la elips.
Suprafa cu fee dreptunghiulare, definite prin interpretarea elementelor
matricei ca nlimi deasupra planului.
ir de caractere localizat n sistemul de coordonate al axelor.
Meniu context ce poate fi asociat cu alt obiect grafic.
Interfa utilizator programabil (butoane, liste etc.).
Meniu programabil care apare n partea superioar a figurii.
Toate funciile de generare a obiectelor au un format similar:
handle=function('propertyname',propertyvalue,...)
84
Exemplu de generare a obiectelor grafice
n exemplul urmtor este evaluat o funcie matematic i sunt create trei obiecte grafice
folosind valorile proprietilor specificate ca argumente ale comenzilor figure, axe
s
i surface, celelalte proprieti avnd valori implicite.
[x,y] = meshgrid([-2:.4:2]);
Z = x.*exp(-x.^2-y.^2);
fh=figure('Position',[350 275 400 300],'Color','w');
ah=axes('Color',[.8 .8 .8],'XTick',[-2 -1 0 1 2],...
'YTick',[-2 -1 0 1 2]);
sh = surface('XData',x,'YData',y,'ZData',Z,...
'FaceColor',get(ah,'Color')+.1,...
'EdgeColor','k','Marker','o',...
'MarkerFaceColor',[.5 1 .85]);
Funcia surface nu folosete o vedere 3-D ca funcia de nivel nalt surf. Se poate schim
ba
vederea ntr-una 3-D cu camera commands sau cu comanda view:
view(3)
85
6.2.4. Construcia interactiv a unei interfee grafice cu utilizatorul folosind GUI
Pentru a construi o interfa grafic cu utilizatorul de tip GUI se poate face apel la
facilitile MATLAB dezvoltate n acest sens i prezentate n Matlab Guide (Graphical Use
Interfaces Development Environment).
Tastm n linia de comand
>> guide
n cutia de dialog se selecteaz Blank GUI (Default) n cmpul GUIDE Templates. Se activ
eaz opiunea Save on startup as, iar n fereastra alturat se introduce roger.fig i apoi
tastm butonul OK al csuei de dialog.
n urma acestei aciuni va apare o fereastr ce reprezint mediul de dezvoltare
Matlab Guide. n zona din stnga ecranului sunt dispuse obiectele predefinite dispon
ibile n
Matlab . Fiecare stare a unui obiect este asociat unui identificator unic numit h
andles, care
poate fi folosit pentru manipularea caracteristicilor obiectului respective (car
acteristici care
sunt numite proprietile obiectului).
Etapa 1
Salvarea interfeei grafice roger.fig se face printr-un clic pe meniul File+Save A
s. n urma
acestei operaiuni de salvare Matlab creaz dou fiiere roger.fig i roger.m cel de-al do
ilea
fiind automat deschis.
Acest ultim fiier conine codul specific interfeei grafice unde trebuiesc adugate ins
truciunile de execuie a anumitor comenzi de interaciune a utilizatorului cu program
ul.
Pentru a schimba proprietile obiectele se va executa dublu click pe rnd pe fiecare
obiect
pentru a deschide fereastra Property Inspector specific fiecrui obiect grafic.
Etapa 2
Scrierea liniilor de program pentru obiectele GUI (Callbacks), n continuare salve
az modificrile efectuate n fiierul M i de pe linia de comand a ferestrei Command Wind
w se
tasteaz
>> roger
care va lansa n execuie interfaa grafic astfel creat.
Observaie: Codul MATLAB se poate modifica dup preferinele utilizatorului.
86
CAPITOLUL 7.
ALGEBR
7.1. Matricile n MATLAB
Definie: n Matlab, o matrice este un tablou dreptunghiular de numere. Scalarii de
exemplu
sunt matrici 1 x 1, iar matricile cu o singur linie sau coloan sunt de fapt vector
i.
7.1.1. Introducerea matricilor
Matricile se pot introduce n mai multe moduri:
Introducerea unei liste explicite cu elementele matricei.
ncrcarea unor date din fiere externe de date.
Generarea de matrici utiliznd funcii built-in.
Crearea de matrici n fiierele M-files.
Vom da exemple folosind matricea lui Drer cunoscut ca i matricea magic, deoarece
suma elementelor pe linii i coloane este egal cu suma elementelor de pe diagonala
principal i secundar.
Trebuie respectate cteva convenii simple:
Elementele unei linii sunt separate prin virgule sau spaii. Sfritul unei linii se
marcheaz cu punct i virgul.
Lista de elemente care formeaz matricea se delimiteaz cu paranteze drepte [ 7 ]:
Pentru introducerea matricii lui Drer tastm:
A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
MATLAB -ul va afia matricea:
A =
16
3
2
13
5
10
11
8
9
6
7
12
4
15
14
1
O dat introdus, matricea este memorat n workspace (spaiul de lucru) i poate fi apelat
simplu, ca A.Verificm proprietile fundamentale ale matricei A folosind comenzile
MATLAB:
sum, transpose, diag
Suma elementelor de pe cele 4 coloane se calculeaz rapid cu:
sum(A)
ans =
34
34
34
34
Pentru calcularea sumelor pe linii, efectum nti transpunerea matricii i apoi aplic di
n nou
comanda sum.
87
Transpusa se calculeaz cu:
A'
ans =
16
5
9
4
3
10
6
15
2
11
7
14
13
8
12
1
i apoi
sum(A')'
ans =
34
34
34
34
Suma elementelor de pe diagonal se calculeaz cu tot cu funcia sum, dar dup ce n preal
abil vom sorta cu funcia diag elementele de pe diagonala principal:
diag(A)
ans =
16
10
7
1
sum(diag(A))
ans =
34
Un anume element al matricii, de exemplu elementul din linia i coloana j se note
az A(i,j).
Prin urmare o alt cale (mai puin rapid) de a calcula suma de pe patra coloan de exem
plu
este urmtoarea:
A(1,4) + A(2,4) + A(3,4) + A(4,4)
ans =
34
Dac specificm un element care nu exist n matrice, primim un mesaj de eroare:
t = A(4,5)
Index exceeds matrix dimensions.
7.1.2. Operatorul :
Operatorul ':' este foarte important. De exemplu, expresia
1:10
este un vector linie
ans =
1
2
3
4
5
6
7
Alte exemple:
100:-7:50
ans =
100
93
86
79
72
65
0:pi/4:pi
ans =
0
0.7854
1.5708
2.3562
88
8
9
58
3.1416
10
51
7.1.3. Expresia :
A (1:k, j) se refer la primele k elemente ale coloanei j a lui A.
Dac este utilizat n paranteze operatorul : atunci nseamn c ne referim la toate elemen
tele
unei linii sau coloane
sum(A(:,3))
calculeaz suma elementelor din coloana a treia a lui A:
ans =
34
O alt proprietate interesant a ptratului magic este c suma magic 34 este obinut i p
nsumarea elementelor matricii i prin mprirea la dimensiunea matricii (4):
sum(1:16)/4
ans =
34
Observaie:
Suma magic pentru orice ptrat magic n x n este (n3 + n)/2 (se poate calcula i cu aj
utorul
Symbolic Math Toolbox) [17]. MATLAB-ul opereaz cu matricile cu aceeai uurin cu
care lucreaz cu scalarii. Pentru adunarea a dou matrici de exemplu se folosete pur i
simplu semnul + ca la o adunare obinuit. Bineneles c matricile trebuie s aib acelea
dimensiuni pentru a putea fi adunate.
Exemplu:
A=[2 3;15 -3]
A =
2
3
15
-3
B=[11 -21; 12 4]
B =
11
-21
12
4
C=A+B
C =
13
-18
1
Pentru nmulirea a dou matrici se folosete operatorul * , valabil de altfel i pentru
operaiile cu scalari.
Exemplu:
D=A*B
D =
58
-30
-327
Dac dimensiunile matricilor care se nmulesc nu sunt corespunztoare, atunci va fi fur
nizat
un mesaj de eroare:
E=[1 23; -12 2;1 2]
89
E =
1
-12
1
23
2
2
F=A*E
??? Error using ==> *
Inner matrix dimensions must agree.
Pentru depanarea programului n cazul unor astfel de greeli se poate utiliza comanda
size
care ne d informaii despre dimensiunile matricilor respective i permite corectarea
erorilor:
size(A)
ans =
2
2
size(E)
ans =
2
O facilitate interesant a MATLAB-ului este aceea c lucreaz cu matricile cu operator
i
logici i relaionali ntr-un mod asemntor acestor operaii efectuate cu scalari.
De exemplu, pentru operaiunea scalar. Dac dorim de exemplu s comparm fiecare element
al matricii A cu elementul corespunztor din matricea B, procedm asemntor:
L=A<=B
L =
1
0
0
1
Operatorii logici, adic & pentru I (AND), | pentru SAU (OR), ~ pentru NU (NOT), vo
r
returna valoarea 1 pentru ADEVRAT i 0 pentru FALS.
Exemplu:
A&B
ans =
1
1
~A
ans =
1
1
0
0
0
0
MATLAB -ul lucreaz direct cu multe operaii matriceale: aritmetica matricilor,
ecuaii liniare, valori proprii, factorizri etc , ele sunt localizate n directorul m
atfun.
n continuare sunt prezentate cteva din funciile care lucreaz cu matrici.
90
Categoria
Analiza matriceal
Funcia
Descriere
norm
Norma unei matrice sau a unui vector.
normest
Estimeaz norma-2 a matricei.
rank
Rangul matricei.
det
Determinant.
trace
Suma elementelor de pe diagonal.
null
Spaiul Nul.
orth
Ortogonalizare.
subspace Unghiul dintre 2 subspaii.
Ecuaii liniare
Valori proprii i
i vectori proprii
\ i /
Utilizate la calculul soluiilor ecuaiilor liniare.
inv
cond
chol
lu
qr
pinv
lscov
eig
Inversa matricei.
Numrul de condiie pentru inversare.
Factorizarea Cholesky.
Factorizarea LU.
Decompoziia ortogonal-triunghiular.
Pseudoinversa.
Cele mai mici ptrate cu covarian cunoscut.
Valori proprii i vectori proprii.
svd
Decompoziia n valori singulare.
poly
Polinomul caracteristic.
hess
Forma Hessenberg.
qz
Factorizarea QZ.
schur
Decompoziia Schur.
Funcii de matrice expm
logm
Exponeniala de matrice.
Logaritmul de matrice.
sqrtm
Rdcina ptrat de matrice.
funm
Evaluarea unei funcii generale de matrice.
91
Operaiile elementare cu matrici au fost deja prezentate (adunarea matricilor, nmuli
rea
acestora, transpusa unei matrice, funciile sum, diag etc.).
Teorema (29, pag 120)
Fie A mn cu mn. Atunci exist o singur matrice mn Q orthogonal i o unic
matrice nn R triunghiular superior, cu elementele de pe diagonala principal
pozitive astfel ca: A=QR.
Vom da un exemplu descompunere QR (Cholesky Decomposition)
Codul Matlab (29, pag121)
function Cholesky(A)
%apel R=Cholesky (A)
%R= matrice triunghiular superioara
[m,n]=size(A);
for k=1:m
if A(k,k)<=0
error('matrix is not HPD')
end
for j=k+1:m
A(j,j:m)=A(j,j:m)-A(k,j:m)*A(k,j)/A(k,k);
end
A(k,k:m)=A(k,k:m)/sqrt(A(k,k));
end
R=triu(A);
n continuare sunt prezentate cteva matrici speciale utile n toate tipurile de repre
zentri
matematice:
7.1.4. Matrici speciale
Matricea identitate (unitate)
Este o matrice cu elementele de pe diagonala principal egale cu 1 iar restul elem
entelor sunt
nule. Notaia matematic I provine de la denumirea matricii i nu este folosit n
MATLAB, pentru evitarea unor confuzii.
Se utilizeaz sintaxa:
eye(m,n)
Aceast funcie returneaz o matrice identitate mxn. Dac se folosete:
eye(n)
atunci este vorba de o matrice identitate ptratic nxn.
Matricea ones
Este o matrice care are toate elementele egale cu 1. Forme posibile:
ones(n) este o matrice nxn cu elemente de 1
ones(m,n) sau ones([m,n]) sunt matrici mxn cu elemente de 1.
ones(size(A)) are aceeai dimensiune cu o matrice A i are elemente de 1
Matricea zeros
Este o matrice care are toate elementele egale cu 0.
Forme posibile:
92
zeros(n) este o matrice nxn de zerouri
zeros(m,n) sau zeros([m,n]) sunt matrici mxn de 0
zeros(size(A))are aceeai dimensiune cu o matrice A i are elemente de 0.
7.2. Rezolvarea ecuaiilor liniare
Una din cele mai importante probleme ale calculului din domeniul tehnic este sol
uionarea
sistemelor de ecuaii liniare.
Definirea problemei este pe scurt urmtoarea [24] :
Dac se dau dou matrici A i B, exist o matrice unic X astfel nct
AX = B sau XA = B ?
MATLAB utilizeaz notaia din cazul scalar i pentru descrierea soluiei unui sistem de
ecuaii liniare. Cele dou simboluri utilizate n cazul scalar al diviziunii (mpririi)
nume
slash, /, i backslash, \, sunt folosite pentru definirea soluiei:
X = A\B este soluia ecuaiei matriceale AX = B.
X = B/A este soluia ecuaiei matriceale XA = B.
n practic, ecuaiile liniare de forma AX = B sunt mai des ntlnite.
Deoarece matricea A, care conine de fapt coeficienii sistemului, poate s nu fie ptra
tic ci
de tipul general mxn, exist trei cazuri posibile:
m = n.
m > n.
m < n.
Sistem ptratic. Se poate cuta o soluie exact.
Sistem supradeterminat (incompatibil). Se caut o soluie de tip cele mai mici
ptrate.
Sistem nedeterminat. Se poate cuta o soluie cu cel mult m componente nenule.
n multe cazuri MATLAB-ul d un diagnostic (o soluie) automat prin examinarea coefici
enilor matricelor.
Cteva din aceste cazuri:
Permutarea matricilor triunghiulare
Matrici simetrice, pozitiv definite
Matrici ptratice nesingulare
Sisteme rectangulare supradeterminate
Sisteme rectangulare nedeterminate
7.2.1. Sisteme ptratice
Cel mai simplu caz este cel corespunztor unei matrice ptratice A i a unui vector co
loan b.
Soluia x = A\b are aceeai dimensiune ca b.
Dac A i B sunt ptratice de aceleai dimensiuni atunci soluia X = A\B are aceeai dimens
une ca A sau B.
Observaie: Dac matricea A este singular (determinant nul) atunci soluia ecuaiei AX =
B nu exist sau nu este unic.
7.2.2. Sisteme supradeterminate (incompatibile)
Aceste tipuri de sisteme sunt des ntlnite n diverse situaii, cum ar fi de exemplu ap
roximarea unor curbe din date experimentale.
93
7.2.3. Sisteme nedeterminate
Sistemele liniare nedeterminate au mai multe necunoscute dect ecuaii. Dac exist i con
strngeri (restricii) suplimentare, atunci este vorba de o problem de programare lin
iar.
Operatorul backslash din MATLAB permite cutarea soluiei n cazul fr restricii.
Soluia nu este niciodat unicMATLAB -ul gsete o soluie de baz (care are cel mult m
componente nenule).
Gsirea soluiei particulare se bazeaz pe factorizarea QR (decompoziia ortogonaltriung
hiular).
Vom prezenta un exemplu (care utilizeaz funcia matriceal random rand).
R = fix(10*rand(2,4))
R =
6
8
7
3
3
5
4
1
b = fix(10*rand(2,1))
b =
1
2
Sistemul liniar Rx = b implic dou ecuaii cu 4 necunoscute. Soluia se poate afia n for
at
raional (coeficienii sunt numere ntregi).
Soluia particular se obine astfel:
format rat
p = R\b
p =
0
5/7
0
-11/7
Soluia complet a sistemului nedeterminat se obine prin adugarea unui vector arbitrar
din
spaiul nul folosind funcia null:
Z = null(R,'r')
Z =
-1/2
-7/6
-1/2
1/2
1
0
0
1
Orice vector de forma: x=p+Z*q pentru q vector arbitrar satisface R*x=b.
7.3. Inverse i determinani
Dac matricea A este ptratic i nesingular, ecuaiile AX = I i XA = I au aceeai
soluie X. Aceast soluie este chiar inversa lui A, notat matematic prin A-1, i poate f
i
calculat cu funcia inv.
Determinantul unei matrice se poate calcula cu funcia det (trebuie acordat atenie
problemelor de scalare i rotunjire care apar n calcule).
94
Exemple:
A=[1 1 1;1 2 3;1 3 6];
d = det(A)
d =
1
X = inv(A)
X =
3
-3
-3
5
1
-2
1
-2
1
7.3.1. Pseudoinverse
Matricile dreptunghiulare (rectangulare) nu au inverse sau determinani. Atunci ce
l puin una
din ecuaiile AX = I sau XA = I nu are soluie. Se poate utiliza n acest caz o pseudo
invers
care poate fi calculat cu funcia pinv:
A1=[A;[1 3 5]]
A1 =
1
1
1
1
1
2
3
3
1
3
6
5
X=pinv(A1)
X =
1.5000
-0.8333
0.1667
-0.0000
0.6667
-0.3333
1.0000
-2.0000
1.0000
-1.5000
2.1667
-0.8333
7.4. Funcii de matrice. Valori proprii
7.4.1. Puteri de matrice
Dac A este o matrice ptratic i p este un numr ntreg pozitiv, atunci A^p multiplic pe
cu ea nsi de p ori.
X = A^2
X =
3
6
6
14
10
25
10
25
46
Dac A este ptratic i nesingular, atunci A^(-p) multiplic pe inv(A) cu ea nsi de p
ori.
95
Y=A^(-2)
Y =
19.0000 -26.0000
-26.0000
38.0000
10.0000 -15.0000
10.0000
-15.0000
6.0000
Ridicarea la putere element cu element se face utiliznd operatorul (funcia) .^. De
exemplu:
X = A.^2
A =
1
1
1
4
1
9
1
9
36
7.4.2. Rdcina ptrat de matrice
Funcia sqrtm(A) permite calculul lui A^(1/2) printr-un algoritm mai precis dect ut
ilizarea puterii de matrice.
7.4.3. Exponeniala de matrice
Un sistem de ecuaii difereniale ordinare cu coeficieni constani poate fi scris:
= A x(t),
unde x = x(t) este un vector de funcii de timp i A este o matrice independent de ti
mp.
Soluia sistemului poate fi scris prin intermediul exponenialei de matrice
x(t)=etA x(0).
Funcia expm(A) permite calculul exponenialei de matrice.
Exemplu.
Urmtorul program calculeaz: norm(exp(tA)) pentru valori mari ale timpului. Datorit
ne-normalitii matricei A are loc o cretere important a acestei mrimi pentru valori
mici ale lui t.
Codul Matalab este:
eps=0.001;
A=[-eps,0.;1.,-2*eps];
n=100001;
% Programul calculeaza numarul lui Henrici pentru A
HA=sqrt(norm(A'*A-A*A'));
% Calculeaza si traseaza exp(t*A) pentru matricea A ne-normala
t=0.:.1:10000;
for i=1:n
c(i)=norm(expm(t(i)*A));
end
plot(t,c);
grid on
title('Cresterea normei exp(tA)')
96
n urma execuiei acestui program obinem urmtorul rezultat:
Cresterea normei exp(tA)
300
250
200
150
100
50
0
0
2000
4000
6000
8000
10000
7.4.4. Valori proprii
O valoare proprie i un vector propriu ale unei matrice ptratice A sunt un scalar i
un
vector v care satisfac egalitatea :
Av=lv
Cu valorile proprii pe diagonala unei matrice de tip diagonal G i cu vectorii pro
prii
corespunztori care formeaz coloanele unei matrice V vom avea :
A V=V G
Dac V este nesingular obinem descompunerea pe baza valorilor proprii:
A=V G V-1
Exemplu:
A=[-1 -3 1;2 -2 -1;0 1 -3]
A =
-1
-3
1
2
-2
-1
0
1
-3
lambda=eig(A)
lambda =
-1.7593 + 2.4847i
-1.7593 - 2.4847i
-2.4814
Lambda va fi un vector care conine valorile proprii ale matricei.
Dac funcia eig este utilizat cu dou argumente de ieire vom obine vectorii proprii i
valorile proprii (acestea sub forma diagonal):
[V,D]=eig(A)
V =
0.2233 + 0.6835i
0.2233 - 0.6835i
0.3160
0.6481 - 0.0862i
0.6481 + 0.0862i
0.4368
0.0765 - 0.2227i
0.0765 + 0.2227i
0.8422
97
D =
-1.7593 + 2.4847i
0
0
0
-1.7593 - 2.4847i
0
0
0
-2.4814
[X,J]=jordan(A)
X =
0.1121
0.4440 + 0.1691i
0.1549
-0.0775 + 0.4250i
0.2987
-0.1494 + 0.0434i
0.4440 - 0.1691i
-0.0775 - 0.4250i
-0.1494 - 0.0434i
J =
-2.4814
0
0
0
- 2.4847i
-1.7593 + 2.4847i
0
-1.7593
0
Forma canonic Jordan este un concept teoretic important, dar nu este indicat folos
irea n
cazul matricilor mari sau pentru matricile cu elemente afectate de erori de rotu
njire sau de
alte incertitudini.
MATLAB -ul poate folosi n astfel de cazuri descompunerea Schur (funcia schur).
Observaie:
1. Toolbox-ul Symbolic Math extinde capacitatea MATLAB-ului prin conectarea la
Maple, care este un sistem de calcul algebric performant. Una din funciile toolbo
xului permite calculul formei canonice Jordan.
2. Valorile proprii sunt utilizate de exemplu n studiul portretului de faze la si
stemele
dinamice.
7.5. Reprezentarea polinoamelor.
7.5.1. Polinoame
Polinoame
Polinoamele sunt descrise n MATLAB prin vectori linie ale cror elemente sunt de fa
pt
coeficienii polinoamelor n ordinea descresctoare a puterilor.
Exemplu: Polinomul p(x) =x3+5x+6 este reprezentat n MATLAB astfel:
p = [1 0 5 6]
Un polinom poate fi evaluat pentru o valoare a lui x cu ajutorul funciei polyval:
polyval (p,1)% polinomul p n punctul x =1.
Ans =
12
Se pot afla cu uurin rdcinile polinomului folosind funcia roots:
r=roots(p)
r =
0.5000 + 2.3979i
0.5000 - 2.3979i
-1.0000
98
Exist numeroase alte funcii i comenzi care se ocup cu operaii asupra polinoamelor,
funcii care vor fi abordate ntr-un capitol special. Dintre acestea amintim comanda
care
permite nmulirea a dou polinoame, i anume conv:
p1=[1 3 5]
p1 =
1
3
5
p2=[2 0 1 0 5]
p2 =
2
0
1
p3=conv(p1,p2)
p3 =
2
6
11
r=17>55
r =
0
0
5
3
10
15
25
MATLAB -ul rspunde cu r = 0, adic fals.
Funciile polinomiale se afl n directorul polyfun:
Funcie
conv
deconv
poly
polyder
polyfit
polyval
polyvalm
residue
roots
Descriere
Multiplic polinoamele.
mparte polinoamele.
Returneaz coeficienii dac se dau rdcinile; Polinomul caracteristic.
Calcul derivatei unui polinom.
Gsirea coeficienilor unui polinom din aproximarea
unui set de date.
Evaluarea unui polinom.
Evaluarea unui polinom cu argument matriceal.
Descompunere n fracii simple.
Gsirea rdcinilor unui polinom.
Dup cum s-a precizat deja, MATLAB -ul reprezint polinoamele ca vectori linie care
conin coeficienii polinoamelor n ordinea descresctoare a puterilor.
n continuare sunt parcurse alte cteva exemple utile.
Funcia poly returneaz coeficienii unui polinom dac dispunem de rdcinile acestuia (est
o funcie invers fa de roots):
p=[1 -1 2 4 1];
r=roots(p)
r =
1.0529 + 1.7248i
1.0529 - 1.7248i
-0.7995
-0.3063
99
coef=poly(r)
coef =
1.0000
-1.0000
2.0000
4.0000
1.0000
O alt utilizare a funciei poly este aceea de calculare a coeficienilor polinomului
caracteristic al unei matrice:
A
A =
-1
-3
1
2
-2
-1
0
1
-3
poly(A)
ans =
1
6
18
23
Rdcinile acestui polinom sunt chiar valorile proprii ale matricii A.
Funcia polyval evalueaz un polinom pentru o valoare specificat a argumentului.
Funcia polyvalm permite evaluarea unui polinom n sens matriceal.
n acest caz polinomul p din exemplul anterior: p(x) = x4 x3 + 2x2 + 4x + 1
devine p(X) = X4 X3 + 2X2 + 4X + I, unde X este o matrice ptratic i I matricea unit
ate.
Exemplu:
C=polyvalm(p,A)
C =
-75
-61
81
58 -130
75
52
-23
49
Funciile conv i deconv implementeaz operaiile de nmulire i mprire a polinoamelor.
Exemple:
Fie a(x) = x2 + 2x +3 i b(x) = 4x2 + 5x + 6.
a = [1 2 3]; b = [4 5 6];
c = conv(a,b)
c =
4
13
28
27
18
[q,r] = deconv (c,a)
q =
4
5
6
r =
0
0
0
0
0
Funcia polyder permite calculul derivatei unui polinom.
Exemplu:
p=[1 -1 2 4 1];
pderivat=polyder(p)
pderivat =
4
-3
4
4
100
Funcia polyfit gsete coeficienii unui polinom (o curb) care aproximeaz un set de date
n sensul algoritmului celor mai mici ptrate:
p = polyfit(x,y,n)
x i y sunt vectorii care conin setul de date iar n este ordinul polinomului ai crui
coeficieni
vor fi furnizai la apelarea funciei.
Exemplu:
x = [1 2 3 4 5]; y = [5.5 43.1 128 290.7 498.4];
p = polyfit(x,y,3)
p =
-0.1917
31.5821 -60.3262
35.3400
Pentru plotarea rezultatului se utilizeaz mai nti funcia polyval pentru o trasare ct
mai
exact a graficului polinomului i apoi se reprezint graphic estimarea versus datele
reale
pentru eventuale comparaii.
x2 = 1:.1:5;
y2 = polyval(p,x2);
plot(x,y,'o',x2,y2)
Funcia residue se utilizeaz pentru descompunerea n fracii simple. Se aplic n cazul
raportului a dou polinoame b(x) i a(x).
Exemplu:
4 + 8/s
1 + 6/s + 8/s^2
b = [-4 8];
a = [1 6 8];
[r,p,k] = residue(b,a)
r =
-12
8
p =
-4
-2
k =
[ ]
Dac se folosesc trei argumente de intrare (r, p, i k), funcia residue asigur convers
ia napoi
n forma polinomial:
101
[b2,a2] = residue(r,p,k)
b2 =
-4
8
a2 =
1
6
8
7.5.2. Interpolarea
Interpolarea este un proces de estimare a valorilor dintre date (puncte) cunoscu
te.
Aplicaiile interpolrii sunt numeroase n domenii cum ar fi procesarea numeric a semna
lelor i imaginilor , rezolvarea ecuaiilor difereniale i cu derivate pariale.
MATLAB -ul dispune de mai multe tehnici de interpolare, (29 ,pp. 209:215) alegere
a unei
metode sau alteia fcndu-se n funcie de acurateea necesar, de viteza de execuie i de
gradul de utilizare a memoriei.
Funciile de interpolare se afl n directorul polyfun.
Funcie
linear
interp1
interp2
interp3
nearest
spline
Descriere
Linear interpolation.
Mono-dimensional interpolation
Bi-dimensional interpolation.
Tri-dimensional interpolation.
Nearest nighbor interpolation.
B-spline cubic interpolation
Exemplu
Alegem cinci puncte de pe graficul funciei f(x)=x+sin *x^2.
Vom calcula un interpolant folosind metodele nearest,linear, cubic-spline.
Codul Matlab este:
x=[-1,-3/4,-1/3,0,1/5,1];
y=x+cos(pi*x.^2);
xi=linspace(-1,1,60);
yi=xi+cos(pi*xi.^2);
yn=interp1(x,y,xi,'nearest');
y1=interp1(x,y,xi,'linear');
ys=interp1(x,y,xi,'spline');
plot(xi,yi,'r:',x,y,'bo','MarkerSize',5); hold on
plot(xi,y1,'g--',xi,ys,'k-')
stairs(xi,yn,'m-')
set(gca,'XTick',x);
set(gca,'XTickLabel','-1|-3/4|-1/3|0|1/5|1')
set(gca,'XGrid','on')
axis([-1.1,1.1,-1.1,2.1])
legend('f(x)=x+cos(pi*x.^2)','data','linear','spline','nearest',4)
title('Metode de interpolare')
hold off
102
n urma execuiei programului obinem urmtorul grafic:
Metode de interpolare
2
1.5
1
0.5
0
2
f(x)=x+cos(pi*x. )
data
linear
spline
nearest
0.5
1
1
3/4
1/3
0
1/5
1
7.5.3. Interpolarea prin metoda transformatei Fourier
Funcia interpft interpoleaz datele cu o singur variabil utiliznd metoda FFT ( Fast
Fourier Transform) care se apeleaz cu sintaxa:
y=interpft (x,n)
care returneaz un vector y de lungime n obinut din vectorul x. Numrul n trebuie s
fie mai mare dect numrul de elemente ale vectorului x, iar rezultatul are periodic
itatea
circular dat de utilizarea transformatei Fourier.
Concluzie: Diferena maxim nre valorile interpolate i cele reale este egal cu ordinul
de
mrime al celui mai mic numr reprezentabil n calculator.
7.5.4 Compararea unor metode de interpolare bi-dimensional
Exemplu.
Folosirea unor metode de interpolare bi-dimensionala pentru o matrice de date 7
x 7.
Generarea funciei peaks (cu rezoluie mic) se face folosind urmtoarele comenzi:
[x,y] = meshgrid(-3:1:3);
z = peaks(x,y);
Surf(x,y,z);
103
Generarea unei suprafee mesh fine pentru interpolare:
[xi,yi] = meshgrid(-3:0.25:3);
Interpolarea cu metoda celei mai apropiate vecinti:
zi1 = interp2(x,y,z,xi,yi,'nearest');
Interpolarea cu metoda biliniar:
zi2 = interp2(x,y,z,xi,yi,'bilinear');
Interpolarea cu metoda bicubic:
zi3 = interp2(x,y,z,xi,yi,'bicubic');
Compararea graficelor corespunztoare precum i a contururilor suprafeelor n cazul dif
eritelor metode de interpolare sunt prezenatate n figurile de mai jos:
Se observ c metoda bicubic produce cele mai netede contururi. O metod cum ar fi cea
a celor mai apropiate vecinti este preferat ns n anumite aplicaii, cum ar fi cele
medicale unde nu trebuie generate date noi.
7.5.5. Aproximarea prin metoda celor mai mici ptrate
Ideea este de an aproxima un set de date printr-o linie dreapt i apoi aproximarea
printr-un
polinom. Pentru ca aproximarea s fie considerat cea mai bun suma ptratelor distanelor
de la fiecare punct la curba aproximant (linie sau polinom) trebuie s fie minim [4]
.
104
Cu aceast condiie este posibil ca nici un punct al setului de date s nu se gseasc pe
curba
aproximant. Acest lucru separ net aproximarea de interpolare, la care toate puncte
le sunt
situate pe curb.
Regresia liniar
Este o metod de aproximare unui set de date printr-o dependen liniar care minimizeaz
suma ptratelor dintre dreapta de aproximare i punctele date. Msura calitii unei aprox
imri liniare este dat de suma ptratelor distanelor de la fiecare punct la estimaia li
niar
care se poate evalua astfel:
sum_p=sum((y-y1).^2)
Determinarea parametrilor m i n ai dreptei de aproximare y = mx+n se face utiliznd
funcia polyfit.
Regresia polinomial
Este o metod de aproximare a unui set de date printr-un polinom de grad N. Dac set
ul de
date are N elemente, toate datele se afl pe curba de aproximare. Pentru un grad a
l
polinomului mai mic dect numrul de date, aproximarea este cu att mai bun cu ct gradul
polinomului este mai apropiat de numrul de date. Utilizarea unui polinom de aprox
imare cu
grad mai mare dect setul de date poate conduce la erori de aproximare considerabi
le.
Determinarea celei mai bune aproximri a unui set de date (x,y) cu un polinom de o
rdin n
se folosete funcia polyfit, care se apeleaz cu sintaxa :
p=polyfit(x,y,n)
Funcia polyfit returneaz coeficienii polinomului p(x) care n punctele precizate de
vectorul x are, n sensul celor mai mici ptrate , valorile date de vectorul y.
Exemplu
S se scrie o secven de program care s aproximeze prin polinoame de grad 3, 4, 5 i pri
n
funcii B- spline 5 perechi de puncte de coordonate cunoscute. S se reprezinte graf
ic
aproximrile determinate.
Cu secvena de program Matlab:
close all
clear all
x=[-3 -2 -1 0 2 4 6 7];
y=[-27 -19 -3 1 -3 17 23 35];
c2=polyfit(x,y,3);% coef. polinom. de grad 3
c5=polyfit(x,y,4);% coef polinom. de grad 4
c7=polyfit(x,y,5);% coef polinom. de grad 5
x1=-3:.1:7;
y2=polyval(c2,x1);% evaluarea polinomului de grad 3
y5=polyval(c5,x1);% evaluarea polinomului de grad 4
y7=polyval(c7,x1);% evaluarea polinomului de grad 5
yi=spline(x,y,x1);% interpoleaza spline
plot(x1,yi,x1,y2,x1,y5,x1,y7,x,y,'o')
grid on
se obine graficul urmtor:
105
40
30
20
10
0
10
20
30
4
2
0
2
4
6
8
7.6. Rezolvarea ecuaiilor neliniare
Reamintim cteva metode analitice de rezolvare a ecuaiilor neliniare:
- Metoda lui Newton
- Metoda lui Broyden
- Metoda Secantei
- Metoda Falsei Poziii
- Metoda Punctului fix
Sistemul Matlab pune la dispoziia utilizatorilor o funcie care permite calculul ze
rourilor
ecuaiilor neliniare.
Aceasta este fzero, care se apeleaz astfel:
[x,fval]=fzero (fun,[a,b],o timset) unde
fun= funcia neliniar
[a,b]= este intervalul n care se caut soluia aproximativ
optimset function = funcie care controleaz rezolvarea acestor
ecuaii astfel:
dac display option
= off,nu genereaz nici un raport
=iter,a fiecare iteraie afieaz un raport
= final,afiieaz un raport doar la sfritul
execuiei
=notify,afieaz un raport final dac metoda
este divergent (opiune implicit)
Tolx option = tolerana impus pentru convergen
FunValCheck = determin i soluii complexe
Exemplu
>> os = optimset(Dis ay,Fina);
>> [x,fval]=fzero(tan(x)x,[1,1],os);
Zero found in interval:[-1,1].
x =0
fval=
Dac n linia de comand tastm:
>> ezplot('tan(x)-x',[-1,1]),grid
106
Se obine graficul:
tan(x)x
0.5
0.4
0.3
0.2
0.1
0
0.1
0.2
0.3
0.4
0.5
1
0.5
0
x
0.5
1
Dac n linia de comand tastm:
>> ezplot('tan(x)-x',[-pi,pi]),grid
i deoarece funcia f(x)=tan (x) are singulariti n  pi/2 se obine graficul:
tan(x)x
10
8
6
4
2
0
2
4
6
8
10
3
2
1
0
x
1
2
3
Deci n acest caz este indicat de a gsi soluiile unor astfel de ecuaii scriind funcii
proprii.
Exemplu [29, p. 294]
Folosind metoda lui Newton s se rezolve sistemul neliniar:
3x1-cos(x1x2)- = 0,
2
x1 -81(x2+0.1)+sin x3+1.06=0
=0
e-x1x2+20x3+
Vom ncerca s scriem o funcie proprie pentru aceasta metod astfel:
function [y,ni]=Newton (f,fd,x0,ea,er,nmax)
%Metoda lui Newton
%apelul se face astfel: call[z,ni]=Newton(f,fd,x0,ea,er,nmax)
%Intrri sunt: f-funcia
%fd-derivata
%x0-valoarea de start
%ea,er-eroarea absolut si relativ
%nmax-numrul maxim de iteraii
%Iesiri
107
%z- soluia aproximativ
%ni-numrul curent de iteraii
If nargin < 6, nmax=50;end
If nargin < 5, err=0;end
If nargin < 4, ea=1e-3;end
xp=x0(:);% valoarea obinut la iteraia anterioar
for k=1:nmax
xc=xp-fd(xp)\f(xp);
if norm(xc-xp,inf)<ea+er*norm(xc,inf)
z=xc;%succes
ni=k;
return
end
xp=xc;
end
error(sa depasit numarul maxim de iteraii )
A oi trebuie scris funcia care conine ecuaiile sistemului neliniar care se mai numete
i
cmpul vectorial.
function y=ecs3(x)
%aici se dau ecuaiile neliniare ale sistemului
y=[3*x(1)-cos(x(2)*x(3))-1/2;
x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;
exp(-x(1)*x(2))+20*x(3)+(10*pi-3)/3];
i Jacobianul n Matlab:
function y=decs3d(x)
y=[3,x(3)*sin(x(2)*x(3)),x(2)*sin(x(2)*x(3));
2*x(1),-162*(x(2)+0.1),cos(x(3));
-x(2)*exp(-x(1)*x(2)),-x(1)*exp(-x(1)*x(2)),20];
Apelul pentru o valoare de start x0=[0.1,0.1,-0.1]T se face astfel:
>> [z,ni]=Newton(@ecs3,@decs3,x0,1e-9)
108
CAPITOLUL 8.
ANALIZ MATEMATIC
8.1. Reprezentarea grafic a funciilor matematice
Funciile matematice uzuale sunt furnizate de MATLAB ca funcii built-in (cum ar fi
sin, cos, log10, log, atan etc.).
Pentru reprezentarea altor funcii matematice se utilizeaz exprimarea n fiiere tip .m
.
De exemplu, o funcie cum este urmtoarea:
f(x)=1/((x-0.3)2 +0.01)+ 1/((x-0.9)2+0.04)-6
poate fi creat ntr-un fiier MATLAB de tip function i poate fi utilizat ulterior ca in
trare
n alte funcii (aa-numitele funcii de funcii).
function y = nelin(x)
y = 1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6;
O alt posibilitate este crearea la nivelul liniei de comand a unui obiect inline p
rin folosirea
unei expresii tip ir de caractere:
f=inline(`1./((x-.3).^2+.01)+1./((x-.9).^2+.04)-6');
Pentru a evalua aceast funcie f n 2.0 tastm simplu:
f(2.0)
ans =
-4.8552
Alt exemplu:
f = inline('y*sin(x)+x*cos(y)','x','y')
f(pi,2*pi)
ans =
3.1416
8.1.1. Reprezentarea grafic a funciilor
Pentru reprezentarea grafic a funciilor se poate utiliza funcia fplot. Se pot contr
ola
limitele axelor de reprezentare grafic.
Exemplu: Trasarea graficului funciei nelin pentru limitele [-5 5] ale axei x:
fplot('nelin',[-5 5])
109
Dac dorim i precizarea limitelor de reprezentare pe axa y (realizarea unui zoom) f
olosim
comanda:
fplot('nelin',[-5 5 -10 25])
Un alt exemplu de folosire direct a funciei fplot:
fplot('2*sin(x+3)',[-1 1]);
Se poate realiza i reprezentarea mai multor funcii pe acelai grafic:
fplot('[2*sin(x+3), nelin(x)]',[-1 1]);
110
Exemplu [6]
S se scrie un program n MATLAB care sa reprezinte grafic un
semnal sinosoidal cu amplitudinea A = 2V, frecventa
f=100Hz,faza initiala fi=0, esantionat cu frecventa fe =
1000hz, peste care ,peste care se suprapune un zgomot uniform
distribuit [-0.25, 0.25]V.
S se calculeze raportul semnal/zgomot.
Codul Matlab
fe=1000;
f=100;
a=0.25;
N=200;
A=2;
RSZdB=10*log10((A^2/2)/((2*a)^2/12));
t=(0:N-1)*1/fe;
s=A*sin(2*pi*f*t)+(2*a*rand(size(t))-a);
plot(t,s,'g-')
title('Sinusoida cu zgomot');
xlabel('t [secunde]');
ylabel('Amplitutidinea');
grid;
n urma execuiei acestui exemplu rezult graficul:
Sinusoida cu zgomot
2.5
2
1.5
Amplitutidinea
1
0.5
0
0.5
1
1.5
2
2.5
0
0.05
0.1
t [secunde]
0.15
0.2
8.2. Minimizarea funciilor i gsirea zerourilor
MATLAB -ul furnizeaz o serie de funcii de nivel nalt care realizeaz sarcini de optimi
zare a funciilor. Aceste funcii sunt grupate n principal pe urmtoarele domenii:
Minimizarea funciilor de o variabil
Minimizarea funciilor de mai multe variabile
Setarea opiunilor de minimizare
Gsirea zerourilor unor funcii
111
Pentru exemplificare vom considera minimizarea unei funcii de o singur variabil i gsi
rea zerourilor pentru aceast funcie.
8.2.1. Minimizarea unei funcii
Pentru gsirea unui minim local al unei funcii scrise ntr-un fiier function , se util
izeaz
funcia fminbnd.
Pentru gsirea minimului funciei nelin n intervalul (0.3, 1) folosim instruciunea:
x = fminbnd('nelin',0.3,1)
x =
0.6370
Dac dorim o afiare detaliat a pailor fcui de prodedura de minimizare se utilizeaz
urmtoarea sintax:
x = fminbnd('nelin',0.3,1,optimset('Display','iter'))
Func-count
1
2
3
4
5
6
7
8
9
x
0.567376
0.732624
0.465248
0.644416
0.6413
0.637618
0.636985
0.637019
0.637052
f(x)
12.9098
13.7746
25.1714
11.2693
11.2583
11.2529
11.2528
11.2528
11.2528
Procedure
initial
golden
golden
parabolic
parabolic
parabolic
parabolic
parabolic
parabolic
x =
0.6370
8.2.2. Gsirea zerourilor
Funcia fzero permite gsirea zerourilor unei funcii (este vorba de fapt de o ecuaie c
u o
singur necunoscut).
Dac se d un punct de plecare x0 pentru procedura de cutare, fzero va cuta un interva
l n
jurul acestui punct n care funcia schimb semnul. Dac un astfel de interval este gsit,
fzero
returneaz valoarea pentru care funcia schimb semnul (adic zeroul), iar dac un astfel
de
interval nu este gsit returneaz NaN.
Alt variant permite cutarea ntr-un interval specificat de utilizator.
Exemplu: Gsirea unui zerou al funciei nelin n apropiere de -0.2:
a = fzero('nelin',-0.2)
a =
-0.1316
Pentru verificare evalum funcia n punctul -0.1316 i gsim ntr-adevr o valoare foarte
aproape de zero:
nelin(a)
ans =
8.8818e -16
Se poate folosi i varianta cu interval de cutare precizat de utilizator.
112
n continuare este prezentat aceast variant plus folosirea unor opiuni suplimentare pe
ntru
afiarea detaliat a informaiilor despre procedur i a pailor:
options = optimset('Display','iter');
a = fzero('nelin',[-1 1],options)
Func-count
x
f(x)
Procedure
1
-1
-5.13779
initial
2
1
16
initial
3
-0.513876
-4.02235
interpolation
4
0.243062
71.6382
bisection
5
-0.473635
-3.83767
interpolation
6
-0.115287
0.414441
bisection
7
-0.150214
-0.423446
interpolation
8
-0.132562
-0.0226907
interpolation
9
-0.131666
-0.0011492
interpolation
10
-0.131618 1.88371e-007
interpolation
11
-0.131618 -2.7935e-011
interpoation
12
-0.131618 8.88178e-016
interpolation
13
-0.131618 -9.76996e-015
interpolation
Zero found in the interval: [-1, 1].
a =
-0.1316
8.3. Integrarea i derivarea numeric a funciilor
Integrarea i derivarea sunt concepte fundamentale n rezolvarea unui numr mare de
probleme n inginerie i n tiin. n multe situaii nu se pot da soluii analitice, deci
nevoie de aplicare a unor metode de integrare i derivare numeric .
8.3.1. Integrarea numeric
Aria subgraficului unei funcii f(x) poate fi determinat prin integrarea numeric, pr
oces care
se numete quadratur (quadrature). Pentru rezolvarea integrrii numerice n cazul monod
imensional exist urmtoarele funcii MATLAB:
quad, care folosete un algoritm de tip Simpson
quad8, care utilizeaz un algoritm de tip Newton
trapez, calculeaz integrala prin metoda trapezelor.
Observaie
Funciile quad, quad8 se utilizeaz, dac integrantul este exprimat sub forma unei fun
cii
analitice.
Funcia trapez, presupune c integrantul este dat prin valori numerice n noduri echid
istante ale intervalului de integrare.
Funciile quad, quad8 pot trata unele singulariti care se gsesc la unul din capete, ns
nu rezolv singulariti n interiorul intervalului.
Exemplu: Pentru integrarea funciei nelin ntre 0 i 1 folosim comanda
q = quad('nelin',0,1)
q =
29.8583
113
Funciile quad sau quad8 permit i alte argumente de intrare care specific eroarea to
lerat
pentru integrare i alte opiuni (a se vedea cu help).
Exemplu de integrare numeric:
Calculul lungimii unei curbe
Vom considera o curb dat de ecuaiile:
x(t)=sin(2t), y(t)= cos(t), z(t)=t,
cu: t[0,3]
O plotare tridimensional a acestei curbe poate fi obinut cu
t = 0:0.1:3*pi;
plot3(sin(2*t),cos(t),t)
10
8
6
4
2
0
1
0.5
0.5
0
1
0
-0.5
-1
-0.5
-1
Lungimea acestei curbe este dat de formula urmtoare:

( 4 cos(2t) + sin(t) + 1)dt


Pentru calculul lungimii trebuie integrat numeric integrala de mai sus. Pentru ac
easta se
creeaz mai nti o funcie MATLAB care descrie integrantul pe care o numim fcurba:
function f = fcurba(t)
f = sqrt(4*cos(2*t).^2 + sin(t).^2 + 1);
i apoi se integreaz cu ajutorul funciei quad:
lungime = quad('fc',0,3*pi)
lungime =
1.7222e+01
Exemplu
%Calculul integralelor cu metoda trapezelor
function z=trapez
x=.5:0.1:2.5; %limita inferioara: pasul: limita superioara
y=sin(x.^2); % integrandul
z=0.1*trapz(y); % se inmulteste cu pasul, implicit pasul fiind 1
disp('Valoarea aproximativa a integralei');
Apelarea se face scriind trapez, iar valoarea afiat este 0.3924 .
114
8.3.2. Derivarea numeric
Derivarea unei funcii f(x) este viteza de variaie a funciei n raport cu variabila x.
Interpretarea geometric a derivatei ntr-un punct este panta tangentei la graficul
funciei n punctual considerat. Punctele cu derivata nul (puncte critice) pot repre
zenta fie o regiune orizontal a funciei, fie un punct de maxim, sau un punct de mi
nim local al funciei.
Dac derivata a doua n punctul critic este pozitiv, atunci valoarea funciei n punctual
respective este un minim local, iar dac derivata a doua a punctului critic este
negativ, atunci
valoarea funciei n acel punct este un maxim local. De regul derivarea numeric ampli
fic
micile erori, uneori ndeprtndu-se semnificativ de la soluia analitic.
Funcia diff permite aproximarea derivatei numerice a unei funcii y(x) cu relaia:
dy=diff(y)./diff(x)
Exemplu
S se calculeze derivata funciei:
f(x)=x8-4x6+16x3+2x2+3x-11
pe intervalul [-5,5] utiliznd aproximarea cu diferene progressive.
Programul MATLAB este:
x=-5:0.1:5;
f=x.^8-4*x.^6+16*x.^3+2*x.^2+3*x-11;
df=diff(f)./diff(x);
xd=x(2:length (x));
plot(x,f,'m-');
hold on
plot(xd,df,'b-')
title('Aproximarea numerica a unui polinom');
legend('functia','derivata');
grid;
Se obine urmtorul grafic:
5
6
x 10
Aproximarea numerica a unui polinom
functia
derivata
4
2
0
2
4
6
5
0
5
Observaie
Folosind funcia diff se poate efectua derivarea numeric bazat pe polinomul de inter
polare Newton.
115
8.3.3. Aproximarea
gradientului
numeric
a
laplaceanului
i
a
Funcia MATLAB del2 calculeaz Laplaceanul discret n cinci puncte. Se apeleaz cu
sintaxa :
V=del2(U);
Funciile Matlab :
gradient aproximeaza gradientul unei funcii
quiver- reprezinta orientarea unui cmp de vectori
Exemplu
S se reprezinte grafic gradientul unui cmp de vectori asociat funciei:
z(x,y)=x*e-x*x-y*y
n domeniul [-2,2] X [-2,2].
Programul Matlab:
% Gradient
xp=-2:.2:2;
yp=-2:.2:2;
[x,y]=meshgrid(xp,yp);
z = x.*exp(-x.^2-y.^2);
[px,py] = gradient(z,.2,.2);
contour(x,y,z); hold on;
quiver(x,y,px,py,1.5,'go');
title('Reprezentarea grafica a gradientului unui camp de vectori');
grid on
hold off
Se obine urmtoarea reprezentarea grafic:
Reprezentarea grafica a gradientului unui camp de vectori
2
1.5
1
0.5
0
0.5
1
1.5
2
2
1.5
1
0.5
0
116
0.5
1
1.5
2
8.4. Funcii speciale
8.4.1. Ecuaia i funciile Bessel
Ecuaia diferenial:
x2y(x) + xy+(x22)y(x)=0, pentru x > 0 i =costat 0.
este ecuaia lui Bessel . Aceast ecuaie apare n rezolvarea unor probleme de cmp cu
simetrie cilindric.
Soluia general a acestei ecuaii difereniale pentru Z este :
y(x)=C1J(x)+C2 J-(x)
ude C1, C2 sunt constante reale este funcia Bessel de spea I i ordin .
Soluia general a ecuaiei Bessel pentru ==treg este :
y(x)=C1J(x)+C2 Yn(x)
unde C1, C2 sunt constante reale, iar Yn(x) este funcia Bessel de spea II i de ordi
n n.
Ecuaia diferenial:
x2y(x) + xy-(x2+2)y(x)=0, pentru x > 0 i =costat i pozitiv.
este cunoscut sub numele de ecuaia lui Bessel modificat.
Soluia general a acestei ecuaii difereniale pentru Z este :
y(x)=C1I(x)+C2 I-(x)
ude C1, C2 sunt constante reale, iar I este funcia Bessel modificat de spea I i ordi
n .
Soluia general a ecuaiei Bessel pentru ==treg este :
y(x)=C1In(x)+C2 Kn(x)
unde C1, C2 sunt constante reale, iar In i Kn sunt funciile Bessel modificate de
spea I i II i ordin n.
Sistemul MATLAB pune la dispoziie urmtoarele funcii:
Besselj=calculeaz funciile Bessel de spea I
Bessely=calculeaz funciile Bessel de spea II
Besseli=calculeaz funciile Bessel modificate de spea I
Besselk=calculeaz funciile Bessel modificate de spea II.
Exemplu
S se reprezinte grafic funciile Bessel de spea I i de ordin 1.
n urma executrii urmtorului program Matlab :
x=0:.25:20;
J=besselj(1,x);
plot(x,J);
grid
title('Functiile Bessel de speta I')
rezult graficul:
117
Functiile Bessel de speta I si ordin 1
0.6
0.5
0.4
0.3
0.2
0.1
0
0.1
0.2
0.3
0.4
0
5
10
15
20
Exem u
S se reprezinte grafic funciile Bessel modificate de spea I i ordin 1.
n urma executrii programului
x=0:.1:2;
N=besseli(1,x);
plot(x,N);
grid
title('Functiile Bessel modificate de speta I si ordin 1')
rezult graficul:
Functiile Bessel modificate de speta I si ordin 1
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2
0
0
0.5
1
1.5
2
8.4.2. Funcia Gamma
Funcia Gamma este definit de integrala:
(a)= t
e dt ,
aR
Dac argumentul a este ntreg , funcia Gamma este identic cu factorialul.
Funcia Matlab care calculeaz funcia (a)se apeleaz cu sintaxa:
G=gamma(a);
Funcia Gamma incomplet :
P(x,a)=
( )
t
e dt
118
x,aR, a > 0.
Se apeleaz cu funcia Matlab:
P = gammainc(x,a)
Argumentul x trebuie s fie real (scalar sau vector), iar a trebuie s fie scalar re
al i pozitiv.
Funcia gammaln returneaz logaritmul natural din valorile lui lui gamma, se apeleaz
cu
sintaxa :
Gl=gammaln(a);
8.4.3. Funcia Beta
Funcia Beta este descris de expresia:
B (z,w) = B(w,z) =
( ) ( )
(
)
Se apeleaz cu sintaxa :
B = beta(z,w)
iar funcia Beta incomplect se apeleaz cu sintaxa:
I =betainc(x,z,w)
Funcia Matlab betaln returneaz logaritmul natural din valorile lui beta i se
apeleaz cu sintaxa:
Bl=betaln(z,w)
Variabilele z i w pot fi vectori sau matrice de aceleai dimensiune.
Exemplu:
Dac tastm n linia de comanda:
>> format rat
>> beta((0:10)',3)
Se obine rezultatul:
ans =
1/0
1/3
1/12
1/30
1/60
1/105
1/168
1/252
1/360
1/495
1/660
8.4.4. Funcia eroare
Funcia eroare erf i complementara funciei eroare sunt cazuri speciale ale funciei Ga
mma incomplecte i sunt definite de relaiile:
Erf(x)=

e
dt
i
Erfc(x)=

119

dt
Relaia dintre funcia eroare i funcia Gamma incomplect este:
Erf(x)=P(x2,0.5), x 0.
Funciile erf i erfc se apeleaz cu sintaxele:
y=erf(x), y=erfc(x);
Inversa funciei eroare, erfinv, returneaz valoarea lui x pentru valori cunoscute a
le lui
y i se apeleaz cu sintaxa:
x=erfinv(y).
Valorile lui y trebuie s fie n intervalul [-1 1] x (-, ).
Pentru a calcula valoarea funciei eroare generalizat se utilizeaz secvena:
E=erf(y)-erf(x)
Argumentul x poate fi scalar, vector sau matrice, rezultatul fiind de aceleai dim
ensiuni.
8.4.5. Funcia de repartiie Laplace
Funcia densitii de probabilitate a repartiiei normale normate este definit de relaia:
f(z)=
e-

Exemplu
Dac z[-4,4] , f(z) reprezint densitatea de probabilitate cu repartiie normal pentru
care utilizm secvena Matlab:
z=-4:0.01:4;
f=1./(sqrt(2*pi))*exp(-z.^2/2);
plot(z,f); grid on
title('Densitatea de probabilitate cu repartitie normala normata')
se obine graficul:
Densitatea de probabilitate cu repartitie normala normata
0.4
0.35
0.3
0.25
0.2
0.15
0.1
0.05
0
4
3
2
1
0
1
2
3
4
Pentru calculul funciei de repartiie Laplace se folosete secvena Matlab:
F=trapz(z, 1./(sqrt(2*pi))*exp(-z.^2/2);
Limita de integrare - se va lua egal cu un numr ntre -5 i -10, fr ca prin aceasta s
introduc erori semnificative.
120
CAPITOLUL 9.
ELEMENTE DE TEORIA PROBABILITILOR
I STATISTIC MATEMATIC
9.1. Legi de probabilitate de tip discret
Menionez c urmtoarele definiii ,teoreme, proprieti i unele din programe sunt preluat
din lucrarea [1] cu acceptul autorului.
Definiie. Dac variabila aleatoare X este de tip discret, adic are un numr cel mult
numrabil de valori, fie acestea xiR, iI,atuci funcia de repartiie F ataat este o
funcie n scar i este dat prin:
F(x)= pi, x R
unde pi= P (X=xi).
Definiie. Numim distribuia sau repartiia variabilei aleatoare X de tip discret tabl
oul:
X=(xi,pi) unde xi R , iI,sut valorile pe care le ia variabila aleatoare X ia valo
area xi,
adic pi= P (X=xi ), pentru fiecare iI. Evenimentele (X=xi ), formeaz un sistem
complet de evenimente, dac pi = 1.
Forma cea mai general a unei variabile aleatoare aparinnd unei clase se numete lege
de
probabilitate de tip discret.
n MATLAB distribuia variabilei aleatoare X poate fi precizat prin funcia de
probabilitate pdf,sau prin funcia de repartiie cdf.
Funcia pdf
Dou moduri de apel pentru calculul valorilor funciei pdf avem :
P=pdf(legea,x,par1,par2,)
P=umef(x,par1,par2,)
ude legea este un ir de caractere predefinit pentru fiecare din legile de probab
ilitate
definite n Statistic toolbox, numef este un un ir de caractere din care ultimele
trei sunt pdf iar cele ce le preced sunt cele care dau numele predefinit al legi
i de
probabilitate ( ca i cele din parametrul legea).
n urma executrii uneia din cele dou instruciuni, se calculeaz matricea p a
probabilitilor legii precizat prin parametrii legea respectiv numef corespunztoare
valorilor date prin matricea X i avnd parametrii dai prin matricele: par1,par2, ...
Aceste matrici trebuie s fie de aceleai dimensiuni, cu excepia c dac unele din acetia
sunt scalari, caz n care acetia se extind la matricele constante de aceleai dimensi
uni cu
celelate i care iau valorile scalarilor corespunztori.
Funcia cdf
Exist dou forme de apel:
Cp=cdf(legea,x,par1,par2,)
Cp= numef(x,par1,par2,)
unde legea este un ir de caractere predefinit pentru fiecare din legile de probab
ilitate
definite n Statistic toolbox, numef este un un ir de caractere din care ultimele
trei sunt cdf, iar cele ce le preced sunt cele care dau numele predefinit al leg
ii de
probabilitate ( ca i cele din parametrul legea).
121
n urma executrii uneia din cele dou instruciuni, se calculeaz matricea cp a probabili
tilor cumulate legii precizat prin parametrii legea respectiv numef corespunztoare
valorilor date prin matricea X i avnd parametrii dai prin matricele: par1,par2,
...Aceste matrici trebuie s fie de aceleai dimensiuni, cu excepia c dac unele din
acetia sunt scalari, acetia se extind la matricele constante de aceleai dimensiuni
cu celelate
i care iau valorile scalarilor corespunztori.
Urmtoarele legi de probabilitate de tip discret au implementate funcii Matlab:
Legea lui Bernoulli, Legea uniform discret (unid,Legea binomial(bino),
Legea hypergeometric (hyge, Legea lui Poisson (poiss),
Legea binomial negativ (nbin),Legea geometric (geo).
Exemplu
S se scrie un program Matlab care s reprezinte grafic funcia de probabilitate (prin
puncte
i bare) i funcia de repartiie ale legii de probabilitate binomial (bino).
Execuia programului pentru n=10 p=0.6 :
n=input('n=');
p=input('p=');
x=0:n;
f=pdf('bino',x,n,p);
subplot(1,3,1),plot(x,f,'o')
axis([-0.5 n+0.5 0 max(p)+0.02])
title('Functia de probabilitate')
subplot(1,3,2),bar(x,f)
axis([-0.5 n+0.5 0 max(p)+0.02])
title('Functia de probabilitate')
f=cdf('bino',x,n,p);
subplot(1,3,3),stairs(x,f)
title('Functia de repartitie')
axis([0 n 0 1])
realizeaz graficele urmtoare:
Functia de probabilitate
Functia de probabilitate
0.6
0.6
0.5
0.5
0.4
0.4
Functia de repartitie
1
0.9
0.8
0.7
0.6
0.3
0.3
0.2
0.2
0.1
0.1
0.5
0.4
0.3
0.2
0.1
0
0
5
10
0
0 1 2 3 4 5 6 7 8 910
122
0
0
5
10
9.2. Legi de probabilitate continue
Definiie Fie variabila aleatoare X avnd funcia de repartiie F. Vom spune c X este
variabil aleatoare absolut continu, dac funcia de repartiie F este absolut, sau echiv
alent
se poate reprezenta sub forma:
F(x)= f(t) dt,
Pentru xR, funcia f: RR, numindu-se densitatea de probabilitate a variabilei
aleatoare X.
Definiie Fie vectorul aleator X avnd funcia de repartiie F. Spunem c X este vector
aleator de tip continuu, dac funcia de repartiie F se poate reprezenta sub forma:
F(x)=F(x1,x2, ...xn)=

f(t1, t2, tn) dt1 dtn


xR, funcia f: RnR, numindu-se densitatea de probabilitate a vectorului aleator X.
Forma cea mai general a densitii de probabilitate a unei variabile aleatoare din cl
asa
respectiv, ne d o lege de probabilitate de tip continuu.
Funciile pdf, cdf prezentate n paragraful anterior se utilizeaz i n acest caz.
Urmtoarele legi de probabilitate continue clasice pentru care sistemul Matlab are
implementate funcii sunt:
Legea uniform (unif), Legea normal (norm),Legea lognormal(logn),
Legea gamma(gam), Legea exponenial(exp), Legea beta,Legea Weibull
(weib)Legea Rayleight(rayl), Legea t (Student) necentrat.
Exemplu
S se reprezinte pe acelai grafic, densitile de probabilitate pentru legile normal i g
mma.
Executnd programul pentru a=100 i b=10 obinem:
Codul Matlab
clf; a=input('a=');b=input('b=');
m=a*b;s=b*sqrt(a);
x=m-3*s:0.01:m+3*s;
fn=pdf('norm',x,m,s);
fg=pdf('gam',x,a,b);
plot(x,fn,'k-.',x,fg,'r-')
grid
legend('Legea normala','Legea gamma')
rezult graficul:
3
4.5
x 10
Legea normala
Legea gamma
4
3.5
3
2.5
2
1.5
1
0.5
0
700
800
900
1000
123
1100
1200
1300
9.3. Legi de probabilitate continue statistice
Legile de probabilitate continue statistice denumite astfel n sistemul Matlab pri
n pachetul de
programe Statistics toolbox, deoarece utilizarea este strns legat de statistic.
Matlab-ul are implementate funcii pentru urmtoarele legi de probabilitate:
Legea t (Student) (t), Legea
Hemert-Pearson (chi2),Legea F(FisherSnedecor)(f),Legea F(Fisher-Snedecor) necent
rat (ncf).
Exemplu
S se scrie un program Matlab care s reprezinte pe aceai figur graficele densitilor de
probabilitate pentru legile normal i chi2.
Prin execuia programului Matlab pentru n=10:
clf;
n=input('n='); s=sqrt(2*n);
x=n-3*s:0.01:n+3*s;
fn=normpdf(x,n,s);fchi=chi2pdf(x,n);
plot(x,fn,'b-.',x,fchi,'r-')
grid
legend('Legea normala','Legea chi',2);
se obine graficul:
0.1
0.09
Legea normala
Legea chi
0.08
0.07
0.06
0.05
0.04
0.03
0.02
0.01
0
5
0
5
10
15
20
25
9.4. Funcia Matlab disttool
Funcia (comanda) disttool este un program demonstrativ. Lansarea n execuie a
acestuia se face din linia de comand :
>> disttool
n urma creia se produce o fereastr grafic interactiv ( demonstrativ) privind funcia
repartiie cdf i funciile de probabilitate pdf.
124
9.4.1. Funcia Matlab normspec
Funcia normspec reprezint grafic densitatea de probabilitate a legii normale de pa
rametrii
mu i sigma i umbrete aria mrginit de dreptele perpendiculare pe axa absciselor ce tre
c
prin punctele axei precizate prin cele dou componente ale vectorului sp, curba ce
reprezint
grsficul densitii de probabilitate i axa absciselor.
Parametrul p, dup execuia funciei, conine valoarea ariei umbrite, adic probabilitatea
ca
variabila aleatore s ia valori n intervalul precizat prin sp.
Moduri de apel:
Normspec(sp,mu,sigma)
P=normspec(sp,mu,sigma)
Exemplu de program Matlab care reprezint grafic densitatea de probabilitate a leg
ii
normale bidimensionale pentru m1=m2=0,s1=1,s2=2 i r=-0.5.
%date de intrare
clf,clear
m1=input('mu1=');% in workspace se introduce 0
m2=input('mu2=');% in workspace se introduce 0
s1=input('sigma1=');
s2=input('sigma2=');
r=input('r(-1<r<1):');
x=m1-3*s1:.2:m1+3*s1;
y=m2-3*s2:.2:m2+3*s2;
%trasare grafic
[X,Y]=meshgrid(x,y);
Z=1/(2*pi*s1*s2*sqrt(1-r^2))*exp(-1/(2*(1-r^2))...
*((X-m1).^2/s1^2-2*r*(X-m1).*(Y-m2)/(s1*s2)...
+(Y-m2).^2/s2^2));
mesh(X,Y,Z)
title('Legea normala bidimensionala');
Se obine graficul:
125
Legea normala bidimensionala
0.1
0.08
0.06
0.04
0.02
0
10
5
4
2
0
0
5
2
10
4
9.5. Caracteristici numerice
Definiie Numim valoare medie sau speran matematic caracteristica numeric

E(x) = xdF(x)
Unde integrala Stieltjes se impune s fie absolut convergent pentru ca valoarea med
ie s
existe.
Definiie Numim dispersie sau varian caracteristica numeric ataat variabilei aleatoare
X definit prin:
Var(x) = E [(X-E(X))2]
Definiie Dac se consider vectorul aleator bidimensional (X,Y) numim covarian sau
corelaie caracteristica numeric :
Cov(X,Y)=E[(X-E(X))(Y-E(Y))]
Respectiv coeficient de corelaie, raportul :
( , )
r(X,Y) =
( )

( )
Sistemul Matlab dispune de proceduri pentru calcul valorilor medii i ale dispersi
ilor legilor
de probabilitate implementate prin Statistics toolbox [15].
Se apeleaz astfel:
[m,v]=numef(x,par1,par2,...)
Unde numef este un ir de caractere, care definesc legea de probabilitate din care
ultimele
patru sunt stat, iar cele ce le preced sunt cele care dau numele legii.
n urma executrii instruciunii, se calculeaz matricile m i v ale valorilor medii i ale
dispersiilor pentru legea considerat, avnd parametrii precizai prin matricile
par1,par2,...
Aceste matrice trebuie s fie de aceleai dimensiuni, cu excepia c dac sunt scalari, ac
etia
se extind la matricele constante i care iau valorile scalarilor corespunztori.
Definiie Numim funcie caracteristic ataat variabilei aleatoare X, respectiv vectorulu
i
aleator X, funcia definit prin:
(t)=M(eitX), tR
Utilitatea funciei caracteristice este dat de netezimea ei, care este superioar fun
ciei de repartiie, acesta din urm putnd fi discontinu, pe cnd funcia caracteristic
uniform
continu. n plus, pe baza formulei de inversiune, exist o caracterizare complet a dis
tribuiei unei variabile aleatoare sau a unui vector aleator cu ajutorul funciei ca
racteristice.
126
Definiie Fie variabila aleatoare X . Numim moment iniial respectiv moment centrat
de
ordin n, caracteristicile numerice:
= E(Xn),n= E [(X-E(X)n]=E[(X-1)].
Defiiie Fie variabila aleatoare X, care are funcia de repartiie F. Numim median
caracteristica numeric m, care
satisface condiiile:
P ( X m ) P ( X m )
Avnd n vedere proprietile condiiile de mai sus se pot scrie echivalent:
F (m-0 ) F (m)
Definiie Fie variabila aleatoare X, care are funcia de repartiie F. Numim cuantil de
ordin
(0,1) caracteristica numeric x care satisface condiiile :
P( X x) 1-, P( X m)
Ca i n cazul medianei aceste condiii se pot scrie echivalent sub forma :
F (x0 ) F (x)
Funcia Matlab icdf
Pentru calculul cuantilelor este necesar inversarea funciei de repartiie. Sistemul
Matlab
prin Statistics toolbox dispune de funcii pentru inversarea funciei de repartiie al
e legilor de
probabilitate implementate.
Apelarea acestor funcii se poate face cu una din formele:
x=icdf(legea,P,p1,p2, )
x=numef(P,p1,p2, ...)
unde legea este un ir de caractere predefinit pentru fiecare din legile de probab
ilitate
disponibile n Statistics toolbox, numef este un ir de caractere din care ultimele
trei sunt
inv, iar cele ce le preced sunt cele care dau numele predefinit al legii de prob
abilitate (ca
i parametrul legea).
n urma executrii uneia din cele dou instruciuni, se calculeaz matricea x a cuantilelo
r
legii precizat prin parametrii legea, respectiv numef, corespunztoare
valorilor date prin matricea P i avnd parametrii dai prin matricele par1,par2,...
Aceste matrice trebuie s fie de aceleai dimensiuni, cu excepia c, dac sunt scalari, c
az n
care acetia se extind la matricele constante i care iau valorile scalarilor coresp
unztori.
Exemplu
S se scrie un program Matlab care calculeaz mediana pentru legea uniform discret i
reprezint acest lucru pentru dou valori distincte ale parametrului N, precum i cuar
tilele
legii normale.
Executarea programului Matlab urmtor pentru N=5 i N=6,respectiv mu=0,sigma=2,
clf,clear
N1=input('N1=');N2=input('N2=');
m=input('mu=');s=input('sigma=');
xu1=0:N1+1;yu1=unidcdf(xu1,N1);
xu2=0:N2+1;yu2=unidcdf(xu2,N2);
xn=m-3*s:0.01:m+3*s;yn=normcdf(xn,m,s);
me1=icdf('unid',1/2,N1);
me2=icdf('unid',1/2,N2);
Q=icdf('norm',[1/4,2/4,3/4],m,s);
subplot(3,1,1),stairs(xu1,yu1);
set(gca,'Xlim',[0,N1+1]),set(gca,'xtick',me1)
set(gca,'xticklabel',me1),hold on
plot([0,me1],[1/2,1/2],'k:',me1,1/2,'o')
127
plot([me1,me1],[0,1/2],'k-.')
subplot(3,1,2),stairs(xu2,yu2);
set(gca,'Xlim',[0,N2+1]),set(gca,'xtick',me2)
set(gca,'xticklabel',me2),hold on
plot([0,me2],[1/2,1/2],'k:',me2,1/2,'o')
plot([me2,me2],[0,1/2],'k-.')
%%%%
subplot(3,1,3),
plot(xn,yn,[Q(1),Q(2),Q(3)],[1/4,2/4,3/4],'o')
set(gca,'Xtick',[Q(1),Q(2),Q(3)])
set(gca,'xticklabel',[Q(1),Q(2),Q(3)]),hold on
X=[m-3*s,Q(1);m-3*s,Q(2);m-3*s,Q(3)];
plot(X,[1/4,1/4;1/2,1/2;3/4,3/4],'k:')
plot([Q(1),Q(1)],[0,1/4],'k-')
plot([Q(2),Q(2)],[0,2/4],'k-')
plot([Q(3),Q(3)],[0,3/4],'k-')
are ca rezultat :
1
0.5
0
3
1
0.5
0
3
1
0.5
0
1.34898
0
1.34898
9.6. Statistic Matematic
Statistica matematic se ocup cu descrierea i analiza numeric a fenomenelor de mas,
dezvluind particularitile lor de volum, structur, dinamic, conexiune, precum i
regularitile sau legile care le guverneaz. Recomand lucrarea de referin [28].
Etapele principale ce se disting n cercetarea statistic a unui fenomen aleator se
pot
considera ca fiind:
a) Definirea (concepia) obiectului studiat, care conine definirea unitilor statistic
e,
conceperea chestionarului (ntrebrilor), planificarea culegerii datelor.
b) Observarea fenomenului (culegerea datelor) conform criteriilor stabilite la e
tapa
precedent.
c) Descrierea statistic, ce cuprinde reprezentarea grafic a datelor statistice,
sistematizarea acestora, precum i calcularea indicatorilor numerici pentru punere
a
n eviden a unor proprieti i pentru sugerarea unor ipoteze referitoare la legile
care guverneaz fenomenul cercetat.
d) Modelarea probabilistic a fenomenului cercetat, care are ca obiectov principal
cercetarea fenomenului folosind ca instrument de lucru teoria probabilitilor.
128
9.6.1. Concepte de baz ale statisticii
Definiie Numim colectivitate (populaie) o mulime C de elemente cercetat din punct de
vedere auneia sau mai multor proprieti, elementele componente numindu-se indivizi
sau
uniti statistice.
Definiie Numim caracteristic sau variabil a colectivitii C proprietatea supus
investigrii statistice relativ la C.
O caracteristic X ce ia o mulime cel mult numrabil de valori o numim caracteristic de
tip discret, iar dac ia valori dintr-un interval finit sau infinit o numim caract
eristic de tip
continuu.
Modurile de culegere i colectare a datelor statistice utilizate sunt:
a) Observarea total (exhaustiv, recensmnt) cnd toi indivizii colectivitii C sunt
nregistrai.
b) Observarea parial (sondaj,selecie), cnd dup criterii bine stabilite sunt
nregistrai o parte din indivizii colectivitii C, numim eantion sau selecie.
c) Observarea curent, cnd nregistrarea indivizilor se efectueaz odat cu apariia
(producerea lor).
d) Observarea periodic, cnd nregistrarea fenomenului se efectueaz la intervale de
timp stabilite.
9.6.2. Funcii Matlab
Funcia random
Instruciunile prin care sunt generate numere aleatoare ce urmeaz una din legile de
probabilitate recunoscute de sistemul MATLAB prin Statistic toolbox sunt de forma
:
X=random(legea,par1,par2,,m,)
X=umef(par1,par2,...,m,)
ude legea este un ir de caractere predefinit pentru fiecare din legile de probabi
litate
disponibile prin Statistic toolbox, nume f este un ir de caractere din care ultim
ele trei sunt
rnd,iar cele care le preced sunt cele care dau numele predefinit al legii de pro
babilitate.
Executarea uneia din cele dou forme ale instruciunii, are ca efect generarea matri
cei X , cu
m linii i n coloane, de numere aleatoare ce urmeaz legea de probabilitate corespun
ztoare
cu parametrii precizai prin: par1,par2,...
Aceste matrici trebuie s fie de aceleai dimensiuni cu matricea X, cu excepia c dac
unele din acetia sunt scalari, caz n care acetia se extind la matricele constante d
e aceleai
dimensiuni cu celelate i care iau valorile scalarilor corespunztori. Dac toi paramet
rii sunt
scalari, cnd lipsesc parametrii m i n se genereaz un numr aleator, cnd lipsete
n,atunci trebuie ca m s fie un vector cu dou componente, care conine dimensiunile
matricei X.
Funciile mvnrd i mvtrnd
Funciile mvnrd i mvtrnd sunt singurele funcii din Statistic toolbox prin care se
genereaz legi de probabilitate multidimensionale, respectiv legile normal i legea S
tudent
(t). Apelurile se fac:
X=mvnrnd(mu,v,m)
X=mvtrnd(r,n,m)
129
n primul caz, sunt generai m vectori aleatori ce urmeaz legea normal multidimensiona
l,
avnd vectorul valorilor medii mu i matricea covarianelor v (matrice pozitiv
definit).
Cei m vectori aleatori generai sunt obinui n matricea X care va vea m linii, iar
numrul coloanelor este dat de dimensiunea legii de probabilitate i care trebuie s c
oincid
cu lungimea vectorului mu i cu ordinul matricei ptrate v.
n al doilea caz vor fi generai m vectori aleatori ce urmeaz legea Student
multidimensional, parametrul r reprezint matricea coeficienilor de corelaie, care es
te
matrice pozitiv definit avnd pe diagonala principal toate elementele 1, iar paramet
rul n
reprezint numrul gradelor de libertate, putnd fi un scalar sau un vector de lungime
m.Trebuie remarcat faptul c o linie a matricei X se obine dintr-un vector aleator
ce
urmeaz legea normal multidimensional, avnd valoarea medie 0 i matricea covarianelor
dat prin parametrul r, ale crui componente se mpart la un numr aleator ce urmeaz
legea 2.
Funiile rand , randn, randperm
Sistemul Matlab de baz conine dou funcii pentru generarea de numere aleatoare ce
urmeaz legea uniform U(0,1) prin rand, respectiv legea normal standard N(0,1),
prin randn.
Unele situaii impun regsirea unui anumit ir de numere aleatoare generat prin aceste
dou
legi avem la dispoziie ceea ce se numete starea generatorului.
Obinerea strii generatorului la un moment dat se face astfel:
S=rand(state);
S=randn(state );
Pentru reiniializarea sau schimbarea strii generatorului se poat utiliza parametru
l
sum(100*clock)care este resetat la fiecare apel n funcie de tipul calculatorului.
Generarea unei permutri a primelor n numere naturale se realizeaz prin instruciunea
Perm=randperm(n.
9.6.3. Tabele statistice
Definiie Numim tabel statistic (simplu, nesistematizat) un tablou n care nregistrril
e sunt
trecute n ordinea apariiei lor.
Definiie Numim tabel statistic (sistematizat) relativ la caracteristica X de tip
discret,
tabloul n care sunt trecute valorile distincte ale caracteristicii n care sunt tre
cute valorile
distincte ale caracteristicii i frecvenele cu care au aprut aceste valori.
Definiie Fie caracteristica de tip continuu X, care ia valori n intervalul (a, b)
descompus n
diferite intervale disjuncte, numite clase, prin punctele care satisfac relaiile:
a=a0a1...an=b
Numim tabel statistic (sistematizat) relativ la caracteristica X, tabloul ce coni
ne clasele
caracteristicii i frecvenele cu care au aprut aceste clase.
Definiie Numim amplitudinea clasei definit de intervalul [ai, ai-1] lungimea acest
ui
interval, iar frecvena relativ a clasei xi , raportul pi =
Definiie Fie colectivitatea C relativ la care sunt cercetate dou caracteristici X i
Y. Numim
tabel de contingen, un tablou care conine clasele caracteristicilor X i respectiv Y,
mpreun cu frecvenele absolute ale acestor clase.
130
9.6.4. Funcii Matlab
Obinerea de tabele sistematizate, n Matlab este posibil cu ajutorul unor funcii din
Statistic
toolbox.
Funciile tabulate, crosstab, caseread, casewrite, tblread, tblwrite
Prin apelul funciei:
t = tabulate (x)
se obine n t (n lipsa acestui argument pe ecran ) un tabel statistic sistematizat a
vnd trei
coloane care conine pe prima coloan conine valorile distincte x , a doua frecvenele
absolute ale acestor valori distincte, iar ultima reprezint frecvenele relative n p
rocente.
Prin executarea funciei:
t = crosstab(x,y,z, ...)
se obine pe ecran respectiv n t un tabel statistic sistematizat cu attea intrri ci ve
tori
exist. Dac sunt doi parametrii x,y se obine tabelul de contingen.
Pentru complectarea tabelului de contingen se utilizeaz funciile Matlab:
caseread, casewrite,tblread, tblwrite.
Apelul :
casewrite(obs,file)
are ca efect scrierea datelor din matricea obs de tip caracter n fiierul cu numele
file.
Citirea datelor se face prin apelul:
obs=caseread(file)
i care ca efect citirea datelor din fiierul cu numele file n matricea obs de tip
caracter.
Apelul :
tblwrite(t,va,obs, file)
are ca efect scrierea n fiierul cu numele file a matricelor va,obs de tip caracter i
a
datelor din matricea numeric t.
Prin apelul:
[t,va,obs]=tblread(file)
Se va citi din fiierul filea matricelor va,obs de tip caracter i a datelor din matri
cea
numeric t.
Exemplu [1,pag 126]
S se scrie un program Matlab care genereaz N vectori aleatori ce urmeaz legea norma
l
bidimensional, dup care s se construiasc tabelul de corelaie cu m clase n raport cu p
ima
variabil, respectiv n clase n raport cu a doua variabil.
Codul Matlab este:
clear,mu(1)=input('m1=');mu(2)=input('m2=');
v(1,1)=input('sigma1^2=');
v(2,2)=input('sigma1^2=');
v(1,2)=input('Cov(X,Y)=');v(2,1)=v(1,2);
N=input('N=');m=input('m=');n=input('n=');
if det(v)<=0
error('Matricea v nu este pozitiv definita ');
end
X=mvnrnd(mu,v,N);xx=X(:,1);yy=X(:,2);
xmin=min(xx);xmax=max(xx);
ymin=min(yy);ymax=max(yy);
cx=xmin:(xmax-xmin)/m:xmax;
cy=ymin:(ymax-ymin)/n:ymax;
131
for k=1:N
for i=1:m-1
if(cx(i)<=xx(k)) &(xx(k)<cx(i+1))
x(k)=i;
end
end
if (cx(m)<=xx(k))&(xx(k)<cx(m+1))
x(k)=m;
end
for j=1:n-1
if(cy(j)<=yy(k))&(yy(k)<cy(j+1))
y(k)=j;
end
end
if (cy(n)<=yy(k))&(yy(k)<cy(n+1))
y(k)=n;
end
end
t=crosstab(x,y);
disp(t);
Pentru: m1=5, m2=10, sigma1^2=2, sigma1^2=3, Cov(X,Y)=1, N=100, m=6, n=4 se obine
tabelul:
1
0
0
0
0
0
1
3
0
0
0
3
5
4
0
0
2
13
8
2
0
4
15
8
1
0
1
7
12
2
0
0
3
5
0
9.6.5. Reprezentri grafice
Vom da n continuare cteva din cele mai importante definiii, necesare acestui paragr
af care
se pot regsii de exemplu n [1, pag: 129-228].
Definiie: Numim diagram prin batoane (bare) a unei distribuii statistice X de tip
discret, reprezentarea grafic ntr-un sistem de axe rectangulare a segmentelor (bat
oanelor)
date prin {(xi, y)/ 0 y fi } , i=1,n, > 0 fiind un factor de proporionalitate, iar
fi este
frecvena absolut a valorii xi.
Definiie Numim diagram cumulativ (ascendent) a unei distribuii statistice X de tip
discret, linia poligonal care unete punctele de coordonate (xi, Fi ), unde Fi este
frecvena
cumulat (ascendent) ataat valorii xi , iar > 0 fiind un factor de proporionalitate.
Definiie Numim histograma unei distribuii statistice X de tip continuu, diagrama o
binut
prin construirea de dreptunghiuri avnd drept baze clasele distribuiei statistice i nl
mile
astfel considerate nct ariile dreptunghiurilor fie proporionale cu frecvenele clasel
r.
Dac factorul de proporionalitate este 1/N , atunci se obine histograma frecvenelor r
elative. Vom nota cu fs funcia n scar ce delimiteaz aceste dreptunghiuri.
Definiie Numim poligonul frecvenelor al unei distribuii statistice X de tip continu
u,
poligonul obinut prin unirea punctelor de coordonate (xi, ifi), i=1,n, unde i fiind
un
factor de proporionalitate, iar fi este frecvena clasei xi.
Definiie Numim diagrame integrale (cumulative) ale frecvenelor cumulate ascendente
,
respectiv descendente, relative la distribuia statistic de tip continuu liniile po
ligonale
obinute prin unirea punctelor de coordonate (k ,Fk) ,respective: (k ,Fk), k=1,2,n.
132
Definiie Numim nor statistic ataat caracteristicilor X i Y, punctele din plan obinut
e prin
reprezentarea grafic a datelor primare i este utilizat pentru observarea formei le
gturii
funcionale care exist ntre cele dou caracteristici.
Funcii Matlab pentru reprezentarea grafic a datelor statistice
Reprezentrile grafice pentru distribuia statistic a unei caracteristici (variabile)
de tip continuu se obin prin utilizarea funciilor plot,bar,hist,histc.
Funciile scatter, scatter3, gscatter
Primele dou realizeaz norului statistic n cazul bidimensional (respectiv tridimensi
onal),
iar a treia este disponibil n Statistic toolbox, dar n plus reprezint norul statisti
c n cazul
bidimensional pe grupe de puncte.
Exemplu
S se scrie un program Matlab care genereaz n vectori aleatori ce urmeaz legea norma
l
bidimensional i n numere aleatoare ce urmeaz legea uniform discret.
Folosind aceste date s se reprezinte norul vectorilor aleatori bidimensionali, ef
ectund gruparea conform numerelor aleatoare uniforme generate.
Codul Matlab
clear,mu(1)=input('m1=');mu(2)=input('m2=');
v(1,1)=input('sigma1^2=');
v(2,2)=input('sigma1^2=');
v(1,2)=input('Cov(X,Y)=');v(2,1)=v(1,2);
if det(v)<=0
error('Matricea v nu este pozitiv definita ');
end
N=input('N(parametrul legii uniforme)=');
n=input('n=');X=mvnrnd(mu,v,n);
x=X(:,1);y=X(:,2);
g=unidrnd(N,n,1);
gscatter(x,y,g,'b','o*.+')
grid
title('Nor statistic pe grupe')
Pentru valorile de intrare : m1=5, m2=10, sigma1^2=2, sigma1^2=3,Cov(X,Y)=-1, N(
parametrul legii uniforme)=4,n=25 se
obine graficul:
Nor statistic pe grupe
13
1
2
3
4
12
11
y
10
9
8
7
6
5
3
3.5
4
4.5
5
5.5
x
133
6
6.5
7
7.5
9.6.6. Funcia randtool
Aceasta este o funcie demonstrativ pus la dispoziie de Matlab care dup ce se lanseaz
execuie prin comanda:
>> randtool
produce o fereastr grafic intercativ (demonstrativ) privind generarea numerelor alea
toare
i ilustrarea acestora cu histograme. Fixarea legii de probabilitate n scop demonst
rativ se
face prin alegerea din meniul legilor de probabilitate situat n partea stng sus a a
ferestrei,
iar volumul numerelor aleatoare, ce urmeaz a fi generate, se precizeaz prin introd
ucerea
acestuia n fereastra din partea dreapt sus. Limitele pentru parametrii legii de pr
obabilitate
considerate pot fi precizate prin introducerea acestora n ferestrele considerate.
Activarea butonului output are ca effect salvarea numerelor aleatoare ans sau n v
ariabila precizat de utilizator, iar butonul resample permite repetarea generrii d
e numere
aleatoare cu acelai volum i aceai parametric.
Funciile pie, pie3
Aceste funcii realizeaz reprezentarea datelor prin sectoare circulare n plan, respe
ctive n
spaiu.
Exemplu
S se scrie un program Matlab care genereaz n numere aleatoare ce urmeaz legea unifo
rm
discret, construiete tabelul sistematizat, dup care reprezint datele sistematizate f
olosind
funciile pie, pie3.
Codul Matlab
n=input('n=');N=input('N=');
x=unidrnd(N,1,n);
134
t=tabulate(x);
d=length(t(:,3));
ex=zeros(1,d);
ex(1)=1;
subplot(2,1,1), pie(t(:,3)/100,ex)
subplot(2,1,2), pie3(t(:,3)/100,ex)
colormap winter
Pentru n=50, N=4 obinem graficul:
18%
36%
26%
20%
18%
26%
36%
20%
9.6.7. Parametrii distribuiilor statistice
Parametrii statici ce msoar tendina
Definiie
Media aritmetic a distribuiei statistice a caracteristicii X este dat prin:
Xnm =
Definiie
Media geometric a distribuiei statistice a caracteristicii X este dat prin:
logXnm =
log
Definiie
Media armonic a distribuiei statistice a caracteristicii X este dat prin:
Xnh =

ntre cele trei medii are loc ingalitatea :


Media armonic Media geometric Media aritmetic
Funciile mean, geomean , harmean, trimmean, median
Matlabul conine funcia mean, iar Statistic toolbox cele dou funcii geomean
i hartmean i au ca efect calculul mediilor corespunztoare pentru un vector dat x, i
ar
dac x este o matrice are ca efect calculul mediilor pentru fiecare coloan a matric
ei.
135
Funcia trimean are ca efect calculul mediei aritmetice a vectorului x, dup ce au f
ost
eliminate cele mai mici p% componente, respectiv p% cele mai mari elemente, iar
dac x
este o matrice are ca efect calculul mediilor pentru fiecare coloan a matricei.
Apelul este:
M=trimean(x,p)
Definiie
Numim mediana distribuiei statistice a caracteristicii X, valoarea numeric m care m
parte
datele statistice ordonate cresctor n dou pri.
Funcia median ale sistemului de baz Matlab are ca efect calculul medianei corespun
ztoare pentru un vector dat x, iar dac x este o matrice are ca efect calculul medi
ilor pentru
fiecare coloan a matricei.
Parametrii statistici ce msoar dispersia
Statistic toobox conine funcia prctile care calculeaz pentru componentele vectorulu
i
x, dup ce acesta a fost ordonat cresctor, centilele precizate prin parametru p car
e conine
unul sau mai multe numere ntregi de la 1 la 99.
Definiie
Numim moment de ordin k vk a distribuiei statistice a caracteristicii X, valoarea
numeric :
Vk= p x
Definiie
Numim amplitudine (interval de variaie) a a distribuiei statistice a caracteristic
ii X,
valoarea numeric:
=xmax-xmin
Iar abatere medie (absolut) a distribuiei statistice a caracteristicii X valoarea
numeric:
= p | xk x|
une: x=x .
Definiie
Numim moment centrat de ordin k vk a distribuiei statistice a caracteristicii X,
valoarea
numeric :
k = (xi x)k
Funcia moment
Apelul funciei moment se poate face prin:
S = moment (x,k)
i are ca efect calculul, pentru un vector dat x a momentului centrat de ordin k,
iar dac x
este o matrice are ca efect calculul mediilor pentru fiecare coloan a matricei.
Funcia grpstats
Funcia grpstats din Statistic toolbox are ca efect determinarea unor
parametri statistici pentru date clasificate dup o anumit variabil de grupare.
Apelul se face astfel:
[ma,s,fr,nume]=grpstats(x,g)
unde g este un vector numeric sau de tip caracter, de aceai lungime cu numrul lini
ilor
matricei x i care permite gruparea datelor. n plus de mai calculeaz abaterile stand
ard s,
numrul datelor fr i etichetele nume pentru fiecare grup.
Exemplu [1, pag163]
S se scrie un program Matlab care genereaz 100 de numere aleatoare ce urmeaz legea
uniform discret , cu N=4. n matricea x cu 100 linii i 3 coloane, vor fi generate num
ere
136
aleatoare ce urmeaz legea normal, unde parametrul =1, iar parametrul este respecti
v
1,2 i 3 pentru cele trei coloane.
Apoi folosind vectorul de grupare g se calculeaz valorile medii, abaterile standa
rd,
frecvenele absolute i s se precizeze numele grupelor, pentru coloanele matricei x.
Codul Matlab
g=unidrnd(4,100,1);
t=1:3;
t=t(ones(100,1),:);
x=normrnd(t,1);
[ma,s,fr,nume]=grpstats(x,g);
fprintf(' Mediile pe grupe \n')
disp(ma)
fprintf(' Abaterile standard pe grupe \n')
disp(s)
fprintf(' Frecventele pe grupe \n')
disp(fr)
fprintf(' Etichetele pe grupe \n')
disp(nume)
n urma execuiei programului se obin urmtoarele rezultate:
Mediile pe grupe
1.0161 1.9818
0.9819 1.9379
1.0187 2.1575
1.4505 2.6751
3.1427
3.0399
3.0173
2.9265
Abaterile standard pe grupe
0.1442 0.1588 0.1948
0.1712 0.2311 0.1766
0.2323 0.2369 0.1876
0.3279 0.1940 0.3269
Frecventele pe grupe
34 34 34
26 26 26
24 24 24
16 16 16
Etichetele pe grupe
'1'
'2'
'3'
'4'
Funcia boxplot
Sistemul Matlab, prin Statistics toolbox , dispune de funcia boxplot, efectul exe
cutrii
ecstei instruciuni este reprezentarea grafic prin dreptughiuri cu prelungiri de se
gmente
pentru fiecare coloan a matricei x.
137
Exemplu
S se scrie un program Matlab care genereaz n vectori aleatori care urmeaz legea nor
mal bidimensional, n matricea x de tipul nX2, dup care folosind funcia boxplot,reprez
int
datele pentru prima variabil i respectiv pentru cea de a doua variabil.
Codul Matlab
clear,mu(1)=input('m1=');mu(2)=input('m2=');
v(1,1)=input('sigma1^2=');
v(2,2)=input('sigma2^2=');
v(1,2)=input('Cov(X,Y)=');v(2,1)=v(1,2);
if det(v)<=0
error('Matricea v nu este pozitiv definita ');
end
n=input('n=');
X=mvnrnd(mu,v,n);
boxplot(X);
grid
xlabel('Numarul variabilelor'),
ylabel('Valorile variabilelor')
n urma executrii programului cu valorile:
m1=10, m2=15, sigma1^2=4, sigma2^2=5, Cov(X,Y)=-3, n=100 se obine graficul :
Valorile variabilelor
20
15
10
5
1
2
Numarul variabilelor
9.6.8. Corelaie i regresie
Corelaia poate fi neleas ca fiind legtura care exist ntre o caracteristic dependent
una sau mai multe caracteristici independente, iar regresia este metoda prin car
e se stabilete
aceast legtur.
n acest paragraf ne vom limita prin a prezenta cteva definiii eseniale, iar pentru d
etalii
suplimentare se poate consulta [28].
138
Definiie
Numim moment de ordin (k1,k2) al distribuiei statistice a caracteristicii bidimen
sionale
(X,Y) valoarea numeric :

=
, unde
= este frecvena relativ a clasei (xi , )
,
Definiie
Numim moment centrat de ordin (k1,k2) al distribuiei statistice bidimensionale (X
,Y),
valoarea numeric :

,
=
=1 =1
(xi- )k1( yi- )
= =
= =


unde
f x
f y
Definiie
Numim coeficient de corelaie Pearson al distribuiei statistice bidimensionale (X,Y
) ,
raportul:
r=
11

Definiie
Numim valoare medie condiionat a distribuiei statistice a caracteristicii Y n raport
cu X
= xj, valoarea numeric:
i= (xi), respectiv valoarea medie condiionat a distribuie statistice a caracteristi
cii X n
raport cu Y= yj, valoarea numeric j= (yj).
Definiie
Curba de ecuaie y = f(x) pe care se situeaz punctele de coordonate (xi, i) , i=1,2
,...m se
numete curba de regresie a lui Y n raport cu X, iar curba de ecuaie x = g(y) pe car
e se
situeaz punctele de coordonate ( i,yj), j= 1,...,n se numete curba de regresie a l
ui X n
raport cu Y.
Pentru determinarea curbelor de regresie se poate folosii de exemplu metoda celo
r mai
mici ptrate [1, pag 172].
Observaie
Tipuri de curbe de regresie care pot fi liniarizate :
y =abx care prin logaritmare se liniarizeaz astfel: log y=log a+xlog b, lnd z=log
y,
A=log a, B=log b.
y = a/x+b (hiperbolic)
, care se liniarizeaz cu u = , v= ;
y =

y= a log x+b (logaritmic), care se liniarizeaz cu z=log x;


y=beax (exponenial), care se liniarizeaz lny= ln b+ ax, lund z= lny;
y=bxa care se liniarizeaz log y=logb+a logx lund u=logx, v=logy;
=a e-x+b, (caz particular al legturii logistice) care se liniarizeaz dac se ia
u = e -x, v =
Exist funcii ce nu pot fi liniarizate:
y = axb + clog x,
y = axb + ecx
y= a+ bx+ cedx
139
Definiie
Centrul de greutate al distribuiei statistice (X,Y) este punctul de intersecie a d
ou drepte de
regresie.
Funciile cov, corrcoef,isline,refline, gline, nlifit
Funcia cov calculeaz matricea covarianelor pentru matricea X, unde fiecare coloan es
te
considerat a fi o variabil.
Instruciunea diag(cov(X)) genereaz vectorul varianelor fiecrei coloane a matricei
X, iar sqrt(diag(cov(X))) este vectorul abaterilor standard pentru fiecare coloa
n a
matricei X.
Funcia corrcoef calculeaz matricea coeficienilor de corelaie pentru matricea X.
Exemplu
S se genereze n vectori aleatori, care urmeaz legea normal bidimensional, n matricea
X
de tipul nX2, dup care folosind funciile cov i corrcoef,calculeaz matricele
covarianelor i a coeficienilor de corelaie, pentru cele dou coloane ale matricei X.
Codul Matlab:
clear,mu(1)=input('m1=');mu(2)=input('m2=');
v(1,1)=input('sigma1^2=');
v(2,2)=input('sigma1^2=');
v(1,2)=input('Cov(X,Y)=');v(2,1)=v(1,2);
n=input('n=');
if det(v)<=0
error('Matricea v nu este pozitiv definita ');
end
X=mvnrnd(mu,v,n);
v=cov(X);
r=corrcoef(X);
fprintf('Matricea covariantelor \n'),disp(v)
fprintf('Matricea coeficientilor de corelatie \n'),disp(r)
Pentru mu1=100,mu2=-100, v=[5 4; 4 4], n=1000 se obin rezultatele:
Matricea covariantelor
4.7652
3.8133
3.8133
3.8659
Matricea coeficientilor de corelatie
1.0000
0.8885
0.8885
1.0000
Funcia isline reprezint grafic n figura curent dreptele de regresie, obinute cu metod
a
celor mai mici ptrate pentru fiecare curb a figurii , care a fost reprezentat cu in
struciunea
plot, dar nu prin linie continu sau de tipul linie continu.
Funcia refline reprezint grafic n figura curent dreapta de ecuaie y = mx+n,dac
lipsesc argumentele efectul funciei coincide cu isline.
Funcia gline reprezint grafic n figura precizat prin parametrul f, iar dac acesta lip
sete n
figura curent, segmentul de dreapt prin marcarea cu ajutorul mouse-ului a capetelo
r
segmentului.
Funcia nlifit pus la dispoziie de Statistics toolbox pentru ajustarea neliniar, baza
t pe
metoda celor mai mici ptrate.
140
Exemplu
S se scrie un program Matlab, care genereaz N vectori aleatori ce urmeaz legea norm
al
bidimensional, reprezint norul statistic pentru aceste date, precum i cele dou drept
e de
regresie, a lui Y n raport cu X , respectiv a lui X n raport cu Y.
Codul Matlab:
clear,mu(1)=input('m1=');mu(2)=input('m2=');
v(1,1)=input('sigma1^2=');
v(2,2)=input('sigma1^2=');
v(1,2)=input('Cov(X,Y)=');v(2,1)=v(1,2);
N=input('N=');
if det(v)<=0
error('Matricea v nu este pozitiv definita ');
end
Z=mvnrnd(mu,v,N);
X=Z(:,1);Y=Z(:,2);
ma=mean(Z);
s=std(Z);
r=corrcoef([X,Y]);
m=s(2)/(r(1,2)*s(1));
n=ma(2)-m*ma(1);
plot(X,Y,'.'),lsline,refline(m,n)
text(ma(1),ma(2),'o Centrul de greutate')
Cu datele de intrare:
m1=10, m2=-10, sigma1^2=8, sigma1^2=3, Cov(X,Y)=-4, N=50
Se obine graficul:
4
6
8
10
o Centrul de greutate
12
14
16
2
4
6
8
10
12
14
16
18
9.6.9. Funcia interactiv nlintool
Se lanseaz n linia de comand prin:
>> nlintool(x,y,numef,a0);
n urma lansrii se produce un grafic interactiv privind ajustarea datelor coninute n
vectorul
coloan y i matricea x, avnd tipul legturii precizat prin nume f, care poate fi o fun
cie
Matlab proprie.
Pe figur este reprezentat graficul de ajustare cu linie continu. Prin introducerea
valorii unui
argument x n fereastra de jos sau prin deplasarea dreptei verticale pe poziia absc
isei x, pe
axa ordonatelor se obine valoarea corespunztoare pentru y.
141
Elementele obinute, prin lansarea acestei funcii, pot fi salvate n spaiul de lucru,
workspace, parial sau n totalitate, prin utilizarea butonului export.
Pe lng aceste elemente, graficul demonstrativ conine i alte elemente printre care
intervalele de ncredere.
Exemplu preluat din Help
Dac tastm n linia de comand:
>>load reaction
>>nlintool(reactants,rate,@hougen,beta,0.01,xn,yn)
Se obine :
9.7. Teoria Seleciei
9.7.1 Tipuri de selecie
Definiie
Numim eantion ( selecie, sondaj ) relativ la colectivitatea C o submulime de indivi
zi
C, care urmeaz s fie cercetai din punct de vedere a uneia sau mai multor caracteris
tici, iar
numrul indivizilor din eantionul se numete volumul eantionului.
Clasificare
Dup modul de obinere :
1. metode nealeatoare
2. metode aleatoare
de selecie.
Metode nealeatoare:
1. Selecia sistematic , cnd indivizii care intr n eantion sunt considerai dup o
anumit regul, de exemplu din 10 n 10.
142
2.
Selecie tipic, cnd, cunoscndu-se informaii anterioare la colectivitate, sunt
considerai indivizi cu valori medii apropiate de valoarea medie a ntregii
colectiviti.
3. Selecie stratificat, cnd colectivitatea este stratificat (clasificat) dup anumite
criterii, cunoscndu-se proporia indivizilor pentru fiecarea strat. Eantionul se ia
astfel nct s fie respectate aceste proporii pentru fiecare strat.
Metodele aleatoare de selecie = fiecare individ al colectivitii C poate s intre n ean
ion
cu aceai probabilitate sau cu probabiliti diferite.
1. Repetate (bernoulliene) cnd individul ce intr n eantion, dup ce a fost cercetat,
este reintrodus n colectivitate.
2. Nerepetate cnd individul care intr n eantion, dup ce a fost cercetat, nu este
reintrodus n colectivitate
Observaie
Dac volumul colectivitii este mult mai mare dect volumul eantionului, atunci o
selecie nerepetat poate fi considerat ca fiind de tip repetat.
Aceasta are la baz rezultatul privind comportarea asimptotic a legii hipergeometri
ce
ca i o lege binomial.
9.7.2. Funcii de selecie
Vom considera n cele ce urmeaz c avem de fiecare dat o selecie repetat.
Definiie
Fie colectivitatea C cercetat din punct de vedere al caracteristicii X. Numim dat
e de
selecie relative la X datele statistice x1,x2, ...,xn privind indivizii care intr n
eantion.
Definiie
Numim funcie de selecie sau statistic variabila aleatoare
Zn=hn (X1,X2, ..., Xn)
Unde hn: n este o funcie msurabil, iar zn=hn (x1,x2, ...,xn) se numete valoarea
funciei de selecie.
Definiie
Numim medie de selecie funcia de selecie
X = X, iar x = x
Se numete valoarea medie de selecie.
Demonstraia acestor proprieti se poate gsii n lucrarea (1, pag 199 : 200).
Proprietate
Fie caracteristica X avnd valoarea medie m = E(X) i dispersia 2=Var (X), atunci
E (X)=m, Var(X) = 2
Propritat
Fi caracteristica X avnd valoarea medie m = E(X) i dispersia 2=Var (X), atunci
statistica
Zn =

Converge n repartiie la legea normal N (0,1), cnd n, iar cnd X urmeaz legea
normal N (m, ) afirmaia are loc pentru orice valoare a lui n.
143
9.7.3 Momente de selecie
Definiie
Numim moment de selecie de ordin k funcia de selecie :
X = k , iar k = x ,
se numete valoarea momentului de selecie de ordin k.
Definiie
Numim moment centrat de selecie de ordin k funcia de selecie:
(Xi X) = , iar (xi x) =
se numete valoarea momentului centrat de selecie de ordin k.
Definiie
Numim dispersie de selecie funcia de selecie:

(Xk X) =
, iar valoarea numeric

(xk x) =
Se numete valoarea dispersiei de selecie.
Exemplu
S se scrie un program Matlab care genereaz de N ori cte n vectori aleatori, ce urme
az
legea normal bidimensional, avnd coeficientul de corelaie dintre cele dou componente
nul, adic r=0. Folosind aceste date se vor calcula N numere aleatoare dup regula p
recizat
prin statistica :
T = n 2
iar histograma corespunztoare acestor noi date va fi reprezentat grafic mpreun cu
densitatea de probabilitate a legii Student cu n-2 grade de libertate.
Codul Matlab
clear,clf,
mu(1)=input('m1=');mu(2)=input('m2=');
v(1,1)=input('sigma1^2=');
v(2,2)=input('sigma1^2=');
v(1,2)=input('Cov(X,Y)=');v(2,1)=v(1,2);
if det(v)<=0
error('Matricea v nu este pozitiv definita ');
end
N=input('N=');n=input('n=');
for k=1:N
Z=mvnrnd(mu,v,n); r=corrcoef(Z);r12=r(1,2);
t(k)=sqrt(n-2)*r12/sqrt(1-r12^2);
end
x=-3:0.01:3; f=tpdf(x,n-2);
nn=fix(1+10/3*log10(N));
[fr,c1]=hist(t,nn); h=c1(2)-c1(1);
bar(c1,fr/(h*N),1),hold on, plot(x,f, 'k-')
grid
colormap winter
144
Pentru : m1=5, m2=10, sigma1^2=2, sigma1^2=3,Cov(X,Y)=0,N=50,n=20
rezult graficul:
Legea student n=18
0.5
0.45
0.4
0.35
0.3
0.25
0.2
0.15
0.1
0.05
0
4
3
2
1
0
145
1
2
3
146
CAPITOLUL 10
REZOLVAREA ECUAIILOR DIFERENIALE ORDINARE
10.1. Metode numerice pentru problema Cauchy
Considerm problema cu valori iniiale ( problema Cauchy ).
S se determine o funcie cu valori vectoriale 1 [ ], : [ ] R d, astfel
nct
dy
= f(t, y), t [a b]
dt
y (a ) = y0
Vom evidenia dou clase importante de astfel de probleme:
1) pentru = 1 avem o singur ecuie diferenial scalar de ordinul I
= f(t, y)
() = 0
2) pentru > 1 avem un sistem de ecuaii difereniale ordinare de ordinul I
dy
= f t, y , y , y ,
i = 1, d
dt
i
i
y (a)=y0
Reamintim urmtoarea teorem clasic referitoare la existen i unicitate.
Teorema [4]
Presupunem c ( ) este continu n prima variabil pentru [ ] i n raport
cu cea de-a doua variabil satisface o condiie Lipschitz uniform:
kf(t, y) f(t, y *)k Lky y *k y, y* R d,
unde k k este o anumit norm vectorial. Atunci problema Cauchy are o souie unic ,
(), 0 Rd . Mai mult, () depinde continuu de i 0.
S face distincie ntre metode de aproximare analitice i metode discrete.
n cadrul primei categorii se ncearc s se gseasc aproximaii () () ale
soluiei exacte, valabile pentru orice [ ]. Acestea de obicei au forma unei dezvoltr
ntr-o serie trunchiat, fie dup puterile lui , fie n polinoame ortogonale Cebev, Lagu
e
etc. fie ntr-un alt sistem de funcii de baz de exemplu B-splines. n cazul metodelor
discrete, se ncearc s se gseasc aproximaii Rd ale lui () pe o gril de
puncte [ ].
A
ci
l pot fi predeterminate (de exemplu puncte echidistante pe [ ]), sau mai
convenabil sunt generate dinamic ca parte a procesului de integrare.
Cea mai simpl metod numeric , cunoscut ca metoda lui Euler provine dintr-o
dezvoltare n serie Taylor prin trunchiere dup termenul liniar :
()
y(t+h)=y(t)+h
147
ceea ce conduce la formula de baz :
yn=yn-1 +hf(tn-1, yn-1)
unde yn y(nh), tn = nh, h este un pas ales.
Dac derivata a doua a soluiei este mrginit n modul de M, Dormand n lucrarea [5]
arat c eroarea pe pas este de ordin h2, iar eroarea total pe intervalul (a,b) este
limitat de
M* *h.
Metoda lui Euler ia drept valoare medie a pantei valoarea ei n t. O valoare mai b
un este
valoarea pantei n mijlocul intervalului t + , adic

y(t+h)=y(t)+hf(t + , y(t + ))
Aceast valoare n mijlocul intervalului se poate aproxima cu metoda lui Euler cu un
pas
astfel:
y(t + ) (t)+ f(t,y(t))
i se obine un algoritm (Runge) de forma:
K1=f(t,y(t))
K2= f(t + ,y(t)+ K1)
y(t+h)=y(t)+hK2
iar eroarea pe pas este de ordinul lui h3.
Metoda lui Heun de ordin 3
a:=kf(tn,yn);
b:=kf(tn+k/3,yn+a/3);
c:=kf(tn+2k/3,yn+2b/3);
yn+1=yn+1/4(a+3c);
Metodele generate de acest tip, numite metode Runge-Kutta constau dintr-o succes
iune de
stagii, fiecare evalnd o valoare aproximativ a pantei soluiei exacte. Pasul final a
vanseaz
soluia din t la t+h prin utilizarea unei unei sume ponderate de pantele calculate
anterior.
Deci:
K1=f(t,y(t))
K2= f(t+c2h,y(t)+ha2,1 K1)
K3= f(t+c3h,y(t)+ha3,1 K1+ ha3,2 K2)
...
Ks= f(t+csh,y(t)+has,1 K1+ has,2 K2+...+ has,s-1 Ks-1)
y(t+h)=y(t)+h(b1 K1+ b2 K2+...+bsKs)
unde s este numrul de stagii.
Aceste metode utilizeaz un pas fix h. Prin micorarea lui crete precizia, dar i timpu
l de
calcul. Se poate ca acest pas s fie micorat numai acolo unde soluia aproximativ vari
az
rapid i s-l meninem mai mare n zonele cu o variaie mai lent, deci pasul h trebuie s
poat fi modificat n urma calculelor i n concordan cu comportarea soluiei.
T. Petrila i D.Trif n lucrarea [21, pag. 187[ sugereaz rularea a dou metode diferite
n
paralel, una pentru propagarea soluiei, iar cealalt numai pentru a estima i a contr
ola
eroarea.
Fehlberg a descoperit c exist perechi de metode Runge-Kutta cu ordine diferite de
trunchiere n care liniile principale din tabelele de tip Butcher ataate coincid.
Prin aceasta, ajustarea pasului h se poate face utiliznd numai o singur evaluare n
plus a
funciei f.
148
Pentru formulele de aproximare de tip Runge-Kutta, un aspect esenial este c sunt m
etode
cu un pas , adic soluia aproximativ la un nivel ulterior de timp t+h se calculeaz nu
mai
din soluia la nivel current de timp t.
Vom da n continuare cteva noiuni legate de stabilitatea metodelor cu un pas, pentru
detalii
suplimentare recomandm lucrarrile [4], [5].
O diviziune (gril) a intervalului [a,b] este o mulime de puncte {xn}n=0N care verif
ic:
a = x0 < x1 < <xN-1 <xN = b
cu pasul :
hn=xn+1-xn , n=0,1,,N-1.
Fineea grilei este dat de relaia :
| h |= max hn, n=0,1,2,...N-1.
Funcia u ={un},un d definit pe grila de mai sus se numete funcie gril.
O metod cu un pas produce o funcie gril astfel ca u y,unde y ={yn} este o funcie
gril indus de soluia exact a unei probleme Cauchy. Notm cu h mulimea grilelor care s
pot defini pe intervalul [a,b].
Definiie
O metod cu un pas de forma:
xn+1=xn+hn
un+1=un+hn(x,u;h)
se numete stabil pe intervalul [a,b], dac exist o constant K pozitiv care nu depinde
e
h, astfel nct pentru orice dou funcii gril v, w h are loc:
( + R w )
( ) este operatorul residual:
v ) (x , v ; h ) i
( ) : = (v
se numete convergent dac:
0, dac l h l 0 unde y este soluia exact a problemei Cau chy.
L.N. Trefeten demonstreaz c stabilitatea metodei Euler este mulimea punctelor z, as
tfel
nct |1 | > 1, pentru regula trapezului este:

< 1, iar pentru metoda lui Heun


este:
1 + z + < 1.
Pentru a nelege mai bine rolul stabilitii vom da un exemplu din (8, pag:15):
Exemplu
Soluia urmtoarei probleme Cauchy:
y=5( t2)
(0)=0.008

t :
y(t)=t2+0.4t+0.008
Dar pentru o constant arbitrar C soluia general este:
y(t)=(t2+0.4t+0.008)+Ce5t
Soluia este instabil deoarece pentru dou constante arbitrare C1, C2 cele dou soluii
difer prin (C1-C2)e5t . Aceast cantitate difer foarte mult pentru valori mari ale l
ui t
vizibil n exemplul urmtor:
149
Codul Matlab
function Stab
% Diferenta dintre eroarea local si cea global
t = [];
le = [];
ge = [];
tn = 0;
yn = 0.08;
h = 0.1;
for i = 1:20
tnp1 = tn + h;
ynp1 = yn + h*ode(tn,yn);
len = localsol(tn,yn,tn+h) - ynp1;
gen = globalsol(tn+h) - ynp1;
t = [t tnp1];
le = [le len];
ge = [ge gen];
tn = tnp1;
yn = ynp1;
end
plot(t,le,'o',t,ge,'*')
grid
axis([0 2 -10 70])
legend('Eroarea locala','Eroarea globala',2)
%===============================================
function dydt = ode(t,y)
dydt = 5*(y - t^2);
function gy = globalsol(t)
% solutia globala.
gy = t^2 + 0.4*t + 0.08;
function ly = localsol(tn,yn,t)
% solutia locala.
ly = globalsol(t) + (yn - globalsol(tn))*exp(5*(t - tn));
Rezulta graficul:
70
Eroarea locala
Eroarea globala
60
50
40
30
20
10
0
10
0
0.5
1
1.5
2
D p efectuarea ctorva pai cu asemenea metode, se poate utilize metode multipas, [30
] la
care se utilizeaz informaia de la mai multe nivele de timp anterioare.
Cele mai utilizate procedee sunt :
150

Metoda Adams-Bashforth
un+1=un+ (23f 16f
+ 5f
), fn= f(tn, yn)
care este o metod explicit de ordin trei n raport cu pasul h.
Metoda Adams-Moulton
un+1=un+ (9f
+ 19f 5f
+f
)
este o metod implicit, tot n trei pai, dar de ordinul patru de exactitate n raport cu
h.
Zona de stabilitate pentru Metodele Adams-Bashforth i Adams-Moulton este:
|1 + z + z2 | < 1.
Vom scrie un program care stabilete zona de stabilitate pentru Metoda Adams-Bashf
orth
de ordin 3.
Cod Matlab
function adabash
c = [
1
0
0
-3/2 3 -1/2 ];
d = [ 23/12 -16/12 5/12
3
0
0
];
maxerror = zeros(10,2);
for m = 1:2
for i = 2:10
N = 2^i;
h = 1/N;
tn = 2*h;
%y = [y_n, y_{n-1}, y_{n-2}]
y = [exp(-2*h), exp(-h), exp(-0)];
f = -y;
for n = 3:N
tnp1 = tn + h;
ynp1 = dot(c(m,:),y) + h * dot(d(m,:),f);
maxerror(i,m) = max(abs(ynp1 - exp(tnp1)),maxerror(i,m));
y = [ynp1, y(1:2)];
f = -y;
tn = tnp1;
end
end
end
fprintf('\nFor h = 1/2^i, the maximum errors were\n\n')
fprintf('
i
AB3
Unstable\n')
fprintf(' ---------------------------\n')
for i = 2:10
fprintf('%5i %10.2e %10.2e\n',i,maxerror(i,:))
end
n urma executiei acestui program obtinem:
151
Pentru
h = 1/2^i, errorile maxime
sunt:
i
AB3
Unstable
--------------------------2
1.34e-003
9.68e-004
3
4
5
6
7
8
9
10
2.31e-004
3.15e-005
4.08e-006
5.18e-007
6.53e-008
8.19e-009
1.03e-009
1.28e-010
6.16e-003
1.27e+000
6.43e+005
2.27e+018
4.23e+044
2.27e+098
1.03e+207
Inf
Detalii asupra acestor metode precum i asupra problemelor de convergen i stabilitate
se
pot gsi n lucrarrile [4], [5].
10.2. Rezolvarea numeric a problemelor cu valori iniiale
MATLAB -ul dispune de rezolvitori numerici care pot rezolva problema Cauchy att
pentru ecuaii difereniale de ordin I (d=1) ct i pentru sisteme de ecuaii difereniale
rdinare ( d>1).
n tabelul urmtor sunt prezentate succint civa dintre aceti rezolvitori [29, pp. 374:3
95]
Categorie
Funcii care
rezolv ODE
Opiuni ODE
Funcie
Descriere
ode45
Rezolv ecuaii difereniale nonstiff, metod de ordin mediu.
ode23
Rezolv ecuaii difereniale nonstiff, metod de ordin sczut.
ode113
Rezolv ecuaii difereniale nonstiff, metod de ordin variabil.
ode15s
Rezolv ecuaii difereniale stiff i ecuaii algebrice
difereniale, metod de ordin variabil.
ode23s
Rezolv ecuaii difereniale stiff, metod de ordin sczut.
ode23t
Ecuaii difereniale stiff i ecuaii algebrice difereniale,
metoda trapezelor.
ode23tb
Rezolv ecuaii difereniale stiff, metod de ordin sczut.
odeset
Creeaz sau schimb opiuni de structur ale ODE.
odeget
Permite obinerea parametrilor din opiunile ODE.
Funcii de ieire
odeplot
ODE
Reprezentarea grafic a soluiilor ODE (n funcie de timp).
152
Aceti rezolvitori se apeleaz cu una dintre sintaxele:
[x,y] = ode xxx ('yprim', x0,xf,y0)
[x,y]= ode xxx ('yprim', x0,xf,y0, tol, trace)
unde
xxx = poate fi 23, 45, 113, 15s, 23tb.
[x0,xf] = intervalul de integrare
y0 = este un vector coloan coninnd condiiile iniiale.
tol = este precizia dorit a soluiei (opional), implicit
tol =10-3 pentru ode23 i tol = 10-6 pentru ode45.
trace = este un parametru care asigur tiprirea rezultatelor
intermediare opional.
Funciile ode23, ode45 apeleaz la metode de integrare Runge-Kutta-Fehlberg cu stabi
lirea
automat a pasului. Algoritmul Runge-Kutta cu pas automat i alege pasul funcie de
gradientul soluiei, respectiv un pas mai mare, atunci cnd gradientul y'(x) are o v
aloare mai
mic.
10.2.1. Probleme nonstiff
Definiie
Se numete soluie neoscilant a unei probleme Cauchy o soluie care are cel mult un zer
o
n intervalul [a,b] i oscilant dac are mai multe zerouri.
Observaie
De interes sunt i timpii de execuie, de aceea alegerea rezolvitorului este eseneial
. Timpii
de execuie se pot obine folosind funciile Matlab tic-toc.
Exemplu 2: (soluie neoscilant)
Considerm problema Cauchy (P.V.I):
dy/dt+ y(t)=3, y(0)=5.
cu soluia exact:
y(t)= 3+2exp(-t).
Aceasta modeleaz un proces de natere-moarte pentru o populaie de mrime y(t) .
Problema este preluat din lucrarea [23, pag. 171].
Rata de nateri este 3, iar variaia populaiei este proporional cu populaia. Procesul e
te
dominat de decese ( dy/dt=- y(t)+3) , iar populaia iniial 5 devine repede irelevant.
Se creaz un fiier funcie:
function dy=f1(x,y)
dy=-y(t)+ 3
cu numele f1.m care se apeleaz cu secvena MATLAB:
[x,y]=ode 45( 'f1',[0,7], [0,5]);
ya=3+2* exp(-t)%soluia analitic
plot (x, y, 'o', x, ya);
grid on
title('Solution using ODE45');
xlabel(' x');
ylabel('solution y');
legend('Numerical Solution',' Aprox solution');
obinndu-se soluia numeric comparativ cu cea analitic.
153
Solution using ODE45
5
Numerical Solution
Aprox solution
4.8
4.6
solution y
4.4
4.2
4
3.8
3.6
3.4
3.2
3
0
1
2
3
4
5
6
7
x
Dac se dorete evaluarea erorii :
semilogy(x,abs(ya-y),'-r')
xlabel('x','FontSize',10)
ylabel('abs(ya(x)-y)','FontSize',10)
grid on
title('Error ')
obinndu-se urmtorul rezultat:
Error
3
10
4
a
( a )
10
5
10
6
10
0
1
2
3
4
5
6
7


E mpl l 3 (soluie oscilant)
S se determine o soluie numeric pentru urmtoarea problem IVP (problema
pendulului) :
+sin ()=0, [0,10]
(0)=0, (0)=1
Doarc soluia oscileaz de foarte multe ori n intervalul de integrare este obligat
oriu de
luat RelTol=10-5, i AbsTol=10-10.
Codul Matlab
function pendul
tic;
options = odeset('Events',@event,'RelTol',1e-5,'AbsTol',1e-10);
[t,y,te,ye,ie] = ode45(@odes,[0 10*pi],[0; 1],options);
154
plot(t,y(:,1),te,ye(:,1),'ro')
grid on
spacing = diff(te)
toc;
%=================================================
function dydt = odes(t,y)
dydt = [y(2); -sin(y(1))];
function [value,isterminal,direction] = event(t,y)
isterminal = 0;
direction = 0;
value = y(1);
Executnd acest script se obine graficul:
1.5
1
0.5
0
0.5
1
1.5
0
5
10
15
20
25
30
35

 cazul rezolvitorului ode 45, timpii de execuie sunt: 0.190349 seconds.


Dac schimbm rezolvitorul n ode113, vom obine: 0.764025 seconds.
Iar dac rezolvitorul este ode23, atunci:0.781178 seconds.
Concluzie
Rezolvitorul ode 45 are timpii cei mai buni, deci sugerm folosirea acestui rezolv
itor.
10.2.2. Probleme Stiff
La ecuaiile difereniale ordinare de tip stiff (rigide) soluiile pot avea variaii foa
rte rapide
n timp n raport cu intervalul de integrare i este necesar folosirea unor pai de integ
rare
foarte mici, ceea ce nu este indicat la ecuaiile nonstiff. Sugerm folosirea rezolv
itorului
ode15s.
Pentru a ilustra modul de utilizare a acestui rezolvitori dm n continuare urmtoarel
e exemple:
Exemplul 4.
O problema stiff cunoscut n literatura de specialitate este modelul lui O'Maley :
Fie problema Cauchy :
y' = y2(1-y)
y(0)=,
car trebuie rezolvat numeric pe intervalul [0, 2/].
155
OMal fololosete metoda perturbaiei pentru a analiza comportarea soluiei pentru:
> 0.
Codul MATLAB este:
function dydt = ode(t,y)
dydt=y^2*(1-y);
end
%%%%%%%%
epsilon =1e-4;
options = odeset('Stats','on');
[t,y]=ode15s(@ode,[0,2/epsilon],epsilon,options);
plot(t,y,'r*')
title('The concentration of a reactant in combustion process')
grid on
Rezolvnd aceast problem pentru =10-4 i folosiind solverul ode15s bazat pe metode
BDF ( backward differentiation formula) obinem urmtorul rezultat.
The concentration of a reactant in combustion process
1.4
1.2
1
0.8
0.6
0.4
0.2
0
0
0.5
1
1.5
2
4
x 10
Exemplul 5
n lucrarea [5] Dormand J. propune un studiu comparativ al aplicrii rezolvitorilor
ode45
i ode15s pentru urmtorul sistem de ecuaii difereniale cunoscut n literatura de specia
litate ca modelul lui Robertson.
Acest model se mai numete i modelul reaciilor chimice consecutive i este folosit ca
model matematic n biologie i medicin [23, pag. 154]:
dy
=
t

=
t
( )+
( ) ( ),
( ) ( )
( )

= ( )
dt
Acesta modeleaz o reacie chimic ntre trei reactani.
156
( )
title('ode15s','FontSize',14)
Codul Matlab
Cmpul vectorial
function yprime=chem(t,y,alpha,beta,gamma)
yprime=[-alpha*y(1)+beta*y(2)*y(3);
alpha*y(1)-beta*y(2)*y(3)-gamma*y(2)^2;
gamma*y(2)^2];
end
Scriptul Matalab
alpha=0.04;
beta=1e4;
gamma=3e7;
tspan=[0,3];y0=[1;0;0];
opts=odeset('Stats','on');
[ta,ya]=ode45(@chem,tspan,y0,opts,alpha,beta,gamma);
subplot(1,2,1),plot(ta,ya(:,2),'*')
ax=axis;ax(1)=-0.2;axis(ax);
xlabel('t'),ylabel('y_2(t)')
title('ode45','FontSize',14)
[tb,yb]=ode15s(@chem,tspan,y0,opts,alpha,beta,gamma);
subplot(1,2,2),plot(tb,yb(:,2),'-*')
axis(ax);
xlabel('t'),ylabel('y_2(t)')
n urma execuiei programului rezult graficul:
5
10

ode45
5
4
3.5
3.5
3
3
2.5
2.5
(t)

2
1.5
ode15s
1.5
1
1
0.5
0.5
0
x 10
2
2
2
y (t)
4
0
1
2
3
t
0
0
1
2
t
2052 successful steps
440 failed attempts
14953 function evaluations
33 successful steps
5 failed attempts
73 function evaluations
2 partial derivatives
13 LU decompositions
63 solutions of linear systems
>> disp([length(ta),length(tb)])
8209
34
157
3
10.2.3. Singulariti
Exemplul 5 [5 p. 130].
Davis ( 1962) folosete ecuaia lui Emden:
+
+ yn=0
pentru a modela comportarea termic a unui nor de gaz. O astfel de problem are o si
ngularitate evident n x=0, deci pentru a o putea rezolva dect dac vom lua x = 0.1, i
ar pentru
aceast valoare vom utiliza o aproximare analitic pentru y(0.1), y(0.1).
Co l Matlab pentru n=3 este :
function Emden
% Problema lui Emden
global n
options = odeset('Events',@events,'RelTol',1e-8,'AbsTol',1e-10);
n = 3;
xend
= 10;
xinit = 0;
yinit = 1;
ypinit = 0;
[x,y,xe,ye,ie] = ode15s(@f,[xinit xend],[yinit; ypinit],options);
if isempty(ie)
fprintf(' y(x) was never 0.')
else
fprintf(' y(x)=0 for x = %g.\n',x(end))
end
plot(x,y(:,1),x,y(:,2))
title('Problema lui Emden n=3')
grid on
legend('y_1(t)','y_2(t)')
%===================================================================
function dydt = f(x,y)
global n
dydt = zeros(2,1);
dydt(1) = y(2);
dydt(2) = -1/3;
if x > 0
dydt(2) = -(2/x)*y(2) - (y(1))^n;
end
function [value,isterminal,direction] = events(x,y)
value = y(1);
isterminal = 1;
direction = 0;
Obinem rezultatul:
158
Problema lui Emden n=3
1
y1(t)
y (t)
2
0.8
0.6
0.4
0.2
0
0.2
0.4
0
1
2
3
4
5
6
7
E mpl l 6 [8, p. 131].
Fie modelul lui Kamke (1971) :
y(y)2=2 , y(0)=0,y(0)=0,
car descrie modificarea curenilor ntr-un condensator cilindric.
Shampine , Gladwell i Thompson n lucrarea [25] sugereaz aproximarea soluiei acestei
probleme Cauchy folosind o dezvoltare n serie de forma:
y(x)= xp(a+bx+...).
Se observ c aceast problem are o singularitate n x = 0, deci ei sugereaz c trebuie s
completm rezolvarea numeric a acesteia pentru valori mici ale lui x lund:
b = a-2,
mai mult ei demonstreaz c n aceast condiie suplimentar exist o singur soluie de
aceast form.
Vom studia comparativ soluiile obinute folosind o dezvoltare n serie, apoi folosind
rezolvitorul ode45.
Codul Matlab
function kamke
x0 = 0.001;
[ys0,ysp0] = series(x0);
[x,y] = ode45(@odes,[x0 0.1],[ys0; ysp0]);
xs = linspace(x0,0.1,10);
[ys,ysp] = series(xs);
plot(x,y,xs,[ys; ysp],'o')
title('Modelul lui Kamke');
grid on
legend('ode45','series',2)
%=================================================
function [ys,ysp] = series(x)
a = (81/16)^(1/3);
b = (27/40)/a^2;
ys = a*x.^(4/3) + b*x.^(7/3);
ysp = (4/3)*a*x.^(1/3) + (7/3)*b*x.^(4/3);
function dydx = odes(x,y)
dydx = [ y(2); sqrt(exp(2*x)/y(1)) ];
function dfdy = Jac1(x,y)
dfdy = [ 0
1
-1/2/sqrt(exp(2*x)/y(1))*exp(2*x)/y(1)^2 0 ];
159
function res = F2(x,y,yp)
res = [ yp(1) - y(2)
yp(2) - exp(x)/sqrt(y(1)) ];
function [dfdy,dfdyp] = Jac2(x,y,yp)
dfdy = [ 0
-1
0.5*exp(x)*y(1)^(-3/2) 0 ];
dfdyp = [ 1
0
0
1 ];
n acest exemplu am luat x = 0.001 i am dezvoltat n serii de puteri pentru a obine o
aproximare acceptabil n y(0.001) i y (0.001). Am integrat n intervalul
[0.001, 0.1] i am obinut rezultatul:
Modelul lui Kamke
1.4
ode45
series
1.2
1
0.8
0.6
0.4
0.2
0
0
0.02
0.04
0.06
0.08
0.1
10.2.4. Opiuni de structur a rezolvitorului
Cu ajutorul funciei odeset se poate stabili o structur de opiuni ale rezolvitorului
.
Forma general este:
Options=odeset(am1,val 1,am2,val 2,)
E mpl l 7
S se rezolve sistemul: y(1)'=y(2), y(2)'=-y(1)exp(-t)-y(2)
y(0)=0,y'(0)=1, si apoi sa se traseze portretul de faze, far a folosii opiunea ode
set curba y
 funie de y parametrizat de t.
%subprogram care descrie sistemul
function yp=fctd(t,y)
yp=zeros(2,1);
yp(1)=y(2);
yp(2)=-y(1)*exp(-t)-y(2);
160
%%%%%%%%%
%apelul functiei fctd
[t,y]=ode45(@fctd,[0,50],[0,1]);
subplot(2,1,1)
plot(t,y(:,1)); grid
title('Solutia aproximativa');
subplot(2,1,2)
plot(y(:,1),y(:,2));
title('Portretul de faze')
grid
n urma execuiei programului rezult graficul:
Solutia aproximativa
0.8
0.6
0.4
0.2
0
0
10
20
30
40
50
Portretul de faze
1
0.5
0
0.5
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
E mpl 8
S se reprezinte n planul fazelor modelul torului folsind opiunea de rezolvare
odephase3 dat de urmtorul sistem de ecuaii difereniale:
y1=- y2- y
y2= y1

3=

 r= y + y
Condiiile iniiale sunt :y1 (0) = 3, y2(0)=0, y3(0)=0, t[0,10]
Co l Matlab
function torus
options = odeset('OutputFcn',@odephas3,'Refine',10);
ode45(@f,[0 10],[3; 0; 0],options);
%===================================================================
function dydt = f(t,y)
dydt = zeros(3,1);
r = sqrt(y(1)*y(1)+y(2)*y(2));
dydt(1) = -y(2) - (y(1) * y(3)) / r;
dydt(2) = y(1) - (y(2) * y(3)) / r;
dydt(3) = y(1) / r;
161
n urma execuiei acestui script Matlab obinem graficul:
Spatiul fazelor pentru problema torului
1
0.5
0
0.5
1
4
2
3
2
0
1
2
0
4
1
E mpl 9 [29, p. 378]
Fiind dat modelul lui Rosseller guvernat de urmtorul sistem de ecuaii difereniale c
are
apare n chimie i modeleaz raportul dintre 3 reactani:
= (t) (t)
= y (t ) + ay2(t),
= b + y (t)(y (t) c)
a,b,c .
S se reprezinte n planul fazelor (y1(t), y2(t)) i ((y1(t), y2(t)),y3(t)).
Cmpul vectorial este definit prin funcia:
function yd = Roessler(t,y,a,b,c )
yd=[-y(2)-y(3);y(1)+a*y(2);b+y(3)*(y(1)-c)];
end
Sursa Matlab
tspan=[0,100];y0=[1;1;1];
options=odeset('AbsTol',1e-7,'RelTol',1e-4);
a=0.2;b=0.2;c1=2.5;c2=5;
[t,y]=ode45(@Roessler,tspan,y0,options,a,b,c1);
[t2,y2]=ode45(@Roessler,tspan,y0,options,a,b,c2);
subplot(2,2,1), plot3(y(:,1),y(:,2),y(:,3))
title('c1=2.5'), grid
xlabel('y_1(t)'),ylabel('y_2(t)'),zlabel('y_3(t)');
subplot(2,2,2), plot3(y2(:,1),y2(:,2),y2(:,3))
title('c1=5'), grid
xlabel('y_1(t)'),ylabel('y_2(t)'),zlabel('y_3(t)');
subplot(2,2,3), plot(y(:,1),y(:,2))
title('c1=2.5'), grid
xlabel('y_1(t)'),ylabel('y_2(t)');
subplot(2,2,4), plot(y(:,1),y(:,2))
title('c1=5'), grid
xlabel('y_1(t)'),ylabel('y_2(t)');
162
n urma execuiei obinem graficul:
c1=2.5
c1=5
20
y3(t)
3
y (t)
4
2
0
5
0
y (t)
2
0
10
5
5 5
10
0
(t) 10 20
0
1(t)
2
c1=5
4
4
2
2
0
2

(t)
0
2
y (t)
c1=2.5
20
0
y1(t)
2
4
6
5
2
4
0
(t)
6
5
5
1
0
(t)

5
1
10.2.5. Funciile deval, odextend
Dac rezolvitorul se apeleaz cu comanda:
Sol=solver(odefun,tspan,z0,options)
Atunci acesta returneaz o structur sol care poate fi evaluat cu ajutorul funciei
deval.
Exemplul 10
Se d problema Cauchy:
y=y2-t, t[0,3].
C valori iniiale y(0)=-5,-4,...,0.
Codul Matlab
fd=@(t,y) y^2-t;
t=linspace(0,3,150);
y=zeros(150,6);
y0=-5:0;
for k=1:length(y0)
sol=ode45(fd,[0,8],y0(k));
y(:,k)=deval(sol,t,1);
end
plot(t,y)
title('Solutie evaluata cu deval')
grid
163
Se obine graficul:
Solutie evaluata cu deval
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
0
0.5
1
1.5
2
2.5
3

 acest exemplu observm c nu este necesar s definim o funcie pentru cmpul vectorial
ntr-un fiier separat, ea poate fi inclus n scriptul pe care-l lansm n execuie.
Funcia odextend expandeaz soluia unei probleme Cauchy. Pentru a exemplifica modul
de lucru cu aceast funcie vom scrie urmtorul program Matlab.
fd=@(t,y) y^2-t;
sol=ode45(fd,[0,3],0);
sol=odextend(sol,fd,8);
t=linspace(0,8,150);
y=deval(sol,t);
plot(t,y)
title('Exemplu de utilizare odextend')
grid
n urma execuiei programului obinem graficul:
Exemplu de utilizare odextend
0
0.5
1
1.5
2
2.5
3
0
1
2
3
4
164
5
6
7
8
10.2.6. Ecuaii implicite
Rezolvitorul ode15i rezolv probleme PVI implicite de forma:
F(t,y,y)=0
Utiliznd o metod BDF.
Sintaxa minimal este:
[t,y]=ode15i(odefun,tspan,y0,yp0)
Exemplu 11:
S se rezolve problema lui Cauchy :
cu condiia iniial:
y2+y21=0
(/6)=1/2;

o Matlab
Cmpul vectorial este definit de:
function z= implic(t,y,yp )
z=yp^2+y^2-1;
end
n spaiul de lucru a Matlabului tastm:
>>tspan=[pi/6,pi/4];
>>[t,y]=ode15i(@implic,tspan,1/2,sqrt(3)/2);
>>plot(t,y)
>>grid
>>title('Utilizare rezolvitor ode15i ')
Graficul rezultat este:
Utilizare rezolvitor ode15i
0.75
0.7
0.65
0.6
0.55
0.5
0.5
0.55
0.6
0.65
165
0.7
0.75
0.8
0.85
10.3. Sisteme dinamice
10.3.1. Prezentare general
n cele ce urmeaz vom considera un sistem dinamic definit de:
= f(u), u(0) = U, U ,
(PN)
U(t) este o apllicaie cu valori vectoriale u: , iar fC( , ) este neliniar i
nu depinde explicit de timp i este de fapt cmpul vectorial care definete problema.
n cele ce urmeaz nu soluiile acestui sistem ne intereseaz, ci orbitele sau traiector
iile
punctelor (u1(t),u2(t), ...up(t))T.
Vom da n continuare o serie de definiii utile pentru a nelege acest tip de sisteme d
e ecuaii.
p
Definiie
Problema Cauchy (PN) se spune c definete un sistem dinamic pe o submulime E
,
dac pentru fiecare dat iniial UE, exist o soluie unic a acestei problemei i care e
definit pentru t[0,) i rmne inclus n E pentru aceste momente de timp.
Teoreme de existen i unicitate se gsesc de exemplu n lucrarea [9 pp. 22:25].
Definiie
Pentru sistemul dinamic generat de (PN) definim semigrupul de evoluie ca fiind ap
licaia
S(t): EE astfel nct u(t)=S(t)u(0)pentru toi t 0 . Acest operator are
proprietile :
a) u(t+s)=S(s)u(t)=S(t)u(s), pentru t,s 0,
b) S(0)=Ip, Ip fiind operatorul identic n p.
Definiie
Pentru orice submulime B , definim aciunea semigrupului de evoluie asupra aceste
prin:
S(t)B:=S(t)U, UB.
Diiie
Pentru sistemul dinamic S(t)(.) corespunztor (PN) definim orbita pozitiv respectiv
orbita
nainte pentru data U ca fiind mulimea :
+={ S(t)(U): t 0}, iar orbita negativ ={ S(t)(U): t  0}.
Definiie
Un punct x  se numete punct limit corespunztor datei U pentru un sistem dinamic ,
dac exist un ir ti, i=1,2,...,astfel ca S(ti)U , pentru i. Mulimea acestor
puncte pentru o dat iniial U se numete mulimea limit alui U.
Folosind orbitele negative, cnd acestea exist se introduc n mod analog punctele lim
it
i mulimi limit.
Pentru sisteme dinamice unidimensionale singurele mulimi limit pentru soluii
mrginite, sunt puncte critice. n cazul celor bidimensionale, tot pentru soluii mrgin
ite, pe
lng punctele critice ca mulimi limit pot apre i soluii periodice (cicluri limit).
Teorema lui Poincare-Bendixon [33]
Considerm c pentru sistemul dinamic (PN) cu p=2 i presupunem c pentru o dat iniial
U 2 exist K > 0 astfel nct :
( ) , pentru toi t 0
Dac (U) nu conine nici un punct critic, atunci aceast mulime este o soluie periodic
numit ciclu limit.
166
Definiie
O aplicaie p(t)C1 ( ) se numete o soluie periodic cu perioada T a problemei (PN),
dac este o soluie a acesteia i p(t)=p(t+T) , t , iar p(t)p(t+s),
s(0,T).
Corolar
Si
tml dinamice liniare nu pot avea soluii periodice, deci nu exist cicluri lim
it.
n studiul unui sistem dinamic, un pas esenial este determinarea punctelor critice,
adic a zerourilor sistemului algebric f(x,y)=0 . Dac dorim s explorm dinamica unui
astfel de sistem care depinde de un parametru folosim observaia c punctele critice
al
acestui sistem sunt mulimile i corespunztoare acestora. Astfel putem obine valori
aproximative ale punctelor critice trasnd cteva orbite selectate folosind pai de in
tegrare n
timp pozitivi sau negativi.
n anumite situaii aplicarea repetat poate fi destul de ineficient.
10.3.2. Aplicaii ale sistemelor dinamice n rezolvarea unui
sistem neliniar
C.I Gheorghiu n lucrarea [9, pp:129-130] sugereaz un procedeu practic i sistematic
de
determinare a zerourilor lui f(x,)=0 folosind sisteme dinamice.
Algoritm
Pasul 1
Fixm un =0 i folosim ecuaia scalar x= (x, 0) cu diferite date iniiale pentru a g
mulimea zerourilor lui
f (x, 0)=0 pe care o notm cu E0.
Pasul 2
Pentru fiecare x0 E0 calculm numeric soluia problemei:
= (x, ),
x= (x, )

(0)= 0
x(0)=x0
integrnd nainte i napoi folosind pai de timp pozitivi respectiv negativi.
Pasul 3
Se repet, dac este necesar Pasul 1pentru alte valori ale parametrului deoarece pot
exista
componente ale curbelor zerourilor lui f(x,)care nu intersecteaz dreapta =0.
10.3.3. Bifurcaii Hopf pentru prototipul unei ecuaii
difereniale cu argument ntrziat
Argumentul ntrziat apare n sistemele cu feedback din tiine medicale i
inginerie. Feedbackul cu argument ntrziat poate avea o influen considerabil asupra
comportrii calitative a acestor sisteme [11].
Prototipul unei ecuaii difereniale cu argument ntrziat este descris astfel:
y(t)= f(t,y(t),y(t-1),y(2),,y(k)) (PEDR)
unde 0 < 1 < 2 < < k sunt constante positive numite ntrzieri.
167
Prezena unui parametru implic n multe cazuri comportri diferite ale traiectoriilor u
nui
astfel de sistem, ceea ce n literatura de specialitate sunt cunoscute ca bifurcaii
Hopf.
Bifurcaii dintr-o valoare proprie simpl
Forma normal pentru bifurcaia de tip flip
Vom trata urmtorul sistemul dinamic unidimensional depinznd de un parametru:
x(1+)x+x3=f(x,)
Penru orice sistemul are un punct fix x0 = 0, cu multiplu = - (1+). Punctul fix e
ste
stabil, dac < 0 i instabil
dac > 0. Dac = 0 punctul fix x0 = 0 nu este hiperbolic deoarece = fx(0,0) = - 1, d
eci
n acest caz apare o bifurcaie flip.
Forma normal pentru bifurcaia de tip fold.
Fie sistemul dinamic unidimensional depinznd de un parametru:
x+x+x2=f(x,)
Penru =0 sistemul dinamic are un punct fix x0 =0, cu multiplu =fx (0,0)=1. Pentru
< 0
sistemul are dou puncte fixe : x1 = este stabil, iar x2 = este instabil.
n cazul unui sistem dinamic discret neliniar (PEDR) care depinde de un parametru
real
i dorim s vedem cum este influenat dinamica lui de variaiile parametrului procedm
astfel:
Considerm Jacobianul aplicaiei depinznd de de un parametru n vecintatea
punctelor fixe.
Dac o valoare proprie a acestuia trece prin 1, cnd parametrul variaz apar unul sau
mai multe puncte fixe,
Dac n schimb o valoare proprie trece prin -1 apare o soluie periodic de perioad 2.
Exist dou metode practice care pot duce la nelegerea mai profund a comportrii unor
astfel de sisteme dinamice :
- Diagrame pnz de paianjen
- Metoda seriilor temporale , aceast metod nseamn vizualizarea lor n
sistemul de coordonate nOxn.
Exemplu 1 [9,p:130]
S se studieze diagrama de bifurcaie de tip lip pentru ecuaia:
x=+x-x3, .
Co l Matlab
%cmpul vectorial introdus
function yp = bifur(t,y )
%Parametrii
lambda=-10;
%Ecuatia
yp=lambda+y(1)-y(1)^3;
return
% functia
function [ t,y ] = ecdifn( odefun,tspan,y,Nh,varargin )
%Metoda lui Euler simpletic
h=(tspan(2)-tspan(1))/Nh;
tt=linspace(tspan(1),tspan(2),Nh+1);
for t=tt(1:end-1)
y=[y,y(:,end)+h*feval(odefun,t,y(:,end),varargin{:})];
end
t=tt;
hold off
168
v=[-10 10 -10 10];
axis(v);
axis square;
drawnow;
u=y(1,:);% reprezentm grafic
plot(t,u,'.', 'markersize',10)
grid on
return
%Apelul din linia de comanda
[t,y]=ecdifn('bifur',[0,10],0.,100);
n urma executrii acestui program pentru = -10 va rezulta urmtorul grafic:
0
0.5
1
1.5
2
2.5
0
2
4
6
8
10
E
t interesant de observat instabilitatea acestei metode, soluia numeric prezint a
cel zigzag nainte de a converge la -2.3089.
Exemplul 2 [9, pag. 130]
S se studieze diagrama de bifurcaie de tip fold pentru ecuaia:
x=+x2-1; =-8.
Folosind codul Matlab de la exemplul 1 se obine graficul:
0
0.5
1
1.5
2
2.5
3
0
2
4
Aca
ta este o bifurcaie de tip a.
169
6
8
10
Exemplul 3 [9, pag.135]
S se studieze diagrama de bifurcaie de tip flip pentru urmtoarea ecuaie:
x=+x-x3; =5;
Folosind codul Matlab de la exemplul 1 se obine graficul:
3
2.5
2
1.5
1
0.5
0
0
2
4
6
8
10
10.3.4. Aplicaii ale sistemelor dinamice
A) Metoda diagramei pnz de paianjen [11]
Exemplu 4
Folosind metoda diagrame pnz de paianjen, s se studieze gradul de mprtiere a unui
proiectil dat de ecuaia diferenial:
x= ax(1-x), x(0.1)=0; pentru a[0,2.5].
Co Matalb
clear all
close all
itermax=100;
finalits=30; finits=itermax-(finalits-1);
for a=0:0.0025:2.5
x=0.1;y=0;
x0=x;y0=0;
for n=2:itermax
xn=a*x0*(1-y0);
yn=x0;
x=[x,xn];y=[y,yn];
x0=xn;y0=yn;
end
plot3(a*ones(finalits),x(finits:itermax),y(finits:itermax),'.',...
'Markersize',5)
hold on
end
fsize=10;
axis on
170
xlabel('a','Fontsize',fsize)
ylabel('x(n)','Fontsize',fsize)
title('Diagrama de bifurcatie Hopf a aplicatiei logistice')
n urma execuiei acestui cod Matlab se obine graficul:
B) Cicluri limit
Exemplul 6
S se scrie un program Matlab pentru trasarea unor traiectorii din planul fazelor
pentru
modelul prad-prdtor cunoscut n literatura de specialitate ca modelul Lotka-Voltera i
dat de sistemul :
y1= 1a* 1* 2
2= 2+ * 1* 2
U studiu analitic i numeric detaliat precum i aplicaii n modelarea matematic n
medicin (interaciunea parzit- gazd) se poate gsii n lucrarea [23, pag:229-236].
Codul Matlab
% program care implemeteaza metoda Euler-progresiva
function [ t,y ] = ecdifn( odefun,tspan,y,Nh,varargin )
%Metoda Euler progresiva
h=(tspan(2)-tspan(1))/Nh;
tt=linspace(tspan(1),tspan(2),Nh+1);
for t=tt(1:end-1)
y=[y,y(:,end)+h*feval(odefun,t,y(:,end),varargin{:})];
end
t=tt;
hold off
v=[-10 10 -10 10];
axis(v);
axis square;
drawnow;
u=y(1,:);
v=y(2,:);
plot(u,v,'.', 'markersize',15)
title('O traiectorie a modelului L-V a=2,b=3')
grid on
return
171
Cmpul vectorial corespunztor
function yp = bifur(t,y )
%Parametrii
a=2.;
b=3.;
%Ecuatiile
yp=[y(1)-a*y(1)*y(2); -y(2)+b*y(1)*y(2)];
return
n urma apelul din linia de comanda:
>>[t,y]=ecdifn('bifur',[t0,tf],[y1;y2],Ni);
t0, i tf sunt momentele n care se integreaz, iar y1 i y2 sunt datele iniiale, Nh
sunt numrul pailor de integrare
>>[t,y]=ecdifn('bifur',[0,120],[1;2],10000);
Pentru y1=1,y2=2 se obine graficul:
O traiectorie a modelului LV a=2,b=3
6
5
4
3
2
1
0
0
0.5
1
1.5
2
2.5
3
3.5
Pentru y1=3,y2=2 se obine graficul:
Ciclul limita din modelul prada pradator y1=3,y2=2
12
10
8
6
4
2
0
0
1
2
3
4
5
6
7
8
Observaie
Metoda Euler explicit NU este capabil s realizeze figura de mai sus datorit instabil
itii
sale.
172
Exemplul 7
S se scrie un program Matlab pentru trasarea unor traiectorii din planul fazelor
pentru
modelul Brusselator [26].
y1=a( +1) 1 1^2* 2
2= 1 y1^2*y2
S se arate c acesta prezint o bifurcaie Hopf.
Soluie
Unicul punct critic al acestui sistem este x=a,y=b/a.Liniariznd n jurul acestuia,
ecuaia
pentru valorile proprii este:
2+(2b+1)+=0
Bifurcia Hoph este posibil numai dac n planul parametrilor a,b un punct curent
traverseaz parabola b=a2+1.
Atunci valorile proprii devin  ai.
Dac de exemplu a=1, b=3 avem un ciclu limit, iar pentru a=1, b=1 punctul critic es
te
staionar i nu mai exist soluii periodice.
Un studiu matematic detaliat al ciclurilor limit se pot gsii de exemplu n monografi
a [27] .
Solutia periodica pentru Brusselator a=1,b=3,0<t<100
5
4.5
4
3.5
3
2.5
2
1.5
1
0.5
0
0
0.5
1
1.5
2
2.5
3
3.5
4
Punct stationar pentru Brusselator a=1,b=1,0<t<100
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0
0.2
0.4
0.6
0.8
1
1.2
1.4
E mpl l 8
n lucrarea : Nonlinear models of reaction-diffusion in rivers vol IV , pp. 217-21
9 New
Brunswick, NJ: IMACS, 1981, W.Ames i E.Lohner studiaz urmtoarea problem care
apare n studiul polurii apelor rurilor curgtoare:
173
y1'(x) = y2(x)
y2'(x) = 100*y1(x)-10*y1^2
y1(0) =1, y1'(0) =
Acesta este un sistem dinamic neliniar cu punctele fixe (0,0) i (10,0) . Un studi
u analitic
simplu demonstreaz c punctul fix (10,0) este un nod stabil, iar traiectoriile gene
reaz un
ciclu limit.
COD MATLAB
clear all;
close all;
tspan=[0,100];
y0=[9.9,0.001];
opts = odeset('OutputFcn',@odephas2,'Refine',10);
a=10;b=10;
tic;
[t,y]=ode113(@Amesloh,tspan,y0,opts,a,b);
toc;
plot(y(:,1),y(:,2),'g*',[9.9,0.001],'k*');
axis([0.0001 20 0.0001 5]);
grid on
xlabel('x(t)'), ylabel('h(t)')
Se poate observa n graficul urmtor prezena unui astfel de ciclu limit n jurul punctul
ui
critic (10,0).
1.5
1
0.5
0
0.5
1
1.5
9.9
9.95
10
10.05
10.1
10.15
10.2
10.4. Aplicaii ale sistemelor de ecuaii difereniale cu
argument ntrziat n medicin
10.4.1. Modelul Corvin, Sarafyan i Thomson
Vom considera modelul Corvin, Sarafyan, & Thomson 1997, care descrie cum se
transmite virusul HIV la o populaie omogen. n acest model x reprezint numrul
indivizilor succeptibili de infectare, y numrul efectiv de indivizi efectiv infes
tai , este
rata de imbolnvire pe o unitate de timp , D durata relaiei , c este numrul contacte
lor
sexuale de lung durat ntre parteneri, G este rata de nsntoire a celor infectai, n e
numrul indivizilor populaiei omogene.
174
n scrierea acestor coduri Matlab am folosit ideile prezentate n lucrarea [25, pag
213-230]:
Pentru t D ecuaiile sunt:
x(t)= (t)()
n=x()+y()
()=
{
ex (G( w)x(w) (w)dwds + exp (t s) y(s)ds}

Iar pentru D t :
x(t)= (t)()
n=x()+y()
()=
{
ex (G( w)x(w) (w)dwds +

exp (t s) y(s)ds}


Codul Matlab este:
function sol = HIV
global c D G n
c=0.5; D=5; G=1; n=100;
y0=[0.8*n; 0.2*n; 0; 0; 0; 0];
options = ddeset('RelTol',1e-5);
sol=dde23(@odes,[],y0,[0, D],options);
sol=dde23(@ddes,D,sol,[D,4*D],options);
plot(sol.x,[sol.y(1:2,:); 100*sol.y(3,:)]);
grid
title('HIV multiple partnership problems');
legend ('x(t)','y(t)','100\lambda(t)',0);
function dydt=odes(t,y,Z)
global c D G n
dydt=zeros(6,1);
dydt(1)=-y(1)*y(3)+G*y(2);
dydt(2)=-dydt(1);
dydt(4)=exp(G*t)*y(2);
dydt(5)=t*exp(G*t)*y(1)*y(3);
dydt(6)=exp(G*t)*y(1)*y(3);
dydt(3)=(c/n)*exp(-G*t)*((dydt(4)+dydt(5))-G*(y(4)+y(5)));
function dydt=ddes(t,y,Z)
%folosim rezolvitorul ddes deoarece exist ami multi parametrii
global c D G n
dydt=zeros(6,1);
dydt(1)=-y(1)*y(3)+G*y(2);
dydt(2)=-dydt(1);
dydt(4)=exp(G*t)*y(2)-exp(G*(t-D))*Z(2);
dydt(5)=D*exp(G*t)*y(1)*y(3)-y(6);
dydt(6)=exp(G*t)*y(1)*y(3)-exp(G*(t-D))*Z(1)*Z(3);
dydt(3)=(c/n)*exp(-G*t)*((dydt(4)+dydt(5))-G*(y(4)+y(5)));
n urma execuiei acestui program obinem rezultatul:
175
HIV multiple partnership problems
160
140
120
x(t)
y(t)
100()
100
80
60
40
20
0
0
5
10
15
20
10.4.2 Modelul lui Genik i van den Driessche
n lucrarea An Epidemic Model with Recruiment-Death Demographics and Discrete
Delays Differential Equations with Application to Biology pp237-249, Providence,
R.I:American Mathematical Society 1999, Genik & van den Driessche consider c
numrul total al unei populaiei N(t) poate fi mprit n patru submulimi:
S(t) suspeci de mbolnvire,

E(t) expui la mbolnvire,

I(t) infectai,
R(t) recuperai n urma unui tratament adecvat.
Deci :
N(t)= S(t)+E(t)+I(t)+ R(t)
Cei cinci parametrii ai acestui model pentru virusul Pasteurella muris sunt: A=0
.330 rata
naterii, d=0.006 rata de mortalitate, rata de mbolnvire n urma unui contact individu
al
= 0.308, rata de nsntoire = 0.040, iar = 0.060 reprezint rata de maortalitate exce
Exist dou valori care pot ntrzia aceste rate : imunitatea = 42.0 i timpul de expuner
, = 0.15.
Deci acest model se poate descrie sub forma unui sistem de ecuaii difereniale cu a
rgument
ntrziat astfel:
()
= A dS(t)
()
()()
()
=
=
()
()
(

) (
(
)
)
(
()()
()
) (
(
+ I(t )exp ( )
)
)

 p( ) dE(t)
exp( ) ( + + d)I(t)
= I(t)- I(t-)ex ( ) dR(t)
Vom rezolva acest sistem pe [0, 350], iar ca valori iniiale vom lua S(t)=15, E(t)
= 0,
I(t)= 2, R(t)=3 pentru t 0.
Codul Matlab este:
function sol = genik
global tau omega
176
tau=42.0; omega=0.15;
sol=dde23(@ddes,[tau,omega], [15; 0; 2; 3],[0,350]);
plot(sol.x, sol.y)
grid
title('The SEIRS epidemic model');
legend ('S(t)', 'E(t)','I(t)','R(t)');
%=============
function dydt=ddes(t,y,Z)
global tau omega
%parametrii
A=0.330; d=0.006; lambda=0.308;
gamma=0.040; epsilon= 0.060;
S=y(1); E=y(2); I=y(3); R=y(4);
Itau=Z(3,1);
Somega=Z(1,2);Eomega=Z(2,2);
Iomega=Z(3,2); Romega=Z(4,2);
Noft= S+E+I+R;
Nomega=Somega+Eomega+Iomega+Romega;
dSdt=A-d*S-lambda*((S*I)/Noft)+gamma*Itau*exp(-d*tau);
dEdt=lambda*((S*I)/Noft)-...
lambda*((Somega*Iomega)/Nomega)*exp(-d*omega)-d*E;
dIdt=lambda*((Somega*Iomega)/Nomega)*exp(-d*omega)...
- (gamma+epsilon+d)*I;
dRdt=gamma*I-gamma*Itau*exp(-d*tau)-d*R;
dydt=[dSdt; dEdt; dIdt; dRdt];
n urma execuiei acestui script obinem rezultatul:
The SEIRS epidemic model
16
S(t)
E(t)
I(t)
R(t)
14
12
10
8
6
4
2
0
2
0
50
100
150
200
250
300
350
10.4.3. Modelul Cardiovascular
Urmtorul model cardiovascular datorat lui Ottensen J.T., i prezentat n lucrarea:
Modelling the dynamical baroreflex-feedback control, Mathematical and computer
modelling, 31: 167-173, 2000, implic urmtoarele funcii Pa(t)=y1(t), presiunea
arterial, Pv(t)=y2(t),presiunea venoas, pulsul inimii H(t)=y3(t).
El sugereaz rezolvarea acestui model folosind urmtorul sistem de ecuaii difereniale
cu
argument ntrziat :
177
y1(t)=

2(t)=
(t) +

y (t) +
y (t) (

+
Vstr y (t)

)y (t)
y2(t)= f(Ts,Tp)
unde:
T T
f(Ts,Tp)=
Ottesen studiaz condiiile n care ntrzierea cauzeaz diferene calitative n solu ie i
special oscilaii n Pa (t).
Pentru t 0 soluia este constant.
y1(t)= P0
Y2(t)= (r/r+R)P0
Y3(t)=(1/r+R)(P0/Vstr)
Dac ca = 1.55, cv = 519, R = 1.05, r= 0.068, 0 =
= = 93,
H =0.84, 0=
=p=7,H = 1.17,H = 0 Vstr = 67.9, P0=93
{1 7.5}
Folosind urmtorul cod Matlab se obin rezultatele:
function sol = ottensen
global R r Vstr
R = 1.05;
r = 0.068;
Vstr = 67.9;
P0
= 93;
Paval = P0;
Pvval = (1 / (1 + R/r)) * P0;
Hval = (1 / (R * Vstr)) * (1 / (1 + r/R)) * P0;
history = [Paval; Pvval; Hval];
opts = ddeset('RelTol',1e-5,'AbsTol',1e-8);
for tau = [1 7.5]
sol = dde23(@ddes,tau,history,[0, 350],opts);
figure
plot(sol.x,sol.y(1,:))
title(['Modelul Ottensen' ...
' \tau = ',num2str(tau)])
xlabel('time t')
ylabel('P_a(t)')
axis([0 350 70 105])
end
%=======================================================
function v = ddes(t,y,Z)
global R r Vstr
ca = 1.55;
cv = 519;
gammaH = 0;
alpha0 = 93;
alphas = 93;
alphap = 93;
alphaH = 0.84;
beta0 = 7;
betas = 7;
178
betap = 7;
betaH = 1.17;
ylag = Z(:,1);
Patau = ylag(1);
Paoft = y(1);
Pvoft = y(2);
Hoft = y(3);
dPadt = - (1 / (ca * R)) * Paoft + (1/(ca * R)) * Pvoft ...
+ (1/ca) * Vstr * Hoft;
dPvdt = (1 / (cv * R)) * Paoft
...
- ( 1 / (cv * R) + 1 / (cv * r) ) * Pvoft;
Ts = 1 / ( 1 + (Patau / alphas)^betas );
Tp = 1 / ( 1 + (alphap / Paoft)^betap );
dHdt = (alphaH * Ts) / (1 + gammaH * Tp) - betaH * Tp;
v = [ dPadt; dPvdt; dHdt ];
Modelul Ottensen = 1
105
100
95
Pa(t)
90
85
80
75
70
0
50
100
150
200
250
300
250
300
350
time t
Modelul Ottensen = 7.5
105
100
95
Pa(t)
90
85
80
75
70
0
50
100
150
200
350
time t
Dac t=600,presiunea periferic R se reduce exponenial de la valoarea constant
R=1.05 la valoarea constant R=0.84 i =4 n intervalul de ntrziere [0,1000].
179
Folosind urmtorul program Matlab:
function sol = ottesen1
global r Vstr
R = 1.05; r = 0.068; Vstr = 67.9;
P0
= 93;
Paval
= P0;
Pvval
= (1 / (1 + R/r)) * P0;
Hval
= (1 / (R * Vstr)) * (1 / (1 + r/R)) * P0;
history = [Paval; Pvval; Hval];
tau = 4;
opts = ddeset('Jumps',600,'RelTol',1e-4,'AbsTol',1e-7);
sol = dde23(@ddes,tau,history,[0, 1000],opts);
plot(sol.x,sol.y(3,:))
grid
title(['Ottesen' ...
' \tau = ',num2str(tau)])
xlabel('time t')
ylabel('H(t)')
%====================================================
function v = ddes(t,y,Z)
global r Vstr
ca = 1.55; cv = 519; gammaH = 0;
alpha0 = 93; alphas = 93; alphap = 93; alphaH = 0.84;
beta0 = 7; betas = 7; betap = 7; betaH = 1.17;
if t <= 600
R = 1.05;
else
R = 0.21 * exp(600-t) + 0.84;
end
ylag = Z(:,1);
Patau = ylag(1);
Paoft = y(1);
Pvoft = y(2);
Hoft = y(3);
dPadt = - (1 / (ca * R)) * Paoft + (1/(ca * R)) * Pvoft ...
+ (1/ca) * Vstr * Hoft;
dPvdt = (1 / (cv * R)) * Paoft
...
- ( 1 / (cv * R) + 1 / (cv * r) ) * Pvoft;
Ts = 1 / ( 1 + (Patau / alphas)^betas );
Tp = 1 / ( 1 + (alphap / Paoft)^betap );
dHdt = (alphaH * Ts) / (1 + gammaH * Tp) - betaH * Tp;
v = [ dPadt; dPvdt; dHdt ];
pentru = 4 se obine rezultatul:
180
Ottesen = 4
2
1.8
H(t)
1.6
1.4
1.2
1
0.8
0
200
400
600
800
1000
time t
10.4.4. Modelul lui Plant
n lucrarea Biological Delay Systems: Linear Stability Theory, Cambridge Universit
y
Press 1989, N.MacDonald propune urmtorul sistem de ecuaii difereniale cu argument
ntrziat care modeleaz matematic interaciunea dintre doi neuroni din sinapse cunoscut
ca: Plant
neuron interaction model model folosit n studiul reelelor Neuronale.
( )
+ m(y (t ) y
y1(t)= (t) y (t)
2(t)=r( 1(t)+a 2(t))

 y
., este
prima component a soluiei de echilibru ( y
.,
, y
,
.,
)
).
Dac parametrii: a = 0.8, b = 0.7, r = 0.08, = 20, m = 10, i
rezolvm acest sistem de ecuaii difereniale cu argument ntrziat n intervalul: [0, 60]
obinem rezultatele:
y1(t)= 0,4 y .,
y2(t)= 1,8 y .,
Alegem y ., = -1.22764016121492, i vom rezolva cu ajutorul Matlab-ului aceas
t problem pentru = 20, separat pentru m = 10 i m = -10.
Pentru m = 10 obinem graficul:
181
Plant
Neuron Interaction Model with m = 10
10
8
6
4
2
0
2
4
6
8
0
10
20
30
tim t
40
50
60
Iar pentru m = -10 obinem graficul:
Plant
Neuron Interaction Model with m = 10
10
5
0
5
0
10
20
30
tim t
40
50
60
10.4.5. Modelul matematic al rspunsului imunitar
Sistemul imunitar este format dintr-o mulime de celule i molecule care conine cel
puin 106 clone ale celulelor ce acioneaz ntre ele. Sistemul imunitar depinde de sist
emul
nervos i de sistemul endocrin . Exist n permanen o competiie ntre sistemul imunitar
agenii infecioi [34].
Modelul rspunsului imunitar asupra unui agent infecios descrie rezultatul competiie
i dintre cele dou sisteme, considernd la un moment t o caracteristic a unui
agent infecios ce cuantific rspunsul sistemului imunitar (microorganisme, macromole
cule,
celule de tumori imunogene ) ca fiind x(t) i concentraia agenilor imunitari cei mai
importani (anticorpi, celule NK,T-citotoxice) ca fiind y(t. Efectul rspunsului im
unitar la un
182
moment dat este dat de kx(t)y(t), k>0 , rata medie de producere a celulelor infeci
oase este de rx(t),r>0.
Variaia caracteristicii agentului infecios este dat de:
x(t)=rx(t)-kx(t)y(t)
(1)
Interaciunea dintre variaia concentraiei agenilor imunitari (durata medie de via a
acestora ) i caracteristica agentului infecios este descris cu ajutorul funciilor f,
g: + +
derivabile i este dat de:
y(t)=pf(ax(t)+(1-a)x(t-))+
g(y())y(),
(2)
une > 0, p>0, s>0, a[0,1] i x(t-) reprezint caracteristica agentului
infecios din momentul t-.
on
ierre funciilor f,g i a argumentului ntrziat corespunde din punct de vedere
biologic rspunsului imunitar, unde :
f(x)=
,g(y)=
,
x()=(), [,0],y(0)=y0.
Aniz modelului rspunsului imunitar cu argument ntrziat, const n stabilirea variaie
n
raport cu timpul a variabilelor de stare x(t), y(t), n vecintatea unei stri normale
a
fenomenului prin existena unor valori constante a caracteristicilor agentului inf
ecios i a
concentraiei agenilor imunitari.
Deci din punct de vedere matematic trebuie determinat punctul de echilibru i de e
fectuat un
studiu al stabilitii n jurul acestui punct. Urmtoarea teorem ne ajut n acest sens.
Teorem
Urmtoarele afirmaii snt echivalente:

x0=

Dac 0 < s <


(
)(
)
,
Dac = 0 i y0
+
i p > y0-
atunci valorile:
y0= sunt coordonatele punctului de echilibru (punctul fix
al sistemului (1)+(2)) (3).
> 2 i s <
+
atunci punctul de echibru este
asimptotic stabil (4).

Dac = 0 i 0 < y0 < 2 i


s <
(
+
)3 ,atunci punctul de
echilibru (x0,y0)
este asimptotic stabil (5)
Dac au loc (3) sau (4), atunci pentru orice [0,c], punctul de echilibru
(x0, y0) este asimptotic stabil unde
c=
(
(6)
)

Pentru: k=2.5, r=0.9, s=0.25, p=0.55, a=0.25 suntem n cazul (6).


Scriind cod Matlab am obinut punctul de echilibru x0= 1.147584637, y0=0.36 i
c=1.144486805
i reprezentrile grafice:
183
184
10.4.6. Modelul epilepsiei
Epilepsia (n greaca veche: , eplpsis) este o boal a sistemului nervos central,
caracterizat prin crize, accese convulsive intermitente, nso ite de pierderea cunotin e
i, de
halucina ii i de alte tulburri psihice.
Cauza precis a bolii nu este cunoscut, se presupun predispozi ii ereditare, infec ii c
u inflama ii acute sau intoxica ii care pot s declaneze accese epileptiforme. Accesele
epileptice ar fi
produse de o descrcare simultan a fluxului nervos la nivelul unor grupe de neuroni
din creier.
185
Aceast diagnoz se poate pune cu ajutorul ajutorul electroencefalogramei. Medica ia e
pilesiei este simptomatic, adic se caut combatrea simptomelor cu medicamente antisp
astice
i relaxante. S-au fcut i interven ii chirurgicale pe creier, ob inndu-se rezultate
ndoielnice.
Simptome epileptiforme asemntoare s-au depistat i la animale.
S se studieze gradul de mprtiere al modelului epilepsiei, dat de ecuaia:
x= 4*a*x^3-6*a*x^2+(1+2*a)*x; x(0.1)=0; pentru a[0,10].
Scrnd cod Matalb obine graficul:
10.4.7. Modelul matematic al testului IVGTT
Relaia dinamic dintre glucoz i insulin se stabilete folosind testul de toleran al
glucozei administrat intravenos cunoscut n literatura de specialitate ca testul IV
GTT [12].
Trebuie menionat ca aceast problem este studiat la Universitatea Louisville Kentucky
U.S.A, iar eu n acesast lucrare am preluat unele din aceste rezultate.
Variabile de stare ale modelului sunt: cantintatea de glucoz plasm la momentul t,
notat
G(t) [mg/t] i concentraia de insulin notat I(t) [UI/me]funcii presupuse
derivabile. Modelul matematic este dat de sistemul de ecuaii difereniale :
G(t)=-f(G(t))-g(G(t),I(t))+ b7
I(t)=-p(I(t))+q(G(t-)),
(EDRI)
Cu condiia iniial :
G()=(), [-,0], I(0)=Ib +b3b0, > 0. (CI)
:[-,0] este o funcie derivabil cu (0)= G0+ b0, unde G0, b0, Ib, b3, b0
reprezint parametrii
modelului i se obin prin analize de laborator. n continuare se consider funciile:
f(x)=b1x, g(x,y)= xy, p(x)=b2(x),q(x)=b6x, (FI)
186
unde b1, b4, b6 sunt numere positive ce se obin din analize de laborator i 0 este
un parametru .
Teorem
Urmtoarele afirmaii sunt echivalente:
Sistemul de ecuaii (EDRI) cu condiia iniial (CI) i funciile (FI) are un unic
punct de echibibru
(I0, G0) +2 este dat de:
I0 = G ,
G0 =

(
(

)
, unde =
)
(

) +4b2b7((b b +b b )
Dac = 0 punctul de echilibru (I0, G0) +2 este asymptotic stabil .
Pentru orice [0,c] punctul de echibru (I0, G0) +2 este asimptotic stabil dac:
c= (+b2)/b4b6
Ulznd un program Matlab pentru coeficienii b1=0.0002, b0=209, b2=0.042, b3=1.64
,
b7=0.68, =0.001,
b4=1.09E-0.4, b5=23, b6=0.033, se obin urmtoarele rezultate:
Dac n urma testului de glicemie se obine G0=133.87, n urma administrrii cu insulin cu
o medie zilnic (APIDRA) de I0=104.69, se observ din graficul urmtor echilibrarea
organismului.
Concluzie:
Din reprezentarea grafic de mai sus se observ prezena unui centru stabil (din punct
de
vedere al unui sistem dinamic), iar din punct de vedere al medicinei o echilibra
re a raportului
glicemie-insulin.
187
10.5. Sisteme de ecuaii difereniale cu aplicaii n
dinamica fluidelor
n continuare vom da cteva exemple sugestive preluate din lucrarea de referin [3].
10.5.1. Cderea liber a unui corp sferic
S considerm un corp sferic de mas m i diametru d plasat la t=0 n originea axei
verticale descendente Oz, cu o vitez v0 n direcia vertical care se deplaseaz sub aci
a
forei gravitaionale mg pe axa Oz.
La momentul t corpul se gsete la distan z(t) de origine i are viteza v(t) mrimi
care verific urmtorul sistem de ecuaii difereniale:
= v(t)
=

[B-cv|v|cd(v)]

Unde A=1+ , B=(1-2)g, C= , iar 2 = f / este raportul dintre densitatea


fluidului i cea a corpului,
cd este coeficientul de rezisten la naintare ( drag coefficient ) datorat vscozitii
fluidului.
El depinde de numrul lui Reynolds R i este dificil de evaluat analitic, determinndu
-se
experimental sau utiliznd codul Matlab urmtor :
Exemplu
Urmtoarele coduri Matlab sunt preluate din lucrarile [10], [21].
% functie care determina coeficientul Reynolds:
function cd = drag(Re)
if Re==0 cd=0;
elseif Re>=0 & Re<=1 cd=24/Re;
elseif Re>1 & Re<=400 cd=24/Re^0.646;
elseif Re>400 & Re<=3.e5 cd=0.5;
elseif Re>3.e5 & Re<=2.e6 cd=3.66e-4*Re^0.4275;
else cd=0.18;
end
Vom face urmtorul experiment cu o minge de ping-pong (cu densitatea egal cu a aeru
lui )
cu diametrul d=0.036m n ap , unde densitatea fluidului se poate lua f =1000 kg/m3,
=1X10-6m2/s, =1.22kg/m3,
g=9.81 m/s2.
Vom scrie urmtoarele programe Matlab.
1.Cmpul vectorial
function yprim = corpsf(x,y)
global ro d rof nu;
yprim=zeros(2,1);
g=9.81;robar=rof/ro;
a=1+robar/2;b=(1-robar)*g;c=3*robar/4/d;
r=abs(y(2))*d/nu; cd=drag(r);
yprim(1)=y(2);
yprim(2)=(b-c*y(2)*abs(y(2))*cd)/a;
end
188
2.Programul principal este:
function [t,x] = cadlib( ro,d,rof,nu,Tf,z0,v0 )
%cazul unei mingi de ping-pong
global ro d rof nu;
ro=1.22;rof=1000;nu=0.000001;d=0.036;Tf=20;z0=0;
v0=0.5;%viteza de cadere libera
[t,x]=ode45('corpsf',[0,20],[z0,v0]);
plot(t,x(:,2),'.','MarkerSize',12);
grid on
xlabel('t(s)');ylabel('v(m/s)');
title('Viteza de cadere libera a unei mingi de ping-pong cu ro=1.22
kg/m^3 i diametrul d=0.036')
end
n urma execuiei acestui program rezult graficul:
3
Viteza de cadere libera a unei mingi de pingpo cu ro=1.22 kg/m cu diametrul d=0
.036
0.5
v(m/s)
0
0.5
1
0
5
10
t(
)
15
20
10.5.2 Micrile verticale ale unei aripi de avion
Studiul vibraiilor unei aripi de avion fixate elastic, n anumite condiii de zbor, p
oate fi
fcut tot prin simulare numeric, deoarece studiul analitic este dificil iar cel exp
erimental
costisitor.
Presupunem c greutatea aripii mg este suportat de un resort elastic de constant k,
echivalent cu fixarea elastic a aripii de avion. Dac vntul lipsete centrul de mas se
afl n
starea de echilibru n z=0 , iar arpa face un unghi 0 cu orizontala. La deplasarea
vertical a
aripii, micarea este descris de cota z(t) i viteza v(t) i presupunem existena unui vn
orizontal de vitez u. Dac lum n considerare i viteza v, unghiul de atac al aripii dev
ine
=0-ctg(v/u), iar [-18o ,18o]. Dac inem cont de fora elastic generat de resort i
cea ascensional generat de vnt, ecuaiile micrii devin:
m
dz
=v
dt
= kz + fSclu u^2 + ^2
unde f este densitatea aerului, S este proiecia pe orizontal a ariei aripii , iar c
l=2.
189
Aceste ecuaii conin muli parametrii, de aceea T.Petrila i D.Trif [21 pag360-362]
sugereaz rezolvarea sistemului de mai sus n form adimensional pentru a reduce numrul
parametrilor. Ei sugereaz folosirea unor mrimi de referin : timpul, lungimea i viteza
,
alegnd ca timp de referin perioada oscilaiilor libere ale aripii 2 m/ , deformaia ari
ii
datorit greutii mg/ ca lungime de referin , iar raportul lor ca vitez de referin.
Definim mrimile adimensionale astfel:
T= /2 m/ , Z=
, U=u/

,V=v/

n aceste condiii ecuaiile sistemului devin:


dZ
=V
dT
= (2 )2Z+clUU + V

Unde: =
.
Vom scrie un program Matlab n care vom lua: f = 1.22kg/m3, m=3kg,
k=980kg/s2, g = 9.81m/s2, S=0.3 m2, 0=1.
Exem lu .
Coduri Matlab
function yprim = aripv(x,y)
global U;
yprim=zeros(2,1);
UU=U*(1+0.1*sin(2*x));
V=y(2)+0.14*U*sin(0.5*x);
alpha0=10*pi/180;
beta=0.00183;
alpha=alpha0-atan(V/UU);
cl=0;
if abs(alpha)<=pi/10
cl=2*pi*alpha;
end;
yprim(1)=y(2);
yprim(2)=-4*pi^2*y(1)+beta*cl*UU*sqrt(UU^2+V^2);
end
Cmpul vectorial:
[t,x]=ode45('aripv',[0,30],[0,0]);
plot(t,x(:,1));
title('Vibratiile unei aripi de avion');
grid
xlabel('T');
ylabel('Z');
Apelul din linia de comanda:
>>global U;U=100;aripvp;
Rezult graficul:
190
Vibratiile unei aripi de avion
4
3
2
Z
1
0
1
2
3
4
0
5
10
15
T
20
25
30
10.5.3. Modelul descompunerii termice a ozonului
n lucrarea Lapidus L. The occurence and numerical solution of physical and chemic
al
systems widely varyng time pp.187-200 in Stiff Differential Systems editura Penu
m,
New-York 1973 propune urmtorul sistem de ecuaii difereniale care simuleaz acest
fenomen:
dx
= xy + ky
d
=

Aici variabila x reprezint concentraia de ozon, variabila y concentraia de oxigen,


iar pentru
parametrii reali = 1/98 i k=3.
Rezolvm aceast sistem de ecuaii difereniale folosind valorile iniiale : x(0) = 1, y(
0) = 0 iar
intervalul de integrare este [0,240].
Exemplul 3.
Codul Matlab
function lapidus
global epsilon kappa
epsilon = 1/98;
kappa = 3;
options = odeset('Stats','on');
[t,y] = ode15s(@f,[0,240],[1;0],options);
semilogx(t,y(:,2))
grid on
axis([0.01 100 0 1])
title('Modelul Lapidus pentru epsilon = 1/98.');
%===========================================================
function dydt = f(t,y)
global epsilon kappa
dydt = [0; 0];
dydt(1) = - y(1) - y(1)*y(2) + epsilon*kappa*y(2);
dydt(2) = (y(1) - y(1)*y(2) - epsilon*kappa*y(2))/epsilon;
Sugerm folosirea rezolvitorului ode15s datorit faptului c y(t) este multiplicat cu .
n urma executrii acestui program rezult graficul:
191
Modelul Lapidus pentru epsilon = 1/98.
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
2
10
1
0
10
1
10
2
10
10
10.6. Rezolvarea numeric a problemelor cu valori pe
frontier
10.6.1. Metode numerice
Metoda cu diferene
Fie problema cu valori pe frontier:
+ A(x)
+ B(x)y = C(x), x [a, b]
(BVP)
y(a)=, y(b) =
Pentru a rezolva acest tip de probleme n prima faz ele se discretizeaz de exemplu p
rin
diferene finite.
Se consider grila:
a=x0,...,xi=ih, ;xn+1=b,i=0,1,,n+1.
Unde: h= .
Valorile lui y pe aceste puncte vor fi notate prin yi, iar din formula lui Taylo
r avem pentru
h mic:
(
yi+m=yi+mhyi+
Rezult:
yi-1=yi-
hyi+
yi+1=yi+ hyi+
( )
( )
)
!
yi+
yi yi+
yi+
yi+
Scznd aceste relaii obinem formula cu diferene finite progressive:
yi=
y
Procednd analog se obine formula cu diferene finite regresive:
+ y
yi=
i cea cu diferene centrate:
yi=

Eoile de aproximare sunt (h), pentru primele dou metode i (h2) pentru ultima. De
rivata de ordin II se aproximeaz prin:
yi= (yi+1-2yi+yi-1)/h2+h2/12 yi+
192
locuid aceste formule n ecuaia diferenial i ordonnd termenii avem:
(1- A )yi-1+(h2Bi-2)yi+(1+ A )yi+1=h2Ci i=1,...n.
Ceea ce reprezint condiia de verificare a ecuaiei difereniale n nodurile
interioare, unde prin Ai, Bi, Ci se neleg valorile lor n xi.
n ceea ce privete condiia la limit avem:
y0=ym ,yn+1=yM
valori cunoscute care trec deci n membrul drept. Rezolvnd acest sistem cu tehnicil
e de
matrici rare, se obin valorile aproximative ale soluiei y n nodurile interioare ale
grilei
(matricea sistemului este diagonal dominant, deci inversabil).
Similar se procedeaz i la sisteme de ecuaii difereniale.
Metode de colocaie
Aceste metode fac parte din metodele numerice de aproximare analitice. De obicei
acestea au
forma unei dezvoltri ntr-o serie trunchiat, fie dup puterile lui x, fie n polinoame
otogonale Cebev, Laguerre etc. fie ntr-un alt sistem de funcii de baz ( de exemplu Bs
plines).
, N arbitrar i n fiecare
Fie intervalul [a,b] i o diviziune uniform a lui , cu pasul h =
subinterval [xi, xi+1] inserm k puncte ce reprezint rdcinile unor polinoame ortogona
le :
Cebev, Legendre, etc , astfel se obin n=N*k+2 puncte de colocaie ale intervalului (
se
adaug i capetele intervalului).
Metodele de colocaie pe care le vom folosi n continuare constau n a determina soluii
aproximative u(x) ale soluiei exacte y(x) ale problemei bilocale valabile pentru o
rice
x[, ] sub forma:
u(x)=
c j(x),
und j(x) Pk,,n unde Pk,,n este mulimea polinoamelor de grad cel mult k definite pe
diviziunea , a intervalului [a,b] , j(x) j=0,1,2,...n sunt funcii liniar independen
te, iar cj
sunt parametrii reali. Aceti parametrii sunt determinai, astfel nct u(x)s satisfac
ecuaia diferenial pe punctele de colocaie a intervalului [a,b] i n plus s verifice
condiiile la limit.
Detalii privind existena i unicitatea acestor soluii se pot regsii n lucrarea [22].
Observaie
Malabul pune la dispoziia utilizatorilor un rezolvitor eficient bvp4c,mbuntit prin
bvp5c datorat lui Carl de Boor i bazat pe funcii B-splines.
Controlul erorii n cazul aplicrii rezolvitorului bvp4c
Se face evalund:
( ) , | ( )| +
Und prin , am notat valorile soluiei exacte a problemei BVP pe punctele de colocai
e, iar
prin tolerana.
Evident dac | ( )| 1 controlul devine:
iar dac |
( )| > 1 atunci:
(
(
)
)

,
,
|
193
,
(
)|
10.7.2. Forma liniar
n continuare vom trata problema BVP cu condiii n interiorul intervalului, considernd
c problema clasic se poate obine pentru a=c, b=d.
Acest lucru este motivat de faptul c dac intervalul de integrare este infinit, sau
condiiile
la limit sunt infinite apar foarte multe probleme de aceea vom trata n continuare i
problemele bilocale de urmtoarea form:
y(x)+q(x)y(x)=r(x),
axb
cu condiii n interiorul intervalului de integrare:
y(c)=, y(d)=; a<c<d<b
n continuare vom considera c sunt ndeplinite condiiile de existen i unicitate a
soluiilor acestor probleme.
n lucrarea [22] am rezolvat aceste probleme cu metoda colocaiei cu funcii B-spline i
polinoame ortogonale de tip Cebev .Vom da cteva exemple sugestive n acest sens , mai
multe exemple se pot regsi n lucrarea mai sus menionat.
Exemplu 1
Problema lui Burden [2 pag.48], care apare n calculul structurii de rezisten a anum
itor
construcii:
-y-y = x,
x(0,1)
y((1/4))=((si(1/4))/(si1))-(1/4),
y((1/2))=((si(1/2))/(si1))-(1/2).
Codul Matlab este:
%numrul punctelor de colocaie N=nk+2,k=gradul B-spline
%metoda de colocaie cu funcii B-spline i Runge-Kutta.
q = @(x) -ones(size(x));
r = @(x) x;
% Solutia exacta
solex= @(x) -x+sin(x)/sin(1);
a=0; b=1;d=1/4;e=1/2;
alpha=solex(d);
beta=solex(e);
t=linspace(a,b,100);
%numrul punctelor de colocaie
n=3;k=3;
% Apelul funciei tic pentru contorizarea timpului de execuie
tic;
[x,y]=BVPcollocRK(q,r,a,b,d,e,alpha,beta,n,k,t);
toc;
subplot(2,1,1)
% Soluia
plot(t,solex(t),x,y,[d,e],[alpha,beta],'o')
xlabel('t')
ylabel('solex(t)')
title('Burden BVP problem for alpha=y(1/4) and beta =y(1/6)')
legend('Approximate solution','Exact solution','d=1/4,e=1/2',0)
% Erorile
subplot(2,1,2)
semilogy(x,abs(solex(x)-y),'-')
title('Errors in semilogarithmic scale ')
grid on
194
n urma execuiei acestui program rezult graficele:
Burden BVP problem for alpha=y(1/4) and beta=y(1/6)
0.08
solex(t)
0.06
0.04
0.02
Approximate solution
d=1/4,e=1/2
0
0.02
0
0.2
0
0.2
5
0.4
0.6
t
Error
in semilogarithmic scale
0.8
1
0.8
1
10
10
10
15
10
0.4
0.6
Dac a=d, e=b problema de vine o problem clasic (BVP), rezultatele se pot vedea n
graficul urmtor:
Burden BVP problem for alpha=y(0) and beta=y(1)
0.08
solex(t)
0.06
0.04
0.02
0 (a,alpha) =(0, 0)
0.02
0
0.2
0
0.2
5
( , ta)=(1,0)
0.4
0.6
t
Error
in semilogarithmic scale
0.8
1
0.8
1
10
10
10
15
10
20
10
0.4
0.6
U alt exemplu este cazul liniar n care soluia este oscilant, adic exist mai mult de
dou
zerouri n intervalul de integrare.
195
Exemplu 2
Fiind dat problema bilocal cunoscut n literatura de specialitate ca problema lui
Greengard i Rohlin sau ecuaia cuardei vibrante ntr-un domeniu de frecven
[2, pp.68]:
y''+86*y=5*sin(9*t);
y(pi/54)=1/2;y(pi/12)=sqrt(3)/2.
Codul Matlab este:
tic;
q = @(x) -86*ones(size(x));
r = @(x) -5*sin(9*x);
solex= @(x) sin(9*x);
a=0; b=1;
%condiii in interiorul intervalului
d=pi/54;
e=pi/12;
alpha=solex(d);
beta=solex(e);
t=linspace(a,b,100);
n=3;
k=3;
tic;
[x,y]=BVPcollocRK(q,r,a,b,d,e,alpha,beta,n,k,t);
toc;
subplot(2,1,1)
plot(t,solex(t),x,y,[d,e],[alpha,beta],'o')
grid on
title('Problema Greengard-Rokhlin')
subplot(2,1,2),semilogy(x,abs(solex(x)-y),'-')
xlabel('x','FontSize',10),
ylabel('ln |y(x)-y_{\Delta}(x)|','FontSize',10)
grid on
title('Eroarea la scara semilogaritmica')
n urma execuiei acestui program Matlab obinem rezultatul:
Problema GreengardRokhli
1
0.5
0
0.5
1
0
0.2
0.4
0.6
0.8
1
0.8
1
Eroara la scara semilogaritmica
4
l |y(x) (x)|
10
6
10
8
10
10
10
0
0.2
0.4
0.6

Aalo dac a=e, b=d obinem rezultatul :
196
Problema GreengardRokhli y(0)=0, y(1)=sin(9)
1
0.5
0
0.5
1
0
0.2
0.4
0.6
0.8
1
0.8
1
Eroara la scara semilogaritmica
0

ln |y(x) (x)|
10
5
10
10
10
15
10
0
0.2
0.4
0.6

10.6.3. Forma neliniar
Formularea problemei:
Fie ecuaia diferenial de ordin II neliniar i neomogen cu condiii n interiorul
intervalului [a,b].
y(x)=f(x,y(x)); x [, ]
cu condiii la limit de tip Dirichlet neomogene date n interiorul intervalului de in
tegrare.
y(c)=, y(d)=, a c d b.
Unele din aceste tipuri de probleme nu au soluii analitice, deci singura posibili
tate de
rezolvare a lor sunt metodele numerice. Amintim cteva dintre aceste metode (31) :
metoda shutting,
metoda lui Newton,
metoda colocaiei.
n aceast lucrare ne vom ocupa s prezentm exemple de utilizare ale urmtoarelor
metode de colocaie :
metoda global cu funcii B-splines,
metoda combinat polinoame ortogonale Cebev i Runge-Kutta,
metoda combinat B-splines i Runge-Kutta.
Metodele combinate presupunem descompunerea intervalului de integrare n [a,c], [c
,d],
[d,b], astfel :
pe intervalele [a,c] i [d,b] tratm problema (IVP) cu rezolvitorul ode45,
[c,d] folosim metode de colocaie cu B-spline sau polinoame ortogonale Cebev.
De asemenea suntem interesai de costurile de execuie ( run-times ).
Exemplu 3
Urmtoarea problem cunoscut n literatura de specialitate ca Problema lui Bratu [22,
pag. 42], i apare n modelul combustiei spontane este:
u''+exp(u)=0;
u(0.2)=u(0.8)=0.08918993462883;
folosim ca solutie de start:
y(x)=x(1-x)
197
Pentru calculul valorilor n u(0.2)=u(0.8)=0.08918993462883; am folosit cod
Maple.
Codul Matlab este:
% Problema lui BRATU
%Folosim pentru metodele C.C+R.K si B.s+R.K aceasi solutie de start:
%y(x)=x(1-x)
%Pentru metoda B.S. Globala solutia de start este:
%y(x)=3.9x(1-x)/7;
%u''+exp(u)=0; u(0.2)=u(0.8)=0.08918993462883;
f=@(x,y) -exp(y);
df=@(x,y) -exp(y);
err=1e-10;%criteriul de stop
NMAX=50;%numarul maxim de iteratii
N=15;%numarul punctelor de diviziune
f0=@(x) x.*(1-x);%solutia de start
a=0; b=1;
%condiii din interirul intervalului (0,1)
c=0.2;
d=0.8;
%valorile alpha i beta sunt calculate cu Maple
alpha=0.08918993462883; bet=0.08918993462883;
%metoda pseudospectrala+Runge-Kutta
tic;
[x,y,ni]=solvepolylocalceb(N,f,df,a,b,c,d,alpha,bet,f0,err,NMAX);
toc;
ni;%numar de iteratii
subplot(3,1,1);
plot(x,y,[c,d],[alpha,bet],'o')
grid on
title('Problema lui Bratu CC+RK')
%metoda B-splines+Runge-Kutta
k=3;d=0.2;
e=0.8;N=15;
t=linspace(a,b,100);
tic;
[x,y]=polycalnlinRK(f,df,a,b,d,e,alpha,bet,N,k,f0,t,err);
toc;
subplot(3,1,2);
plot(x,y,[d,e],[alpha,bet],'x')
grid on
title('Problema lui Bratu BS+RK')
%metoda globala B-spline
N=15;
startv=@(x) 3.9*x.*(1-x)/7;
[x,y]=polycollocnelin(f,df,a,b,d,e,alpha,bet,N,k,startv,t,err);
toc;
subplot(3,1,3);
plot(x,y,[d,e],[alpha,bet],'*')
grid on
title('Problema lui Bratu globala BS')
n urma execuiei scriptului de mai sus rezult graficul:
198
Problema lui Bratu CC+RK
0.2
0.1
0
0.1
0
0.2
0.4
0.6
Pro lma lui Bratu BS+RK
0.8
1
0
0.2
0.4
0.6
Problema lui Bratu globala BS
0.8
1
0
0.2
0.8
1
0.2
0.1
0
0.1
0.2
0.1
0
0.1
0.4
0.6
Am folosit pentru compararea costurilor funciile Matlab tic-toc,iar rezultatele s
e pot
vedea n tabelul urmtor:

C.C + R.K
B.S +R.K
Global B.S
10
0.0540
0.035
0.021
10
0.077
0.043
0.023
10
0.049
0.025
0.024
10
0.055
0.031
0.031
10
0.054
0.036
0.030
10 0.058
0.028
0.026
Unde prin am notat eroarea.
Problema clasic cu valori pe frontier:
u''+exp(u)=0;
u(0)=u(1)=0;
Folosind codul Matlab din lucrarea [8,pag:168-169] care foloseste rezolvitorul B
VP4c se
obine graficul:
0.16
0.14
0.12
0.1
0.08
0.06
0.04
0.02
0
0
0.2
0.4
0.6
0.8
1
Costurile de execuie furnizate de funciile MATLAB tic i toc sunt: 0.629355
seconds.
199
Concluzie
Costurile mai mari se datoreaz faptului c pentru a obine soluia aproximativ autorii
aplic de mai multe iteraii rezolvitorului BVP4c i extrapoleaz de fiecare dat rezultat
ele intermediare cu BVPINIT.
10.6.4. Condiii la limit infinite
Acest tip de probleme a nceput s fie studiat n ultimii 50 ani, deoarece ele apar n m
odele
matematice din medicin, chimie, biologie, reele Neuronale , reactoare nucleare, co
mpresia
i criptarea datelor etc.
Pentru a se nelege mai bine acest tip de probleme vom da cteva exemple:
Exemplul 1 [8, pag. 155]
Vom trata n continuare modelul lui Thomas-Fermi care apare n procesul de dezintegr
are a
atomului de uraniu n reactoarele nucleare:
y=x-1/2y3/2
cu condiii pe frontier:
y(0)=1, y()=0
Se observ c x = 0 este un punct singular, mai mult y() = 0, deci abordarea unei ast
fel de
problem este foarte dificil. Davis (1962 ) reuete folosind o dezvoltare n serii de pu
teri s
determine o soluie raional aproximativ :
y(x)144x-3 ,y(x) -432x-4.
Vom ncerca o rezolvare numeric folosind o metod combinat adic pe [0.15, 27] o
metod de colocaie bazat colocaie cu B-spline, iar pe [0, 0.15] i [27,) o metod Runge
ta-Fehlberg (ode45).
Codul Matlab
% Modelul Thomas Fermi: y''=x^(-1/2)*y^(3/2)
%Conditii la limit y(0)=1;y(infinity)=0;
%BS+RK method
f=@(x,y) x.^(-1/2).*y.^(3/2);
df=@(x,y) 3/2*x.^(-1/2).*y.^(1/2);
err=1e-10;
NMAX=5;
f0=@(x) 144*x.^(-3);
infty=10^25;
%interval
a=0.0001; b=30;
%number of collocation points
k=3;N=128;
%inner points
d=0.15;e=27;
alpha=0.978608879909728;
bet= 0.0073;
t=linspace(a,b,100);
tic;
profile on
[x,y]=polycalnlinRK(f,df,a,b,d,e,alpha,bet,N,k,f0,t,err);
toc;
profile viewer
profsave(profile('info'),'profile_results');
figure(3);
plot(x,y,[d,e],[alpha,bet],'*')
200
axis=[0 30 0 1];
grid on
title('modelul Fermi-Thomas B-splines+Runge-Kutta')
n urma execuiei codului Matlab de mai sus se obine graficul:
FermiThoma
equation B
pli
+R K tta
1.4
1.2
1
0.8
0.6
0.4
0.2
0
0
5
10
15
20
25
30
Co
t ril de execuie sunt: 1.077779 seconds.
Aceai problem tratat dup ideea lui Gladwell [8 p. 155:156] folosind codul Matlab:
function sol = FermiShampine
%Rezolvare Bvp4c ideea propus de Shampine
global d D
left = [1 0.1 0.01 0.01 0.001];
right = [20 30 40 50 60];
hold on
profile on
for i = 1:5
tic
d = left(i);
D = right(i);
if i == 1
solinit = bvpinit(linspace(d,D,5),@guess,-1.6);
else
solinit = bvpinit(sol,[d,D]);
end
sol = bvp4c(@odes,@bcs,solinit);
tt(i)=toc;
figure(1)
plot(sol.x,sol.y(1,:),sol.x(end),sol.y(1,end),'ro',...
sol.x(1),sol.y(1,1),'ko');
title('Shampine-bvp4c-5(iterations)')
axis([0 70 0 1]);
grid on
drawnow
end
profile viewer
hold off
figure (2)
x = [0 sol.x];
y = [1 sol.y(1,:)];
201
plot(x,y)
title('Shampine-bvp4c-final')
axis([0 70 0 1])
grid on
sum(tt)
%===========================================================
function v = guess(x)
if x <= 1
v = [1; 0];
else
v = [ 144/x^3; -432/x^4 ];
end
function dydx = odes(x,y,p)
dydx = [ y(2); max(y(1),0)^(3/2) / sqrt(x) ];
function res = bcs(ya,yb,p)
global d D
res = zeros(3,1);
res(1:2) = ya - series(d,p);
res(3) =
yb(1) - 144/D^3 ;
function y = series(x,p)
yx = 1 + p*x + (4/3)*x^(3/2) + (2/5)*p*x^(5/2);
ypx = p + 2*x^(1/2) + p*x^(3/2);
y = [yx; ypx];
Se obine rezultatul:
Shampine vp4c5(itratio
)
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
10
20
30
40
50
60
70
Co
t ril sunt 1.7644 seconds (mult mai mari deoarece se fac cinci iteraii pentru
a obine
soluia aproximativ).
Exemplul 2 [8, p. 153]
Un al doilea exemplu este problema cunoscut in literatura de specialitate ca mode
lul
Ames & Lohner i apare n fenomenul de poluare a apelor curgtoare:
y''-100y+10y^2=0; in [0,infint]
y(0)=1, y(infinit)=0;
Autorii determin o soluie aproximativ exponenial, obinut eliminnd din ecuaia
diferenial termenul 10y^2, deci:
y(x)=e-10x
Vom descompune problema astfel:
202

O zon tranzitorie [0,a] n care vom folosii o metod de colocaie cu funcii Bspline,
O zon exponenial [a,40] n care vom folosi o metoda Runge-Kutta-Fehlberg.
n alegerea punctului x = a < 40, trebuie avut n vedere zona de stabilitate a metod
ei Bspline.
Codul Matlab este:
clear all
close all
f=@(t,y) 100*y-10*y.^2;
fd=@(t,y) -20*y+100;
fe=@(x) exp(-10*x);%soluia exact
startv=@(t) 1./(1+t).^3;
NMAX=5;%Numrul maxim de iteraii
%Datele iniiale
a=0; b=40;
d=a; e=10;% puncte interioare
g=0.1;% punct de control
alpha=fe(a);
beta=0;
gama= fe(e);
delta=fe(g);
% numr grade de libertate p=N*k, unde k este gradul funciei Bspline
N=100;
k=3;
t=linspace(a,b,100);
err=1e-15;
tic;
[x,y]=polycalnlinRK(f,fd,a,b,d,e,alpha,beta,N,...
k,startv,t,err);
toc;
%Plotm soluia de start i soluia aproximativ
Subplot(2,1,1)
plot(t,startv(t),'--',x,y,'r',[a,g,e,b],[alpha,delta,gama,beta],'*k');
xlabel('x','FontSize',10); grid;
title('B-splines+Runge-Kutta')
axis([0.0001 40 0.0001 1]);
legend('Start solution',' Aprox solution',' Inner points')
text(a,alpha,'\leftarrow(a,alpha)',...
...,
'FontSize',7)
text(g,delta,'\leftarrow (g,delta)',...
...,
'FontSize',7)
text(e,gama,'\rightarrow (e,gama)',...
'HorizontalAlignment','right',...
'FontSize',7)
text(b,beta,'\rightarrow(b,beta)',...
'HorizontalAlignment','right',...
'FontSize',7)
hold on
% Eroarea
subplot(2,1,2)
axis([0.00001 40 0.00001 1]);
203
semilogy(x,abs(fe(x)-y),'-r');grid;
xlabel('x','FontSize',10)
ylabel('abs(fe(x)-y)','FontSize',10)
grid on
title('Error ')
Funcia polycalnlinRK este:
function
[x,y]=polycalnlinRK(f,fd,a,b,d,e,alpha,beta,N,k,startv,t,err)
%N - # numrul de subintervale
%k - # numrul punctelor de colocaie
%startv functia de start
%err - eroarea
ti=t(t>=d & t<=e);
tright=t(t>e);
sp=BVPcollocnelin(f,fd,d,e,alpha,beta,N,k,startv,err);
yi=fnval(sp,ti);
ydi=fnval(fnder(sp),[d,e]);
x=ti';
y=yi';
opts=odeset('AbsTol',1e-12,'Reltol',1e-11,'Stats','on');
if ~isempty(tright)
tright=[e,sort(tright)];
[tr,wr]=ode45(@rhs,tright,[beta,ydi(2)],opts);
x=[x;tr(2:end)];
y=[y;wr(2:end,1)];
fprintf('ydi(2)''(0) is about
%6.4f.\n',sol.parameters,'Stats','on');
end
function dy=rhs(x,u)
dy=[u(2); f(x,u(1))];
end
end
n urma executrii programului rezult graficele:
B
pli
+R K tta
1 (a,alpha)
Start solution
Aprox solution
Inner points
0.8
0.6
0.4 (g,delta)
0.2
(e,gama)
( , et)
5
10
15
20
x
Eo
25
30
35
40
5
10
15
20
x
25
30
35
40
0

 s(fe(x) )
10
50
10
0
204
Co
t ril de execuie sunt : 1.047822 seconds.
Aceai problem poate fi tratat conform lucrarii [8 p. 153] cu ajutorul codului Matla
b:
function sol = AmesShampine1
clear all
close all
global d D
fe=@(x) exp(-10*x);
startvv=@(x) 1./(1+x).^3;
left = [0.1
0.01 0.001];
right = [10
20
40];
hold on
%profile on
for i = 1:3
tic
d = left(i);
D = right(i);
if i == 1
solinit = bvpinit(linspace(d,D,5),@startv,-1.6);
else
solinit = bvpinit(sol,[d,D]);
end
sol = bvp4c(@odes,@bcs,solinit);
tt(i)=toc;
t=linspace(0,40,100);
figure(1)
plot(t,startvv(t),'rsoll.x,sol.y(1,:),sol.x(end),sol.y(1,end),'ko',...
sol.x(1),sol.y(1,1),'ko')
legend('Solutia de start',' Solutia aproximativa')
title('Shampine-bvp4c-3 iterations ')
axis([0.0001 40 0.0001 1]);
grid on
drawnow
end
x = [0 sol.x];
y = [1 sol.y(1,:)];
figure(2)
axis([0.0001 40 0.0001 1]);
semilogy(x,abs(fe(x)-y),'-m');grid;
xlabel('x','FontSize',10)
ylabel('abs(fe(x)-y)','FontSize',10)
grid on
title('Error ')
sum(tt)
%===========================================================
function v = startv(x)
if x <= 1
v = [1; 0];
else
v = [ 1/(1+x)^3; -3/(1+x)^4 ];
end
function dydx = odes(x,y,p)
dydx = [ y(2); 10*max(y(1),0)*(10-max(y(1),0));];
function res = bcs(ya,yb,p)
global d D
res = zeros(3,1);
res(1:2) = ya - series(d,p);
205
res(3) =
yb(1) - 1/(D+1)^3 ;
function y = series(x,p)
yx = 1 + p*x + (4/3)*x^(3/2) + (2/5)*p*x^(5/2);
ypx = p + 2*x^(1/2) + p*x^(3/2);
y = [yx; ypx];
Dup trei iteraii se obine rezultatul:
Shampine vp4c3 iterations
1
Solutia de start
Solutia aproximativa
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
5
10
15
20
25
30
35
40
Costurile sunt: 6.1895 seconds acest lucru se datorete faptului c sunt aplicate tr
ei iteraii
pentru a se obine soluia aproximativ.
Exemplul 3 [18]
Se d problema bilocal:
y''+2*pi^2*exp(-y)=0; in [0,1]
Soluia acestei probleme este :
y=ln(sin(pi*x)^2)
Observm c: y(0)= -, y(1)=-,de aceea nu o vom putea trata cu rezolvitorul
bvp4c, ci lund drept condiii n interiorul intervalului [0,1] astfel:
y(1/6)=-2*ln(2), y(1/4)=-ln(2)
Folosind codul Matlab din lucrarea [22 pag 50:60] vom obine urmtorul grafic:
0
5

ol tia aprox
d=1/6; e=3/4
10
15
0
0.2
0.4
0.6
0.8
1
0.8
1
Eroara de aproximare
10
15
20
25
0
0.2
0.4
0.6
206
E mpl 4 [8, p. 189:190]
Vom da un alt exemplu cunoscut n literatura de specialitate ca problema lui Fisch
er,
Kolmogorov, Petrovski, Piscunov (1937) (FKPP) problem care apare n fenomenul de
propagare a flcrii n reactoarele nucleare.
Este cea mai simpl ecuaie de reacie-difuzie provenit din ecuaia cldurii prin adugare
unei funcii neliniare f(u):
ut= u+f(u)
Dac: u(x,t)=u(z),cu z=x-ct; unde c= viteza undei, atunci:
u"+cu'+u(1-u)=0.
Kolmogorov, Petrovski, Piscunov n lucrarea Study of the diffusion equation with
growth of the quantity matter and its application to a biological problem Bull.
State Univ.
Moscow (1937) demonstreaz c soluia acestei ecuaii depinde de data iniial u0(z),
funcie monoton i continu, u0(z)=1, dac x < a i u0(z)=0, dac x > b,
unde - < a < b < . Mai mult ei arat c pentru c 2 soluia acestei probleme
pentru un c fixat este unic i u(0) =1/2.
n mod natural se impun condiii la limit :
u(-)=1,u()=0.
n lucrarea Mathematical Biology , J.D. Murray n capitolul Biological Waves: Single

Specis Models p: 438 -445 Editura Berlin-Springer Verlag 1993 , studiaz aceast
problem n planul fazelor (u, u'). Evident punctele fixe sunt (0,0) i (1,0).
Studiind stabilitatea acestui sistem dinamic el demonstreaz c pentru c 2
punctul critic (0,0) este nod stabil, iar (1,0) este punct a. Examinnd traiectorii
le n planul
fazelor, J.D. Murray justific c pentru c 2 exist o soluie unic astfel nct ntr-o
vecintate a punctului (0,0) :
u'(z) u(z).
unde =(-c+c2-4)/2,i n vecintatea puctului (1,0):
(u(z)-1) ( u(z)-1).
unde =(-c+c2+4)/2.
Folosid aceste rezultate Shampine-Gladwell-Thomson n lucrarea [8, pp. 183-189] s
criu
urmtorul cod Matlab pentru urmtoarele valori ale parametrului
c {5,20,35,50,65,80,100}.
fuctio Fisher
global c alpha beta infty
options=[];
%optiuni
options=bvpset(options,'Vectorized','on');
options=bvpset(options,'FJacobian',@odeJac);
options=bvpset(options,'BCJacobian',@bcJac);
color= ['y','r','b','g','m','k','c'];
ws=[5,20,35,50,65,80,100];
hold on
for i=1:7
c=ws(i);
alpha=(-c+sqrt(c^2+4))/2;
beta=(-c+sqrt(c^2-4))/2;
infty=10*c;
solinit=bvpinit(linspace(-infty,infty,20),@guess);
tic;
sol=bvp4c(@ode,@bc,solinit,options);
toc;
207
figure(1)
plot(sol.x,sol.y(1,:),color(i));
title('Fisher BVP');
axis([-400 400 0 1]);
grid on
hold on
drawnow
end
legend('c=5','c=20','c=35','c=50','c=65','c=80','c=100',7);
hold off
function v = guess(z)
global c alpha beta infty
if z>0
v=[exp(beta*z); beta*exp(beta*z)];
else
v=[(1-exp(alpha*z)); -alpha*exp(alpha*z)];
end
function dydz = ode(z,y)
global c alpha beta infty
dydz = [y(2,:);-(c*y(2,:)+y(1,:).*(1-y(1,:)))];
% Funcia care calculeaz Jacobianul
function dFdy = odeJac(z,y)
global c alpha beta infty
dFdy = [0,1
(-1+2*y(1)),-c];
function res = bc(ya,yb)
global c alpha beta infty
res = [ya(2)/(ya(1)-1)-alpha
yb(1)/exp(beta*infty)-1];
function [dBCdya,dBCdyb] = bcJac(ya,yb)
global c alpha beta infty
dBCdya = [-ya(2)/(ya(1)-1)^2,1/(ya(1)-1 0 0];
dBCdyb = [0 0 1/exp(beta*infty),0];
n urma execuiei acestui program rezult graficul:
Fisher BVP
1
c=5
c=20
c=35
c=50
c=65
c=80
c=100
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
400
300
200
100
0
100
200
300
400
S observ c pentru diferite valori ale lui c toate curbele trec prin punctul (0 ;
1/2)
208
Exemplul 5
n articolul Numerical Solution of Boundary Value Problems for Ordinary Differenti
al
Equations, SIAM, 1995, pp: 336-337, Uri Ascher, Robert Mattheij, Robert Russell
propun rezolvarea urmtoarei probleme (BVP):
u'' + (2/x)*y' + [u-(1+2/x^2)]*u = 0, x[0,)
Dc folosim substituia: u=v*x i nlocuim [0,) prin [0, L] obinem urmtoarea
problem (BVP):
v'' + (4/x)*v' + (x*v-1)*v = 0, x[0,L]
v(0)=0, v(L)+v'(L)=0
Folosind metoda sugerat de Shampine, Gladwell i Thomson n lucrarea [8] scriem
urmtorul program Matlab.
function Elmagbvp
close all, clear all
profile on
L=20;
S = [0 0
0 -4];
options = bvpset('Singular-Term',S);
solinit = bvpinit(linspace(0,L,300),@ascherinit);
sol = bvp4c(@ascherode,@ascherbc,solinit,options);
profile viewer
plot(sol.x,sol.y(1,:),'g',sol.x,sol.x.*sol.y(1,:),'b',sol.x,sol.x.^2.
*sol.y(1,:),'r');
grid on
title('Problema lui Ascher','Color','g');
legend('v','u','w');
xlabel('x');
ylabel('y');
grid on
% ----------------------------------------------------------------function dydx
= ascherode(x,y)
dydx = [ y(2)
-(x*y(1)-1)*y(1)];
end
% ----------------------------------------------------------------function res =
ascherbc(ya,yb)
res = [ ya(2)
yb(1)+ yb(2) ];
end
% ----------------------------------------------------------------function yinit
= ascherinit(x)
% solutia de start
yinit = [ 2*(x<=3/2)+2*exp(3/2-x).*(x>3/2);
0*(x<=3/2)-2*exp(3/2-x).*(x>3/2) ];
end
%-----------------------------------------------------------------end
n urma execuiei acestui program obinem:
209
Problema lui Ascher L=20
6
v
u
w
5
y
4
3
2
1
0
0
5
10
x
15
20
Timpul de execuie stabilit folosind funciile Matlab este: 1.453751 seconds.
210
CAPITOLUL 11
REZOLVAREA ECUAIILOR
CU DERIVATE PARIALE
11.1. Metode numerice pentru ecuaii cu derivate
pariale
Marea parte a problemelor fizicii (i nu numai) conduc la la ecuaii cu derivate pari
ale ale
cror soluii analitice sunt n general dificil de gsit i utilizat . Metodele numerice r
educ
problema dat la diferite probleme standard, dar ofer numai rezultate discrete , ad
ic valori
n punctele unei grile sau coeficienii unei serii trunchiate. Principalul aspect ca
ntitativ avut
n vedere este acurateea unei metode date , adic capacitatea ei de a aproxima soluia
analitic atunci cnd instrumentele de aproximare devin suficient de fine. Alt aspec
t calitativ
avut n vedere este stabilitatea metodei, adic capacitatea ei de a nu propaga i acum
ula
erorile din calculele anterioare.
Vom trce n revist cteva din cele mai utilizate metode numerice , iar pentru detalii
suplimentare care vizeaz aceste metode sugerm lucrarea [21, pp. 192:214].
11.1.1. Modele continue i discrete
Modelele de baz , care vor fi utilizate n exemplele prezentate n capitolul urmtor su
nt:
Ecuaia nestaionar de advecie-difuzie, cazul bidimensional:
ut+aux+buy-vu=f
sau cazul unidimensional :
ut+aux-vuxx=f
cu a,b coeficieni constani sau variabili, cu condiii iniiale i la limit asociate.
Ecuaia staionar de advecie-difuzie, cazul bidimensional
aux+buy-vu=f
respectiv
aux-vuxx=f
cu condiii la limit de tip Dirichlet sau Neumann.
Ponderea termenilor convectivi fa de cei difuzi se msoar cu numrul lui Peclet:
| |
Pe=
unde L este lungimea domeniului de calculat.
Legi liniare de conservare
ut+ (au)x-(vux)x=f
pentru cazul unidimensional i
ut+ (au)x+(bu)y-v(u)=f
Vom reprezenta forma continu a acestor modele prin:
Au=b
n practic nu se pot gsii soluii analitice, deci se pune problema gsirii unei soluii
aproximative, care s descrie suficient de bine fenomenul fizic, acesta trebuie s f
ie un
element uh dintr-un spaiu finit dimensional, calculabil printr-un efort finit din
tr-un sistem
finit dimensional de ecuaii:
Ahuh=bh
211
11.1.2. Metoda cu diferene finite (MDF)
Metoda este bazat pe seriile Taylor i descrie derivatele unei funcii ca diferene din
tre
valorile acesteia pe diferite puncte. Cu alte cuvinte, nlocuiete operatorul de der
ivare din A
cu combinaii de operatori de translaie n Ah.
Cunoscnd valorile funciei u i a derivatelor acesteia n punctul x se pot aproxima val
orile
lui u n punctele vecine x+h sau x-h.

u(x+h)=u(x)+h +
u+

u(x-h)=u(x)-h +
u+
u

 h este mic, iar derivatele lui u se calculeaz n x.


Folosind formulele de mai sus se pot obine derivatele aproximative de ordin I sau
II n x:
= [u(x+h)-u(x)]+O(h) sau
=

[u(x+h)-u(x-h)]+O(h2)
u= [u(x h) 2u(x) + u(x + h)]+ O(h2)
Unde O(h)i O(h2)reprezint ordinul de eroare.
Introducnd aceste formule n ecuaia Au-f = 0 se obine :
A u h f h = a u (x + kh) b f(x + kh) = 0
Prin acest procedeu o ecuaie cu derivate pariale valabil ntr-un numr infinit de punct
e, se
transform ntr-un sistem cu un numr finit de ecuaii, care descriu relaiile dintre valo
rile
funciei necunoscute pe un numr finit de puncte din domeniu.
Dac u este soluia exact i uh cea numeric, Auh-fh se numete reziduu:
dac Auh-fh=O(hp),iar cnd h0 se numete ordin de trunchiere.
Dac eroarea de trunchiere tinde la zero, cnd h0 procedeul de discretizare se numete
consistent.
11.1.3. Metoda elementului finit (MEF)
Ideea acestei metode este c domeniul pe care se definete ecuaia cu derivate
pariale se descopune ntr-un numr finit de subdomenii numite elemente.
Pe fiecare element se presupune o variaie de form simpl a funciilor necunoscute, iar
apoi
rezultatele sunt asamblate pentru a descrierea soluiei numerice pe ntreg domeniul.
n cazul unidimensional s presupunem c pe elementul respectiv funcia necunoscut u
variaz liniar. Aceast funcie se poate exprima deci pe elementul respectiv cu ajutor
ul
valorilor ei pe capetele acestui element numite noduri , dac variaia ei este ptrati
c se mai
utilizeaz valoarea lui u pe nc un punct din element de exemplu n mijlocul lui.
Cu aceast reprezentare derivata lui u pe acel element este constant, iar derivata
a
doua este nul i nu mai poart informaii despre u. Pentru a elimina aceast situaie,
ecuaiile unde apare i derivata a doua se transform n ecuaii n care apare numai deriva
a
ntia. Tehnica este cunoscut sub numele de deducere a formulrii variaionale i const
nmulirea ecuaiei difereniale cu o funcie test, integrarea ecuaiei obinute pe domeniu
respectiv i apoi aplicarea unei formule de integrare prin pri a termenilor coninnd
derivate de ordin superior, cu scopul reducerii ordinului de derivare.
212
11.1.4. Metoda volumelor finite (MVF)
n esen discretizarea se efectueaz prin transformri legate de fizica fenomenului
studiat, prin conservarea unor mrimi n timpul calculelor numerice. Pentru aceasta
se
utilizeaz formularea integral a legilor de conservare.
Domeniul fizic este considerat divizat n celule. ntre momentele de timp tn i tn+1
variaia unei anumite mrimi fizice, de exemplu a masei ntr-o celul Cj notat cu
masaj=vol(Cj)*densitateaj
este dat de suma fluxurilor flux jk dintre Cj i celulele vecine Ck
masaj(n+1)= masaj(n)+ ( ) flux
Conservarea masei totale este asigurat de condiiile:
flux = -flux
11.1.5. Metode spectrale
Aproximarea funciilor necunoscute se face cu ajutorul unor serii trunchiate de fu
ncii ortogonale, serii Fourier pentru probleme cu condiii de periodicitate sau de
polinoame Cebev sau Laguerre pentru probleme neperiodice:
uN(x)= u c
unde valorile u sunt necunoscute de determinat.
n cazul problemei:
Lu=f, x(, )
u()=u( )=0
u mod de determinare a coeficienilor necunoscui este de a cere verificarea ecuaiei
date pe
un anumit sistem de noduri, la care se adaug condiiile la limit:
LuN(xk)-f(xk)= 0, k=1,2,,N-1.
uN(a)=uN(b)=0
obinnd astfel metoda colocaiei.
Din interpretarea expresiei uN (x)ca polinom de interpolare Lagrange pe noduri x
k,
uN(x)= u (xk)Lk (x)
unde Lk (xj)=kj necunoscutele de determinat sunt de fapt valorile uN(xk).
Metodele spectrale se bucur de mult interes datorit faptului c eroarea dintre soluia
exact
u i cea aproximat uN este de ordin 1/Ns adic:
|u-uN|
Unde s este legat de numrul de derivate continue pe care le admite u(x).
11.2. Aplicaii n dinamica fluidelor
S considerm problema:
u u
+
= f(x, y), n
x
y
u|=0
Prin discretizare se ajunge la un sistem mare de ecuaii algebrice, liniare.
Dm cteva exemple de micri care conduc la o asemenea problem (ecuaia lui Poisson).
213
11.2.1. Domeniu rectangular cu vorticitate intern
Considerm o micare generat de o vorticitate distribuit n cuva dreptunghiular
[-3 ,3] X [-2, 2]. Vorticitatea este vectorul n direcia Oz de modul q, definit de
rotaionalul vitezei:
V=q
Utiliznd relaia dintre componentele vitezei i funcia de curent relaia vectorial de
sus se pune sub o form scalar ( trecnd la modul):
xx+yy= -q(x,y)
Codul Matlab
plot(1,1,'bo',1,0,'ro');
hold off;
% programul este preluat din [21 pag 374]
x=-3:0.1:3;y=-2:0.1:2;
c=zeros(59,39); c(40,30)=-100;c(40,20)=-50;
e1=ones(59,1);
e2=ones(39,1);
D23=spdiags([e1 -2*e1 e1],[-1 0 1],59,59)*100;
D15=spdiags([e2 -2*e2 e2],[-1 0 1],39,39)*100;
[U,L]=eig(full(D23));
[V,P]=eig(full(D15'));
PSI=zeros(59,39);
C=inv(U)*c*V;
for i=1:59
for j=1:39
PSI(i,j)=C(i,j)/(L(i,i)+P(j,j));
end
end
psi=U*PSI*inv(V);
S=zeros(61,41);
S(2:60,2:40)=psi;
cs=contour(x,y,S',[0.01 0.02 0.05 0.1 0.2 0.3 0.4]);
title('Linii de curent generate de doua virtejuri');
clabel(cs,'manual');axis('equal');
hold on;
n cazul unui domeniu [-3 3] [-2 2] , cu vorticitatea generat de vrtejuri de intensi
tate 100 respectiv -50 plasate n punctele (1 1), respectiv (1 0) se obin liniile d
e current din figura urmtoare
Linii de curent generate de doua virtejuri
2
1.5
0.01
0.1
0.01
0.4
1
0.3
0.5
0
0.5
0.4
0.2
0.02
0.1
1
0.01
1.5
0.02
2
3
2
1
0
214
1
2
3
Sa utilizat procedeul exact de rezolvare a sistemului discret, iar funcia de cur
ent a
fost aleas s ia valoarea 0 pe linia de curent coinciznd cu frontiera cuvei.
11.2.2. Curgerea fluidelor prin canale i conducte
S considerm problema [21, pag 378] micrii unui fluid staionar, incompresibil, printr-
o
conduct rectilinie, de o seciune constant. Micarea este generat fie de un gradient de
presiune, fie de fora gravitaional sau de micarea unor perei ai conductei n raport cu
ceilali.
De asemenea, fluidul poate fi nchis ntr-o conduct sau poate avea o suprafa liber.
S presupunem c conducta este infinit de lung n direcia axei Ox i c de-alungul ei
= 0, aceasta nseamn c fluidul are numai componenta nenul a vitezei u n direcia
axial. Atunci ecuaia continuitii este satisfcut automat, iar cea a momentului devine:
+
= (

 )
U fx este componenta forei gravitaionale pe unitate de volum n direcia Ox. n absen
unui gradient de presiune, singura for aplicat este fx = g sin , generat de acceler
a
gravitaional.
Introducnd mrimile adimensionalizate :
Y=y/L, Z=z/L, U =

Ecuaia devine:
2 U
+
2 U
= 1
Y2 Z2
Condiiile la limit ataate sunt cele de aderen la pereii fici i tensiunea de forfeca
l
pe suprafaa liber.
U|Z=0 =0, U|Z=1 =0
U|Y =0, |Y=1 =0
T. Petrila i D. Trif n lucrarea [21] sugereaz discretizarea cu diferene finite centr
ate de
ordinul II pe o gril de pas h care acoper domeniul [0,1][0,1]. Avnd calculate viteze
le n
nodurile grilei se poate estima debitul de fluid trecnd prin canal.
Codul Matlab este :
m=51;
n=m;
uv=zeros(m,n+1);un=uv;
h=1/(m-1);y=0:h:1;z=y;
alpha=cos(pi/m)+cos(pi/n);
omega=(8-4*sqrt(4-alpha^2))/alpha^2;
un(2:m-1,2:n)=0.04*ones(m-2,n-1);
iter=0;
while 1
uv=un;
for i=2:m-1
for j=2:n
if j==n
un(i,j+1)= un(i,j-1);
end;
un(i,j)=(1-omega)*un(i,j)+omega/4*...
(h^2+un(i-1,j)+un(i+1,j)+un(i,j-1)+un(i,j+1));
end;
end;
215
error=sum(sum(abs(un-uv)));
disp([iter error]);
%test daca s-a indeplinit conditia de eroare
if error<1.e-3
break;
end;
iter=iter+1;
end
volrat= sum(sum(un(2:m-1,2:n-1))*h^2+...
(sum(un(2:m-1,1)+un(2:m-1,n))+sum(un(1,2:n-1)'+...
un(m,2:n-1)'))*h^2/2+(un(1,1)+un(1,n)+un(m,1)+un(m,n))*h^2/4);
cs=contour(y,z,un(1:m,1:m)',[eps,0.01,0.02,0.04,0.06,0.08,0.1,0.11]);
title(Cugee unui fluid printr-un canal deschis);
cl el(cs,mul);
% cu ajutorul comenzii clabel se vor marca cu mouse-ul valorile
Rezultatele sunt prezentate n figura urmtoare:
Curgerea unui fluid printr  canal deschis
1
0.11
0.1
0.9
0.08
0.8
0.06
0.7
0.6
0.04
0.5
0.4
0.02
0.3
0.2
0.01
0.1
0
0
0
0.2
0.4
0.6
0.8
1
11.2.3. Micarea unui fluid ntre dou plci plane
Micarea nestaionar a unui fluid pus n micare de o plac care se deplaseaz n planul s
plac normal axei Oy, cu micare n direcia axei Ox [21, p. 406].
Ecuaia continuitii se satisface imediat, iar ecuaia Navier-Stokes se reduce la ecuaia
difuziei de forma:
u
u
=
t
y
Aceast ecuaie este satisfcut de vorticitatea :
= a unei micri nestaionare plane.
Dac se trece la coordonate cilindrice, aceai situaie apare la micri de fluide ntre ci
indrii
concentrici, iar gsirea cmpului vitezelor acestor micri se numete problema Rayleigh
generalizat.
216
Exemplu
Fie un strat de ap coninut ntre dou plci plane n repaus , distana de 1m. La t=0 plac
e
mai sus s o punem n micare cu viteza constant u0 = 1 m/s. Aceasta creaz o vorticitate
care difuzeaz n jos, conducnd la redistribuirea corespunztoare a vitezelor.
Pentru ap vom lua 10-6 m2/s, R = , ceea ce conduce la un pas de timp = 625s
, iar
pentru pasul h vom lua h = 0.05m.
Codul Matlab
h=1/50;r=0.25;u0=1;
y=0:h:1;
uv=zeros(51,1);
uv(51)=u0;
un=uv;
e=ones(49,1);
p=plot(y,uv,'EraseMode','None');
title('Miscarea unui fluid intre doua placi');
axis([0 1 0 1]);
grid
xlabel('y');ylabel('viteza');pause;
T=spdiags([r*e 1-2*r*e r*e],[-1 0 1],49,49);
b=zeros(49,1);b(49)=r*u0;
for i=1:400
un(2:50)=T*uv(2:50)+b;
set(p,'Color','k');
drawnow;
set(p,'Ydata',un,'Color','g');
drawnow;
uv=un;
end
Acest program ne ofer o animaie descriind evoluia n timp a profilului vitezei.
Miscarea unui fluid intre doua placi
1
0.9
0.8
0.7
viteza
0.6
0.5
0.4
0.3
0.2
0.1
0
0
0.2
0.4
0.6
0.8
1
y
Exemplu
Vom rezolva problema determinrii micrii unui fluid ntr-un canal ntre dou plci plane,
prin aplicarea brusc a unui gradient de presiune
n lungul acestuia. Ecuaia micrii este:
u
u 1 dp
=

t
y
p dx
217
Dac distana ntre plci este 2L, condiiile iniiale i la limit ataate sunt:
u|t=0, -L y L, u|y=L=0, t > 0
Codul Matlab
r=0.4; h=0.05;
Y=(-1:h:1)';
wv=1-Y.^2;
e=ones(39,1);wn=zeros(41,1);
T=spdiags([r*e -(1+2*r)*e r*e],[-1 0 1],39,39);
p=plot(Y,1-Y.^2-wv,'EraseMode','none');
axis([-1 1 -0.1 1]);
hold on;
for i=1:1000
wn(2:40)=T\(-wv(2:40));
set(p,'Color','w');
drawnow;
set(p,'Ydata',1-Y.^2-wn,'Color','b');
drawnow;
wv=wn;
end
plot(Y,1-Y.^2,'r');
grid
title('Miscarea sub influenta unui gradient de presiune');
hold off;
Care realizeaz evoluia n timp al profilului de vitez conform graficului urmtor:
Miscarea sub influenta unui gradient de presiune
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0.1
1
0.5
0
0.5
1
O
rvaie
Pentru domenii i ecuaii de o form mai complicat se poate face apel la PDE toolbox
(bazate pe metoda elementului finit)din Matlab prezentat n capitolul
12.
218
CAPITOLUL 12
REELE NEURONALE
12.1. Introducere
n acest capitol ne propunem s prezentm ideile de baz ale calculului neural alturi
de principalele modele conexioniste ale inteligenei artificiale i am folosit lucra
rea de referin: M.Beale, H.Demuth - Neural Network Toolbox. User Guide, 2008,
n reelele Neuronale informaia nu mai este memorat n zone bine precizate, ca n cazul c
lculatoarelor standard, ci este memorat difuz n toat reeaua. Memorarea se face
stabilind valori corespunztoare ale ponderilor conexiunilor sinaptice dintre neur
onii reelei.
Un alt element important, care este, probabil, principalul responsabil pentru su
ccesul
modelelor conexioniste, este capacitatea reelelor neuronale de a nva din exemple.
n mod tradiional, pentru a rezolva o problem, trebuie s elaborm un model (matematic,
logic, lingvistic etc.) al acesteia. Apoi, pornind de la acest model, trebuie s i
ndicm
o succesiune de operaii reprezentnd algoritmul de rezolvare a problemei. Exist, ns,
probleme practice de mare complexitate pentru care stabilirea unui algoritm, fie
el i unul
aproximativ, este dificil sau chiar imposibil.
n acest caz, problema nu poate fi abordat folosind un calculator tradiional, indife
rent
de resursele de memorie i timp de calcul disponibil. Caracteristic reelelor Neuron
ale este
faptul c, pornind de la o mulime de exemple, ele sunt capabile s sintetizeze n mod i
mplicit un anumit model al problemei. Se poate spune c o reea neural construiete sin
gur algoritmul pentru rezolvarea unei probleme, dac i furnizm o mulime reprezentativ
e cazuri
particulare (exemple de instruire).
12.2. Procese de nvare n sisteme cu inteligen artificial
Inteligena artificial, ca si in cazul inteligenei biologice se dobndete printr-un
proces continu si de durata de nvare, de aceea problema nvrii ocup un loc important
n cercetarea mainilor auto-instruibile (machine learning).
Prin nvarea automata se nelege studiul sistemelor capabile sa-i mbunteasc
performantele, utiliznd o mulime de date de instruire.
Sistemele cu inteligen artificiala obinuite au capaciti de nvare foarte reduse
sau nu au de loc. In cazul acestor sisteme cunoaterea trebuie sa fie programat in
interiorul
lor. Dac sistemele conin o eroare , ele nu o vor putea corecta, indiferent de cate
ori se executa procedura respectiv. Practic aceste sisteme nu-si pot mbuntii perform
anele prin
experien si nici nu pot nva cunotine specifice domeniului, prin experimentare. Aproa
toate sistemele cu inteligent artificial sunt sisteme deductive. Aceste sisteme po
t trage
concluzii din cunoaterea ncorporat sau furnizat, dar ele nu pot sa genereze singure
noi
cunotine.
Pe msura ce un sistem cu inteligena artificial are de rezolvat sarcini mai complexe
, crete i cunoaterea ce trebuie reprezentat n el (fapte, reguli, teorii). n general u
sistem funcioneaz bine, n concordan cu scopul fixat prin cunoaterea furnizat, dar or
micare n afara competenei sale face ca performanele lui s scad rapid. Acest fenomen
este numit i fragilitatea cunoaterii.
219
Una din direciile de cercetare n privita mainilor instruibile este modelarea neural
care dezvolt sisteme instruibile pentru scopuri generale, care pornesc cu o canti
tate
mic de cunotine iniiale. Astfel de sisteme se numesc reele neuronale sau sisteme cu a
utoorganizare sau sisteme conexioniste.
Un sistem de acest tip const dintr-o reea de elemente interconectate de tip neuron
,
care realizeaz anumite funcii logice simple.
Un astfel de sistem nva prin modificarea intensitii de conexiune dintre elemente, adi
c schimbnd ponderile asociate acestor conexiuni. Cunoaterea iniial ce este furnizat s
stemului este reprezentat de caracteristicile obiectelor considerate i de o config
uraie
iniial a reelei.
Sistemul nva construind o reprezentare simbolica a unei mulimi date de concepte
prin analiza conceptelor si contraexemplelor acestor concepte. Aceasta reprezent
are poate fi
sub forma de expresii logice, arbori de decizie, reguli de producie sau reele sema
ntice.
Istoria Reelelor Neuronale Artificiale (RNA) sau, simplu, a Reelelor Neuronale
ncepe cu modelul de neuron propus de ctre W.McCulloch i W.Pitts (un logician si un
neurobiolog) n lucrarea A logical calculus of the ideas immanent in nervous activ
ity,
Bull.Math.Biophys. pp.115-133, 1943 i este numit acest model neural, neuronul MP.
Modelul MP presupune c neuronul funcioneaz ca un dispozitiv simplu, ale crui
intrri sunt ponderate. Ponderile pozitive sunt excitatoare, iar ponderile negativ
e sunt inhibitoare. Dac excitaia total, adic suma ponderat a intrrilor, depete un
prag,
atunci neuronul este activat i emite un semnal de ieire (ieirea are valoarea +1). D
aca excitaia totala este mai mica dect valoarea prag, atunci neuronul nu este acti
vat i ieirea lui
se consider a fi zero.
Hebb (1949) a propus un mecanism calitativ ce descrie procesul prin care conexiu
nile sinaptice sunt modificate pentru a reflecta mecanismul de nvare realizat de ne
uronii
interconectai atunci cnd acetia sunt influenai de anumii stimuli ai mediului.
Rosenblatt (1959) a propus un dispozitiv numit perceptron. Perceptronul este baz
at
pe interconectarea unei mulimi de neuroni artificiali i reprezint primul model de r
eea
neuronal artificial.
B. Widrow i M.E. Hoff n lucrarea Adaptive switching circuits, IRE WESCON
Convertion Record, New York : IRE Part 4,1960, 96-104, au propus un model neural
numit
ADALINE si o reea cu elemente de acest tip numit MADALINE. ADALINE reprezint
acronimul ADAptive Linear Neuron sau ADAptive LINear Element. MADALINE este un
acronim pentru Multiple-ADALINE.
Modelul ADALINE este n esena identic cu modelul perceptronului. Ieirea este
bipolar: +1 sau 1 i este un dispozitiv adaptiv, n sensul c exist o procedura bine
definit de modificare a ponderilor pentru a permite dispozitivului s dea rspunsuri
corecte
pentru o intrare dat.
Reelele Neuronale permit rezolvarea unor probleme complicate, pentru care nu
avem un algoritm secvenial, dar posedm unele exemple de soluii. nvnd din aceste
exemple (faza de instruire), reeaua va fi capabila sa trateze cazuri similare (fa
za de lucru).
Calculatoarele obinuite sunt, desigur, instrumente extrem de adecvate in rezolvar
ea
unui spectru larg de probleme matematice, tiinifice, inginereti. Calculatoarele ii d
ovedesc
limitele in domenii in care omul exceleaz, cum ar fi percepia si nvarea din experien
ntr-un calculator obinuit elementul esenial este procesorul, caracterizat de viteza
mare de lucru. n creier, elementele individuale de proces sunt celulele nervoase
(neuronii).
Ele sunt mai simple i mai lente dect un procesor de calculator, ns sunt foarte numer
oase.
Conexiunile dintre neuroni sunt la fel de importante ca i acetia. Inteligena i proce
sele
memoriei rezid n ntreaga reea de celule i nu n neuronii individuali.
Cortexul cerebral este o reea neural natural. O astfel de retea neural are capacitat
ea de a gndi, nva, simi i de a-i aminti.
220
Reelele Neuronale artificiale sunt reele de modele de neuroni conectai prin interme
diul unor sinapse ajustabile. Toate modelele de reele neuronale se bazeaz pe inter
conectarea unor elemente simple de calcul dintr-o reea dens de conexiuni.
Fiecare unitate de proces este capabil s execute doar calcule simple, dar reeaua,
ca ntreg, poate avea caliti remarcabile in recunoaterea formelor, rezolvarea problem
elor
pentru care nu posedm un algoritm, nvarea din exemple sau din experiena. Paralelismul
nalt i capacitatea de nvare reprezint caracteristicile fundamentale ale reelelor neu
ale. Calcululul neural implic dou aspecte fundamentale: nvarea i reprezentarea
cunoaterii.
Reelele Neuronale achiziioneaz cunoaterea prin instruire. O reea neural este
instruit, dac aplicarea unei mulimi de vectori de intrare va produce ieirile dorite.
Cunoaterea pe care reeaua neuronala o dobndete este memorat de sinapsele neuronale,
mai
precis, n ponderile conexiunilor dintre neuroni.
Muli dintre algoritmi de instruire pot fi considerai ca avndu-i originea in modelul
de nvare propus de ctre Donald Hebb (1949) care propune un model al schimbrilor
conexiunilor sinaptice dintre celulele nervoase. Conform modelului lui Hebb, int
ensitatea
conexiunii sinaptice dintre doi neuroni (ponderea conexiunii) crete de cte ori acet
i neuroni
sunt activai simultan de un stimul al mediului. Acest mecanism este cunoscut de r
egula lui
Hebb de nvare.
Daca yi este activarea neuronului i si exista o legtura sinaptic ntre neuroni i si
j,
atunci, in concordana cu legea lui Hebb, intensitatea conexiunii lor sinaptice es
te afectat
de:
wij=cyiyj,
unde c este un coeficient de proporionalitate adecvat ce reprezint constanta de in
struire.
Aceasta lege apare ca natural in muli algoritmi de nvare. n plus, exist argumente ne
-biologice care sprijin ipoteza c stimulii mediului cauzeaz modificri sinaptice.
Acest mecanism este un model de nvare nesupervizat n care drumurile neuronale des uti
lizate sunt intensificate (ntrite). Acest model poate explica fenomenele de
obinuin si de nvare prin repetare.
O reea neural artificial care folosete o nvare hebbian va determina o
cretere a ponderilor reelei cu o cantitate proporional cu produsul nivelurilor de ex
ercitare neuronale.
Fie wij(n) ponderea conexiunii de la neuronul i la neuronul j nainte de ajustare i
wij(n+1) ponderea acestei conexiuni dup ajustare. Legea Hebb de nvare se va scrie in
acest caz sub forma:
wij(n+1) = wij(n) + c yiyj ,
unde yi este iesirea neuronului i (intrarea neuronului j), iar yj este iesirea n
euronului j.
O variant a acestei legi de nvare este legea hebbian a semnalului. n concordan cu a
lege modificarea ponderilor este dat de:
wij(n+1) = wij(n) + c S(yi)S(yj) ,
unde S este o funcie sigmodal.
Un alt tip de nvare este nvarea competitiv. n acest caz, mai muli neuroni
concureaz la privilegiul de a-i modifica ponderile conexiunilor, adic de a fi activ
ai.
221
12.3. Elemente de neurodinamic
Modelul general al unei reele neuronale
n concordan cu capitolul precedent vom admite c o reea neural (RN) const
dintr-o mulime de elemente de prelucrare (neuroni, uniti cognitive au noduri ale ree
lei)
nalt interconectate.
Considerm in continuare o reea cu p neuroni.
Acetia sunt conectai printr-o mulime de ponderi de conexiune sau ponderi sinaptice.
Fiecare neuron i are ni intrri i o ieire yi. Intrrile reprezint semnale venite de la
ali
neuroni sau din lumea exterioar.
Intrrile xi ale neuronului i se reprezint prin numerele reale x1i,... xni. Fiecare
neuron i are ni ponderi sinaptice, una pentru fiecare intrare a sa. Aceste pond
eri se noteaz cu w1i, w2i,..., wni i reprezint numere reale care pondereaz semnalul
de intrare
corespunztor.
Dac wij > 0 avem o pondere sinaptic excitatoare, iar dac wij < 0 avem de-a
face cu o pondere inhibitoare. Pentru simplitate, n cele ce urmeaz se va suprima i
ndicele i.
Fiecare neuron calculeaz starea sa intern sau activarea (excitaia) total ca fiind su
ma ponderat a semnalelor de intrare.
Notnd cu S activarea, avem:
S=
w xj
n modelul McCulloch-Pitts fiecare neuron este caracterizat de un prag de excitare
.
Vom nota acest prag cu t atunci ieirea y a neuronului este +1, dac activarea total
este
egal sau mai mare dect t.
Dac f : R - R este funcia de rspuns definit prin:
F(x)
=
1, dac x 0
0, daca x < 0,
atunci ieirea neuronului se scrie ca y = f( wj xj+t ).
Valoarea prag t poate fi eliminat din argumentul funciei f, dac se adug neuronului un
semnal de intrare care are ntotdeauna valoarea 1 i ponderea t, adic: xn+1 =
1,iar wn+1 = t
n acest caz activarea total este :
S =
w xj
i ieirea se poate scrie y = f(s).
Avantajul acestei abordri este acela c pragul poate fi ajustat mpreun cu celelalte
ponderi n timpul procesului de instruire. Modelul neuronal considerat se poate re
prezenta
schematic ca in figura urmtoare.
222
x1
x2
w1
w2
xn
wn
S = wj xj
y
Y = f(s)
Forma funciei de rspuns f depinde de modelul de reea neuronala studiat. Aceasta
funcie se mai numete funcie neuronal, funcie de ieire sau funcie de activare a neuro
ui.
Funciile sigmoidale sunt cele mai des folosite deoarece reprezint forme netezite a
le
funciei prag liniare. Toate aceste funcii sunt continue, derivabile i monoton cresct
oare.
Aceste proprieti sunt foarte convenabile pentru aplicaii.
tim c funciile sigmoidale, ca i cele cu prag liniar, pot produce i valori de ieire
intermediare celor dou valori extreme (0 i 1). Acest lucru reprezint o facilitate p
entru
calculul analogic i pentru modelarea unei logici multivalente.
12.4. Reele neuronale multistrat
Neuronii pot fi conectai in diferite moduri pentru a forma o reea neural.
Un model uzual de topologie consider neuronii organizai n mai multe straturi.
O reea neural multistrat conine dou sau mai multe straturi de neuroni. Primul
strat primete intrrile din mediu. Ieirile neuronilor din acest strat constituie int
rri pentru
neuronii stratului urmtor. Ieirea reelei este format din ieirile neuronilor ultimului
strat.
Straturile situate ntre primul i ultimul nivel sunt straturi ascunse ale reelei.
Motivul acestei complicri a arhitecturii este legat de faptul c, uneori arhitectur
ile mai
simple se dovedesc incapabile de a rezolva o problem sau o clas de probleme. Dac o
reea
dat nu poate rezolva o problem, este uneori suficient s mrim numrul neuronilor din
reea, pstrnd vechea arhitectur. n alte situaii, pentru rezolvarea problemei este nece
ar sa
modificam arhitectura reelei, introducnd unul sau mai multe straturi neuronale noi
.
X
x1
Y
y1
xn
yn
intrri
ieiri
n reeaua din figura de mai sus nu exist conexiuni intre neuronii aceluiai strat.
Semnalul se propag n reea dinspre stratul de intrare spre cel de ieire. Spunem c avem
o
propagare nainte a semnalului n reea (reea cu transmitere nainte a semnalului).
Putem astfel considera arhitecturi de reea n care exist conexiuni ntre neuronii acel
uiai
strat. De asemenea, uneori poate fi util s considerm conexiuni de la un neuron spr
e neuroni
aflai n stratul anterior (mai apropiat de intrarea reelei). Alteori, conexiunile po
t lega doi
neuroni care nu se afl neaprat in straturi adiacente.
223
12.5. Modelul Perceptronului
Modelul perceptronului reprezint smburele din care s-au dezvoltat toate celelalte
reele neuronale.
Arhitectura perceptronului standard este cea mai simpla configuraie posibil a unei
reele i ea permite ca instruirea acesteia s se realizeze folosind un algoritm simpl
u i eficient.
Algoritmul este reprezentat de o clas larg de algoritmi de instruire, vectorii din
mulimea de instruire se reprezint reelei mpreun cu clasa creia i aparin. Dac au fo
memorate suficient de multe obiecte din fiecare clas, se poate construi o repreze
ntare intern a fiecrei clase prin ponderile de conexiune ale reelei.
Perceptronul cu un singur strat
Perceptronul cu un singur strat este cea mai simpl reea neuronal.
Valorile de intrare pot fi binare sau numere reale. Aceast reea elementar are capac
itatea de
a nva s recunoasc forme simple. Un perceptron este capabil s decid, dac un vector d
intrare aparine uneia din cele dou clase de instruire, notate cu A1 i A2.
x1
w1
xn
t
y
wn
Acest perceptron este implementat cu un singur neuron. Dac x este vectorul ce
reprezint intrrile neuronului, putem calcula suma ponderat a elementelor de intrare
X =
(x1, x2,,xn )T, xj
s = w I xI
Admind c perceptronul are ieirile 1 i +1. Ieirea y este dat de urmtoarea regul :
s > -t y = 1,
s < -t y = -1,
unde t este un prag al neuronului. Ieirea y = 1 corespunde faptului c vectorul de
intrare
aparine clasei A1.
Dac ieirea este 1 atunci vectorul prezentat reelei aparine clasei A2 .
Notnd cu x vectorul de intrare extins, x =(x1,x2, ,xn)T i cu v vectorul ponderilor la
care adugm o component cu pragul t, v = (w1,w2,,wn,t)T.
Cu aceste notaii ieirea perceptronului este dat de regula :
vTx > 0 y = +1
vTx < 0 y = -1
Ponderile conexinilor i pragul (componentele vectorului v) unui perceptron se pot
adapta folosind un algoritm de instruire simplu numit algoritmul perceptronului.
224
Algoritmul de instruire
Se va prezenta algoritmul standard pentru instruirea perceptronului cu dou clase
de
instruire.
La primul pas al algoritmului de instruire se iniializeaz valorile ponderilor i pra
gul. Ponderile iniiale sunt componentele vectorului v1. Se aleg pentru ponderile
iniiale numere reale
mici i nenule i alegem valoarea constantei de corecie c (de obicei 0 < c 1).
Constanta c controleaz rata de adaptare a reelei. Alegerea ei trebuie s satisfac
cerine contradictorii: pe de o parte exist necesitatea de a obine o adaptare rapid a
ponderilor la intrri i pe de alt parte trebuie s se in seama de necesitatea ca medie
ea intrrilor precedente s genereze o estimare stabil a ponderilor.
Algoritmul de nvare al perceptronului compar ieirea produs de reea cu
clasa corespunztoare a vectorului de intrare. Dac s-a produs o clasificare eronat,
atunci
vectorul pondere este modificat. n caz contrar el rmne neschimbat.
Dac la p pai consecutivi nu se produce nici o modificare a vectorului pondere, atu
nci
toi vectorii (formele) de instruire sunt corect clasificai de ultimul vector ponde
rere rezultat.
Am obinut un vector soluie i algoritmul se oprete cu aceast decizie. Procedura de ins
truire descris mai sus conduce la algoritmul urmtor pentru instruirea perceptronul
ui .
Algoritmul perceptronului
P1
P2
P3
P4
P5
P6
Se iniializeaz ponderile i pragul.
Se aleg componentele w1,, wn i t ale vectorului v1.
Se pune k = 1 (v1 este vectorul pondere la momentul iniial).
Se alege constanta de corecie c > 0.
Se alege o nou form de instruire.
Se reprezint reelei o nou form de intrare zk i ieirea dorit, (ateptat)
corespunztoare.
Se calculeaz ieirea real generat de perceptron. Ieirea real este
dat de semnul expresiei (vk)T zk.
Condiia de oprire
Se repet pasul P6 pn cnd vectorul pondere nu se modific la p pai
consecutivi.
Se adapteaz ponderile i pragul.
Se modific vectorul pondere folosind regula de corecie:
vk +czk , dac (vk)Tzk 0,
vk,
dac (vk)Tzk > 0 .
Se pune k = k + 1.
Dac algoritmul s-a oprit normal, atunci vectorul vk+1 reprezint o soluie a probleme
i de
instruire .
Limitele perceptronului
n multe probleme concrete de clasificare i de instruire intervin clase de obiecte
care nu sunt liniar separabile. Deoarece perceptronul nu poate discrimina dect cl
ase liniar
separabile, aplicarea acestui algoritm n rezolvarea unor probleme concrete este s
ever limitat.
225
Cea mai celebr i una dintre cele mai simple probleme care nu pot fi rezolvate de
un perceptron este, problema calculrii valorilor funciei logice sau exclusiv.
Problema poate fi rezolvat de un perceptron cu mai multe straturi (cel puin cu
dou straturi).
Aceast limitare, nu se datoreaz algoritmului, ci este legat de topologia foarte sim
pl
reelei utilizate. Dac problema de instruire necesit regiuni de decizie mai complica
te,
atunci trebuie mrit complexitatea reelei.
Propagarea napoi a erorii
Algoritmul de propagare napoi (Back Propagation) este considerat in mod uzual, ca
fiind cel mai important i mai utilizat algoritm pentru instruirea reelelor neurona
le.
Algoritmul de propagare napoi este o metod de instruire n reelele neuronale
multistrat cu transmitere nainte (reele unidirecionale), n care se urmrete minimizare
erorii medii ptratice printr-o metod de gradient.
Caracteristica esenial a reelelor cu dou straturi este c ele proiecteaz forme de
intrare similare n forme de ieire similare fapt ce permite s fac generalizrile rezona
bile i
s prelucreze acceptabil forme care nu li s-au mai prezentat niciodat.
12.6. Funcia Criteriu
Tehnica de instruire descris n continuare este asemntoare cu cea utilizat pentru
a gsi dreapta care aproximeaz cel mai bine o mulime dat de puncte (problema regresie
i).
Aceast tehnic este o generalizare a metodei MEP. Pentru determinarea dreptei de re
gresiei, se utilizeaz, de regul, metoda celor mai mici ptrate. Deoarece este plauzi
bil ca
funcia pe care o cutm s fie neliniar, se folosete o variant iterativ a metodei celo
mici ptrate.
Fie f : n p funcia necunoscut pe care reeaua trebuie s nvee s o realizeze.
Vectorul de intrare xi i corespunde rspunsul dorit di = f(xi).
La momentul k, reelei i se reprezint asocierea vectorial (xk, dk). Admind c
mulimea de instruire e format din m asocieri: (x1,d1), ,(xm,dm) starea curent (la m
omentul k) a reelei neuronale definete funcia vectorial: Nk : Rn R , y = Nk(x),unde
y este vectorul care indic activarea neuronilor ultimului strat al reelei y = (y1,
y2,
yp)T.Dac S este funcia vectorial de ieire, atunci la momentul k, reeaua genereaz
rspunsul S(yk). Ieirea vectorial a reelei este, aadar : Nk(xk) = S(yk).
Notm cu Sj:RR funcia de rspuns a neuronului j din stratul final. Funciile S1,..,
Sp sunt mrginite i cresctoare.
Se poate scrie deci sub forma:
S1(y1k)
Nk(xk) =

Sp(ypk)
226
Algoritmul de propagare napoi cere ca funciile de rspuns s fie derivabile.
Aceast condiie elimin posibilitatea utilizrii funciilor cu prag liniar, nederivabile
punctele prag. Rezult, deci, c se poate folosii funcia sigmoidal sau funcia identic.
O funcie de rspuns liniar definete un neuron de ieire liniar.
Ieirea real a neuronului de ieire j, cnd la intrare se prezint vectorul xk este:
k
oj = Sjo(yjk), unde indicele o desemneaz ieirea.
Eroarea corespunztoare neuronului j cnd reelei i se furnizeaz vectorul xk este:
ejk = djk ojk = djk Sjo(yjk).
Eroarea ptratic a tuturor neuronilor de ieire in raport cu intrarea xk se definete c
a
Ek = 12 (ejk)2
Eroarea ptratic se mai poate scrie :
Ek = 12(ek)Tek.
Eroarea total este suma erorilor pentru cele m asocieri din mulimea de nvare:
m
E = Ek
k=1
unde m este numrul de forme din aceast mulime.
Algoritmul de propagare napoi urmrete minimizarea erorii ptratice, ns nu
este sigur c algoritmul gsit va minimiza i aceast funcie criteriu. Ceea ce se obine
este, n general, o soluie acceptabil i nu, neaprat, o soluie optim.
12.7. Algoritmul de propagare napoi
Aplicarea algoritmului de propagare napoi presupune dou etape. n prima etap se
prezint reelei un vector de intrare xk i ieirea dorit corespunztoare. Fie dk aceast
e, semnalul de intrare se propag prin reea i genereaz un rspuns.
Neuronul j din cmpul de ieire produce semnalul: ojk = Sjo(yjk).
Acest semnal este comparat cu rspunsul dorit djk .
Rezult un semnal de eroare kj care se calculeaz pentru fiecare neuron de ieire:
ij= (djk-ojk)
, j=1,2,p.
Se calculeaz schimbrile ponderilor pentru toate conexiunile ce intr n stratul final,
folosind regula urmtoare :
Vqj0 (k+1)= Vqj0 (k)+ckjSh(hk),
h
h
 Sq (hq )este ieirea neuronului ascuns q.
Cea de a doua faz a algoritmului corespunde propagrii napoi prin reea a semnalului d
e eroare. Aceasta permite calculul recursiv al erorii conform formulei:
kh =
(hqk) v
Calculul se face pentru fiecare neuron q din stratul ascuns. Altfel, eroarea se
propag napoi prin reea. Propagarea napoi implic un calcul de aceeai complexitate cu
propagarea nainte a semnalului i nu necesit un efort excesiv de timp i memorie.
227
12.8. Arhitecturi moderne de reele neuronale
REELE NEURONALE PROBABILISTICE
Modelarea reelelor Neuronale cu ajutorul teoriei probabilitilor sau a teoriilor de
incertitudine aduce o serie de avantaje fa de abordrile strict deterministe. Aceste
a sunt:
- reprezentarea mai veridic a modului de funcionare a reelelor neuronale biologice,
n care semnalele se transmit mai ales ca impulsuri;
- eficien de calcul mult superioar celei din cadrul reelelor neuronale, naintenapoi';
- implementare hardware simpl pentru structuri paralele;
- instruire uoar i cvasiinstantanee, rezultnd posibilitatea folosirii acestor reele
neuronale n timp real;
- forma suprafeelor de decizie poate fi orict de complex prin modificarea unui
singur parametru (de netezire) s, aceste suprafee putnd aproxima optim suprafeele B
ayes;
- pentru statistici variabile n timp, noile forme pot fi suprapuse simplu peste c
ele
vechi;
- comportare bun la forme de intrare cu zgomot sau incomplete.
Astfel, pentru o problem biclas, considerm o reea neuronal probabilistic n
care stratul numit ,uniti ale formei conine elemente avnd structura din figura de ma
i jos.
Pentru o distribuie normal a densitii de probabilitate, estimatorul pentru
clasa A este:
fA (x) =
(

) /
exp
(
) (
)
funcie ce apare la ieirea unitii formei, unde fA : XW. Unitile sumatoare adun datel
de la unitile formei ce corespund mulimii de instruire i au o pondere variabil, Ck :
Ck = -(hBk IBk) (hAk IAk) ( nAk nBk),
unde nAk i nBk sunt numrul formelor de antrenare pentru clasa Ak respectiv Bk , h
sunt
probabilitile a priori, I sunt funcii de pierdere n cazul unei decizii eronate, iar
THR este
funcia prag.
Instruirea const n identitatea dintre vectorul Wi i fiecare form de antrenare x. Ast
fel, este
necesar cte o unitate pentru fiecare form din mulimea de instruire.
228
REELE NEURONALE FUZZY
Combinarea celor dou clase de sisteme cognitive : nuanate (fuzzy) i neuronale,
s-a impus prin performanele bune, de civa ani. Fuzzyficarea arhitecturilor neuronal
e
mrete capacitatea reelelor neuronale de a recunoate (clasifica) forme complexe, dist
orsionate sau incomplete.
O structur de reea neuronal a fost propus de ctre Watanabe . Acest model
folosete neuronul logic.
Neuronul logic are avantajul vitezei i al unei capaciti discriminatorii remarcabile
(pragul
fiind independent de mrimea n bii a componentelor vectorului de intrare). Acum avem
dou tipuri de vectori pondere:
Wp = (Wp1 ,.., Wpn) i Wn = (Wn1 ,.., Wnn)
Rspunsul analog y, ce urmeaz a fi cuantizat, are forma:
y = (xi i)
ude xI fiind intrrile. Ieirea binar a sistemului este :
z = SGN(y-h),
unde h este pragul fixat.
Vectorul pondere este ajustat dup diferena e ntre ieirea dorit i rspunsul sistemului
diferite intrri n cursul instruirii iar h se calculeaz cu operaii logice fuzzy:
ht = (Wpi)(wni)
hB = (Wpi)(Wni)
h = (hT + hB)/n
12.9. Prelucrri de imagini cu reele neuronale
Proprietile de baz ale reelelor neuronale, anume faptul ca sunt aproximatori univers
ali i ca au o capacitate de predicie deosebit, i gsesc utilizarea imediat in cadrul
altor domenii, cum ar fi: prelucrarea de imagini, recunoaterea formelor vizuale(s
cris i amprente) sau recunoaterea vorbirii.
Filtrarea zgomotelor, accentuarea i detecia contururilor, segmentarea imaginii i
extragerea caracteristicilor sunt cele mai importante operaii de procesare. Dei me
todele
clasice de prelucrare satisfac majoritatea aplicaiilor exist tehnici hibride de ti
pul segmen229
tare/clasificare, pentru care metodele conexioniste ofer performante superioare i
n raport cu
rata de recunoatere i cu timpul de calcul.
Implementarea se poate realiza cu reele neuronale celulare, care sunt circuite an
alogice neliniare ce permit o implementare VLSI, reelele celulare putnd efectua pr
elucrri
paralele de semnal in timp real. Ecuaia de ieire a unui nod oarecare reprezint un f
iltru
bidimensional, neliniar i invariant n spaiu.
O aplicaie foarte util este recunoaterea on line a semnturilor grafologice cu ajutor
ul unui neurocalculator. Se pot folosi drept caracteristici coordonatele planare
i presiunea
stiloului, extrase cu ajutorul unei tabele grafice. Sunt luate n consideraie varia
bilitatea semnaturilor corecte, precum si semnaturile false.
Vom prezenta n continuare o aplicaie care se bazeaz pe reele Neuronale de tip Hopfie
ld
pentru recunoasterea formelor intr-o imagine binara.
Pavlidis propune clasificarea imaginilor n patru clase, astfel:
Clasa (1) de imagini include imaginile n scar de gri (sau color).
Clasa (2) de imagini cuprinde imaginile binare (sau cu cteva culori).
Clasa (3) de imagini include imagini formate din linii si curbe continue.
Clasa (4) de imagini cuprinde imagini formate din puncte izolate sau poligoane.
Se remarc scderea complexitii imaginii odat cu numrul clasei, simultan cu reducerea
semnificativ a volumului de date necesar pentru stocarea lor (Howe).
Reeaua neural Hopfield
Acest tip de reea poate fi folosit ca memorie asociativ sau pentru rezolvarea unor
probleme
de optimizare. Folosete neuroni cu intrri binare, a cror ieire conine nelineariti de
pul
limitare hardware. Ieirea fiecrui neuron este aplicat tuturor celorlalte noduri pri
n intermediul unor ponderi.
J. J. Hopfield n lucrarea Neural networks and physical systems with emergent coll
ective
computational abilities. Proc.Natl. Acad. Sci. 79 1982, a demonstrat c aceast reea
converge dac ponderile sunt simetrice. Desi simplitatea ei o face atractiv, aceast
reea prezint dou limitri majore cnd este
utilizat ca memorie adresabil prin coninut. n primul rnd, numrul de forme prototip ca
e
pot fi stocate si apoi regsite corect n reea este limitat la aproximativ 15% din nu
mrul de
neuroni.
Dac se ncearc stocarea prea multor forme prototip, reeaua ar putea converge ctre un
prototip fictiv. A doua limitare prezent la reeaua Hopfield apare, dac prototipuril
e memorate n reea sunt foarte asemntoare (prezint un mare numr de bii identici), caz
are
reeaua devine instabil.
Dac reeaua Hopfield este folosit drept clasificator, ieirea reelei (dup convergen)
trebuie comparat cu fiecare form prototip, dup care se poate lua decizia de aparten
en la
una din clasele ataate formelor prototip.
Algoritmul de antrenare al retelei Hopfield:
Pasul 1. Iniializarea ponderilor conexiunilor:
tij=
x x , dac i j ; 0 dac i=j, 0  i  M-1, 0  j  M-1,
unde tij este ponderea conexiunii de la nodul i la nodul j.
230
Psul 2. Se aplic un vector de intrare necunoscut:
j (t+1)=fh
t u (t), 0  j  M-1
unde funcia neliniara fh este de tipul limitare hardware. Operaia se repet pn cnd toa
e
ieirile neuronilor rmn neschimbate. n acest caz, configuraia ieirilor coincide cu for
a
prototip cea mai apropiat de forma necunoscut de intrare.
Pasul 3. Itereaz pn la convergen.
Pasul 4. Repeta paii 2-3 pentru orice alt form necunoscut de intrare.
Aplicaia. S se construiasc o reea neural Hopfield pentru a recunoate formele dintr-o
imagine binar.
Cu ajutorul butonului ncarc Imagine se ncarc o imagine binar , nvaarea acestei
imagini se face cu ajutorul butonului ncarcare RN. Formele nvate vor aprea n partea
de jos a aplicaiei , n seciunea imagini ncarcate.
Pentru a testa reteaua se poate ncarca orice imagine binar sau se poate aduga zgomo
t. Se
poate alege orice nivel de zgomot de la 1% la 100%.
Apoi se apas butonul Execut pentru a testa forma nou.
Codul Matlab
function varargout = hopfieldNetwork(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @hopfieldNetwork_OpeningFcn, ...
'gui_OutputFcn', @hopfieldNetwork_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback',
[]);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function hopfieldNetwork_OpeningFcn(hObject, eventdata, handles,
varargin)
handles.output = hObject;
N = str2num(get(handles.imageSize,'string'));
handles.W = [];
handles.hPatternsDisplay = [];
guidata(hObject, handles);
function varargout = hopfieldNetwork_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
function reset_Callback(hObject, eventdata, handles)
for n=1 : length(handles.hPatternsDisplay)
delete(handles.hPatternsDisplay(n));
end
231
handles.hPatternsDisplay = [];
set(handles.imageSize,'enable','on');
handles.W = [];
guidata(hObject, handles);
function imageSize_Callback(hObject, eventdata, handles)
num = get(hObject,'string');
n = str2num(num);
if isempty(n)
num = '32';
set(hObject,'string',num);
end
if n > 32
warndlg('este recomandat sa nu se lucreze cu retele mai mari
decat 32^2 neuroni!','!! Atentie !!')
end
function imageSize_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'
));
end
% executa ncarcarea imaginii
function loadIm_Callback(hObject, eventdata, handles)
[fName dirName] = uigetfile('*.bmp;*.tif;*.jpg;*.tiff');
if fName
set(handles.imageSize,'enable','off');
cd(dirName);
im = imread(fName);
N = str2num(get(handles.imageSize,'string'));
im = fixImage(im,N);
imagesc(im,'Parent',handles.neurons);
colormap('gray');
end
% --- se execut la apasarea invatarii
function train_Callback(hObject, eventdata, handles)
Npattern = length(handles.hPatternsDisplay);
if Npattern > 9
msgbox('mai mult de 10 parti paternale nu suport!','eroare');
return
end
im = getimage(handles.neurons);
N = get(handles.imageSize,'string');
N = str2num(N);
W = handles.W;
avg = mean(im(:));
if ~isempty(W)
W = W + ( kron(im-avg,im-avg))/(N^2)/avg/(1-avg);
else
W = ( kron(im-avg,im-avg))/(N^2)/avg/(1-avg);
end
ind = 1:N^2;
f = find(mod(ind,N+1)==1);
W(ind(f),ind(f)) = 0;
handles.W = W;
% nlocuieste noua imagine
232
xStart = 0.01;
xEnd = 0.99;
height = 0.65;
width = 0.09;
xLength = xEnd-xStart;
xStep = xLength/10;
offset = 4-ceil(Npattern/2);
offset = max(offset,0);
y = 0.1;
if Npattern > 0
for n=1 : Npattern
x = xStart+(n+offset-1)*xStep;
h = handles.hPatternsDisplay(n);
set(h,'units','normalized');
set(h,'position',[x y width height]);
end
x = xStart+(n+offset)*xStep;
h = axes('units','normalized','position',[x y width height]);
handles.hPatternsDisplay(n+1) = h;
imagesc(im,'Parent',h);
else
x = xStart+(offset)*xStep;
h = axes('units','normalized','position',[x y width height]);
handles.hPatternsDisplay = h;
end
imagesc(im,'Parent',h);
set(h,'YTick',[],'XTick',[],'XTickMode','manual','Parent',handles.lea
rnedPaterns);
guidata(hObject, handles);
% --- se execut la apsarea adaug zgomot.
function addNoise_Callback(hObject, eventdata, handles)
im = getimage(handles.neurons);
noisePercent = get( handles.noiseAmount, 'value' );
N = round( length(im(:))* noisePercent );
N = max(N,1);
ind = ceil(rand(N,1)*length(im(:)));
im(ind) = ~im(ind);
imagesc(im,'Parent',handles.neurons);
colormap('gray');
% --- se executa la apasarea butonului execut.
function Executa_Callback(hObject, eventdata, handles)
im = getimage(handles.neurons);
[rows cols] = size(im);
if rows ~= cols
msgbox('nu suport nici un patratel','eroare');
return;
end
N = rows;
W = handles.W;
if isempty(W)
msgbox('nici o imagine incarcata','eroare');
return;
end
mat = repmat(im,N,N);
mat = mat.*W;
mat = im2col(mat,[N,N],'distinct');
233
networkResult = sum(mat);
networkResult = reshape(networkResult,N,N);
im = fixImage(networkResult,N);
imagesc(im,'Parent',handles.neurons);
function im = fixImage(im,N)
if length( size(im) ) == 3
im = rgb2gray(im);
end
im = double(im);
m = min(im(:));
M = max(im(:));
im = (im-m)/(M-m);
im = imresize(im,[N N],'bilinear');
im = (im > 0.5);
% --- se executa la micarea sliderului
function noiseAmount_Callback(hObject, eventdata, handles)
percent = get(hObject,'value');
percent = round(percent*100);
set(handles.noisePercent,'string',num2str(percent));
function noiseAmount_CreateFcn(hObject, eventdata, handles)
usewhitebg = 1;
if usewhitebg
set(hObject,'BackgroundColor',[.9 .9 .9]);
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'
));
end
Reele neuronale de tip Kohonen
T.Kohonen n lucrarea Self-organized formation of topologically correct
features maps, Biol. Cybern. 43, pp. 59-69 , 1982 propune un nou tip de reele Neu
ronale
cu dou straturi: unul de intrare i altul de ieire . Toate intrrile sunt conectate la
toate
nodurile de ieire , care pot avea numai conexiuni laterale cu nodurile imediat ve
cine.
Reelele Kohonen sunt cu autoorganizare, de tip feedforward i cu instruire nesuperv
izat i
se folosesc pentru gruparea datelor de intrare de tip Clustering.
Reelele Kohonen sunt destinate n principal clasificrii nesupervizate a datelor
vectoriale, asigurnd n plus fa de celelalte reele competitive i conservarea relaiilo
e
vecintate din domeniul datelor de intrare. Aceasta nseamn c datele de intrare simila
re
vor fi n acelai clas fie n clase diferite, dar care sunt reprezentate de ctre uniti
funcionale vecine.
MatLab prin toolboxul de Neural Network permite crearea de hri multidimensionale c
u
diferite tipuri de topologii ale nivelului de ieire. Conectivitatea dintre nivelu
l de intrare i
cel de ieire este total, unitatea nvingtoare se determin folosind criteriul dinstanei
minime. Antrenarea este de tip conectiv asigurndu-se ajustarea att a unitii nvingtoar
ct i a celor aflate n vecintatea acesteia (folosind ns o rat de nvare de dou ori
mic). Att rata de nvare ct i dimensiunea vecintii descresc pe msur ce numrul d
iteraii crete.
nvarea conine dou etape:
Etapa de ordonare- asigur ordonarea unitilor n aa fel nct uniti vecine s
rspund de clase apropiate (n aceasta faz att rata de nvare ct i dimensiunea
vecintii sunt relative mari).
234

Etapa de ajustare fin a prototipurilor: asigur apropierea vectorilor cu ponderi de
prototipurile claselor (vecinile se reduc doar la vecinii direci sau chiar doar la
unitatea nvingtoare, iar rata de nvare este mic).
Pentru crearea unei reele Kohonen Matlab pune la dispoziia utilizatorilor funcia:
Newsom ([min1 max1; ...; minN maxN],[dim1,dim2,...], grila, dist, rata1, epoci1,
rata2,
vecinmin) cu urmtoarele semnificaii pentru parametri:
min i i max i: limitele domeniului datelor de intrare n unitatea i.
dim1, dim2, dimensiunile nivelului cu uniti funcionale. Pentru o reea unidimensiona
se specific doar dim1, pentru una bidimensional se specific dim1,
dim2 etc.

grila: specific structura grilei. Valori posibile: gridtop (ptratic), hextop (hexag
onal),
randtop (gril cu structur aleatoare). Valoarea implicit este hextop.
dist: tipul distanei utilizate n stabilirea vecintii. Valori posibile: dist (distan
euclidian), mandist (distana Manhattan), boxdist i linkdist (distane bazate pe
numrul de "pai" ce trebuie efectuai n cadrul grilei pentru a ajunge de la un nod
la altul). Valoare implicita: linkdist.
rata1: rata de nvare n faza de ordonare. Valoare implicit: 0:9.
epoci1: numr maxim de epoci n faza de ordonare. Valoare implicit: 1000.
rata2: rata de nvare n faza de ajustare. Valoare implicit: 0:02.
vecinmin: dimensiunea vecintii n faza de ajustare. Valoare implicit: 1.
Din punct de vedere al timpului cnd se face actualizarea ponderilor reelei exist do
u tipuri
de nvare :
- off-line se determin pentru fiecare intrare-ieire, modificarea care trebuie adus
coeficienilor sinaptici. Aceste modificri se sumeaz i se aplic reelei numai dup
ce au fost prezentate toate datele de antrenament (perechile de intrare-ieire ).
- On-line modificarea coeficienilor, calculai pentru o pereche de intrare ieire se
aplic reelei imediat dup prezentarea acestei perechi. Prezint n raport cu precedentul
, avantajul c este n general mai rapid i poate prsii unele minime locale
ale funciei de eroare total.
Prezentm n continuare o reea neural Kohonen rectangular:
235
Unde:
- (X0,X1,XN-1) lotul de vectori de clasificat
-X = (x0,x1,xn-1)tvecto de intrare aparinnd lotului de clasificat
-wij odee reelei care face legtura ntre neuronal de intrare j i neuronal ieire i
-i=0,,M-1,unde M numrul de neuroni din stratul de ieire
-j=0,,n-1, unde n-dimensiunea vectorului de intrare.
Algoritmul de rafinare a ponderilor reelei
Se consider lotul de forme ( vectori) de clasificat de forma (X0,X1,XN-1), unde
N-numrul de vectori din lot. Algoritmul de rafinare se bazeaz pe principiul vecintii,
rafinarea fcndu-se att pentru neuronal ctigtor ct i pentru vecinii si. Vecintatea
neuron se va iniializa la o valoare mai mare (de obicei egal cu dimensiunea reelei
), dup
care ea scade pe parcursul rafinrii astfel nct s se reduc la un singur neuron. De obi
cei
vecintatea este constant pe parcursul unei parcurgeri a lotului de vectori, modifi
carea ei
facndu-se dup fiecare iteraie de lot. Legea de variaie a vecintii se allege experime
l
funcie de aplicaie, n general aceasta scznd dup fiecare iteraie cu doi neuroni pe fi
re
dimensiune.
Pai:
1. Iniializare ponderilor reelei se face aleator ntr-un interval de valori ce conine
cont
de valoarea vectorilor de intrare
wij (t=0), i=0, M-1, j=0,n-1.
Precum i stabilirea dimensiunii iniiale a vecintii V(0).
2. t=t+1, unde t=kn+p unde
t - numrul iteraiei curente
k- numrul de iteraii de lot (epoci) parcurse
p- indicele vectorului curent Xp, p=0,,N-1 care se aplic la intrarea reelei vectoru
lui
curent.
3. Se calculeaz distanele di =SUM[xj(t)- wij(t)]2
4. Se calculeaz neuronul i* (neuronal ctigtor) astfel nct distana di* s fie minim;
5. Se rafineaz ponderile aferente neuronului i* i neuronilor aparinnd vecinii Vi*(t)
astfel:
wij (t+1)= wij(t) +(t )[xj(t)- wij(t)] , unde (t )(0,1) este rata de nvare.
6. -Dac nu s-a terminat parcurgerea lotului de vectori se trece la pasul doi,
-Dac s-a terminat de parcurs tot lotul de vectori se verific condiia de stop, altfe
l
se reia pasul 2.
Reguli de stop:
a. n general rafinarea reelei se oprete cnd gradientul de modificare a ponderilor
reelei devine nesimnificativ.
b. Se mai poate oprii algoritmul i dup un numr fixat de iteraii dat fiind c rafinarea
reelei este un process de durat.
SOM ( Self-Organizing-Maps)
Este o reea de nvare nesupervizat n care unitile de intrare-ieire sunt dispuse
sub form de gril (n general rectangular ) n plan, iar coeficienii conexiunilor ntre
atul
de ieire depend de distanele ntre uniti. Astfel dac unitile sunt apropiate acestea
infleneaz reciproc, iar dac sunt deprtate influena este inhibatoare. Se definete astf
l
pentru fiecare neuron o vecinatate a sa. Forma acestei vecinti poate varia n funcie d
e
datele de intrare i poate fi rectangular sau circular . n timpul nvrii competitive
actualizeaz nu numai vectorul asociat unitii nvingtoare ci i (uneori cu un coeficient
mai
redus) unitilor din vecintatea acesteia. Acest mod de modificare ncurajeaz unitile v
ne s rspund n mod similar la vectori de intrare similari.
236
Reeua este utilizat n aproximarea distribuiei vectorilor de intrare, n reducerea
dimensionalitilor datelor meninnd pe ct este posibil vecintatea i n clustering. Arh
ura reelei SOM const ntr-o matrice bidimensional de uniti de ieire, fiecare conectat
cu toate cele n uniti de intrare.
Fie wij vectorul nn bidimensional asociat . Fiecare neuron de ieire calculeaz dista
na dintre vectorul de intrare x i vectorul pondere wij memorat. Ponderea vectorulu
i
nvingtor i a celor din vecintatea acestuia dup formula lui Kohonen.
Ideea acestui algoritm este c se caut unitatea nvingtoare pentru fiecare vector de
intrare, dar modificarea coeficienilor sinaptici, dar modificarea coeficienilor si
naptici se
realizeaz nu numai pentru unitatea nvingtoare ci i cu un coeficient mai redus i pentr
u
unitile aflate n vecintatea unitii nvingtoare.
Acest mod de modificare a coeficienilor ncurajeaz unitile vecine s rspund n
mod similar la vectori de intrare similari reeaua este astfel o hart a mulimii vect
orilor
de intrare.
Algoritmul de nvare Kohonen
Ideea de nvare const n a plasa reeaua undeva n plan i a o antrena la nceput
cu o vecintate i a o antrena la nceput cu o vecintate i un coeficient de nvare mai
care pe parcursul nvrii s scad treptat .
Pai:
1. Se dispun unitile de ieire sub form de gril n plan (aceast dispunere reprezint d
t i iniializarea ponderilor unitilor cu valori aleatoare mici).
Se recomand memorarea acestor uniti ntr-o matrice pentru a putea calcula ulterior ve
cintatea unui neuron. n cazul reelei SOM ponderea unui neuron este considerat
poziia acelui neuron n spaiul de reprezentare al datelor de intrare.
2. Se stabilete o anumit formul pentru calculul vecintii i al coeficientului
de nvare , formul care s depind de pasul la care s-a ajuns n procesul de
nvare.
3. Se ia un vector de intrare i se calculeaz distana dintre el i toi neuronii din
reea. Neuronul care este cel mai apropiat este considerat neuronul nvingtor i
la acesta i se modific ponderea, la toi ceilali li se recalculeaz ponderea dup
aceai formul.
4. Dac coeficientul de nvare a ajuns la zero se consider c reeaua a nvat,
deoarece nu vor mai avea loc modificri n reea . Dac coeficientul de nvare
nu a ajuns la zero se sare la pasul 3.
Aplicaie 1
S se simuleze o hart Kohonen unidimensional, datele de intrare generate aleator in
[0,1]X[0,1]:
Codul Matlab
date=rand(2,100);
% definirea retelei (cu doua unitati de intrare si grila 5*5)
som=newsom([0 1;0 1],20);
som.trainParam.epochs=1000;
% reprezentarea datelor
plot (date(1,:),date(2,:),'g*')
hold on; % pastreaza graficul
soma=train(som,date);
% reprezentarea grafica
plotsom(soma.iw{1,1},soma.layers{1}.distances);
hold off;
237
Aplicaie 2.
S se simuleze o hart Kohonen bidimensional, datele de intrare generate aleator in
C((0,0),1)
Codul Matalab
for i=1:100
x=2*rand-1; y=2*rand-1;
while (x^2+y^2)>1
x=2*rand-1; y=2*rand-1;
end
date(1,i)=x; date(2,i)=y;
end;
% definirea retelei (cu doua unitati de intrare si grila patratica
5*5)
som=newsom([-1 1;-1 1],[5 5],'gridtop');
som.trainParam.epochs=1000;
plot (date(1,:),date(2,:),'g*');
hold on; % pastreaza graficul
soma=train(som,date);
% reprezentarea grafica
plotsom(soma.iw{1,1},soma.layers{1}.distances);
hold off;
n urma execuiei programului obinem rezultatul:
Weight Vectors
0.8
0.6
0.4
W(i,2)
0.2
0
0.2
0.4
0.6
0.8
1
0.5
0
W(i,1)
0.5
1
O
rvaie
1. Matalb-ul pune la dispoziia utilizatorilor un toolbox : Neural Network Toolbox
ultraspecializat cu ajutorul cruia se pot face simulri eficiente : astfel crearea i
vizualizarea unei reele Kohonen se poate face folosind funcia nctool i un set
de date de test.
2. Recomand celor interesai de aprofundarea acestor reele Neuronale urmtoarele
lucrri de referin :
B.Valuru Neural Networks and Fuzzy Logic, 2006,
S.Haykin- Neural Networks-A comprehensive foundation, 2003.
238
CAPITOLUL 13.
PREZENTAREA SUCCINT A UNOR TOOLBOX-URI
MATLAB
MATLAB permite dezvoltarea unei familii de aplicaii sub forma toolbox-urilor. Ace
ste
toolbox-uri permit nvarea i aplicarea tehnologiilor specializate din diverse domenii
. Sunt
disponibile toolbox-uri pentru domenii cum ar fi: procesarea numeric a semnalelor
, sisteme
de conducere automat, reele Neuronale, logic fuzzy, wavelet, simulare (SIMULINK),
identificare, statistic, crearea de hri, procesarea imaginilor etc.
n continuare sunt prezentate pe scurt facilitile oferite de cteva din aceste toolbox
-uri.
13.1.Toolbox-ul Comunicaii (Communications Toolbox)
Communications Toolbox este o colecie de funcii de calcul i blocuri de simulare pen
tru
cercetare, dezvoltare, proiectarea de sisteme i simulare n domeniul comunicaiilor.
Toolboxul este proiectat att pentru experi ct i pentru nceptori n domeniu, i se baz
pe MATLAB i Simulink.
Funcii disponibile:
Surse de date
Surse codare/decodare
Controlul erorilor de codificare
Modulare/demodulare
Filtre transmisie/recepie
Canale de transmisie
Acces multiplu
Sincronizare
Utilitare
13.2.Toolbox-ul pentru Sisteme de Conducere Automat
(Control System)
MATLAB-ul dispune de o colecie bogat de funcii utile att inginerului automatist prac
tician ct i teoreticianului din domeniul teoriei sistemelor. Printre facilitile ofer
ite enumerm: aritmetic complex, valori proprii, gsirea rdcinilor, inversri de matric
Transformarea Fourier Rapid etc.
Toolbox-ul Control System folosete structurile matriceale ale MATLAB i reprezint
fundaia MATLAB. Toolbox-ul este o colecie de algoritmi (n principal sub forma fiiere
lor
.m), care implementeaz proiectarea sistemelor de conducere, precum i tehnici de an
aliz i
modelare.
Sistemele pot fi modelate n MATLAB ca funcii de transfer, sub forma poli-zerouri s
au prin
reprezentarea de stare, ceea ce permite aplicarea tehnicilor clasice i a celor mo
derne. Se
poate lucra cu sisteme continue i cu sisteme discrete i pot fi efectuate conversii
ntre diversele tipuri de modele. Toolbox-ul permite calculul i trasarea rspunsuril
or n domeniul
timp i domeniul frecven, precum i a locului rdcinilor. De asemenea, se pot realiza
alocri de poli, se pot implementa conducerea optimal i estimatoare etc.
239
13.3.Toolbox-ul pentru Baze de Date (Database Toolbox)
Toolbox-ul Baze de Date permite importul i exportul de date ntre MATLAB i cele mai
rspndite programe de baze de date. Cu acest toolbox se pot importa date din exteri
or, se
utilizeaz capacitile mari de calcul i prelucrare analitic ale MATLAB, i se export re
tatele napoi n baza de date sau n alt baz de date.
Realizarea acestor operaiuni se face astfel: toolbox-ul Database conecteaz MATLAB
la o
baz de date utiliznd funciile MATLAB; datele sunt preluate de la baza de date ca i c
aractere, sunt transformate n tipuri de date corespunztoare i sunt stocate n tablour
i de tip
celul. n acest moment se pot folosi instrumentele MATLAB de lucru cu date. Se pot
include funciile toolbox-ului n fiiere M-files. Pentru exportul datelor se utilizea
z n final
funciile specializate MATLAB.
Toolbox-ul Database este furnizat mpreun cu interfaa grafic Visual Query Builder
(VQB).
13.4. Toolbox-ul de Procesare a Semnalelor (Signal Processing Toolbox)
Toolbox-ul de Procesare a Semnalelor este o colecie de instrumente construit n medi
ul de
calcul numeric MATLAB. Toolbox-ul permite o mare varietate de operaii de prelucra
re a
semnalelor, de la forme de und la proiectarea filtrelor, modelare parametric i la a
naliza
spectral. Toolbox-ul furnizeaz dou categorii de instrumente:
1.
2.
-
Funcii de prelucrare a semnalelor de la linia de comand
Intefee grafice utilizator pentru:
Proiectarea interactiv a filtrelor
Trasarea i analiza semnalelor
Analiz spectral
Aplicarea de filtre semnalelor
Analiza filtrelor
13.5. Toolbox-ul DSP Blockset
Setul de blocuri de procesare numeric a semnalelor (DSP Blockset) este o colecie d
e biblioteci de blocuri care se utilizeaz cu pachetul Simulink.
Bibliotecile DSP Blockset sunt proiectate special pentru prelucrarea numeric a se
mnalelor i
includ faciliti cum ar fi filtrarea clasic, adaptiv, manipulri de matrici, algebr lin
ar,
statistic, etc.
DSP Blockset extinde mediul Simulink prin furnizarea de componente i algoritmi pe
ntru
sistemele DSP. Faciliti:
Operaiuni bazate pe cadre
Suport matriceal
Filtrare adaptiv i cu eantionare multipl
Operaiuni statistice
Algebr liniar
Estimarea parametrilor
Faciliti de timp real
240
13.6. Toolbox-ul Finane (Financial Toolbox)
MATLAB-ul mpreun cu toolbox-ul de Finane furnizeaz un mediu de calcul integrat i
complet pentru analiz i inginerie financiar. Toolbox-ul dispune de instrumente de a
naliz
matematic i statistic a datelor financiare i instrumente de prezentare grafic a rezul
tatelor
obinute.
Faciliti:
Calcul i analiz de pre i de producie
Realizeaz analize venituri, preuri etc. compatibile SIA (Securities Industry Assoc
iation)
Analiza i managementul portofoliilor
Proiectarea i evaluarea de strategii financiare
Identificarea, msurarea i controlul riscului
Analiza i calculul fluxului de cash
Analiza i predicia activitii economice
Crearea de instrumente financiare structurate
Cercetare academic
13.7. Toolbox-ul de Procesare a Imaginilor (Image Processing Toolbox)
Toolbox-ul Image Processing este o colecie de funcii care extind posibilitile MATLAB
din domeniul prelucrrii imaginilor. Toolbox-ul dispune de o mare varietate de ope
raiuni de
prelucrare a imaginilor, cum ar fi:
Operaii geometrice
Operaii de tip vecintate
Filtrare liniar i proiectarea filtrelor
Transformate
Analiza i mbuntirea imaginilor
Operaii binare
Operaii asupra regiunii de interes
Multe dintre funciile toolbox-ului sunt fiiere M-files care constau n instruciuni MA
TLAB
care implementeaz algoritmi specializai de prelucrare a imaginilor. Aceste instruci
uni pot
fi vizualizate cu comanda cunoscut:
type function_name
Posibilitile toolbox-ului pot fi extinse prin crearea de fiiere proprii prin utiliz
area
funciilor disponibile n combinaie cu alte toolbox-uri cum ar fi Signal Processing T
oolbox
i Wavelet Toolbox.
13.8. Toolbox-ul Optimizare (Optimization Toolbox)
Acest toolbox este o colecie de funcii care includ rutine pentru o mare diversitat
e de optimizri:
Minimizare neliniar fr constrngeri
Minimizare neliniar cu constrngeri, inclusiv probleme de tip minimax i probleme de
minimizare semi-infinit
Programare liniar i ptratic
Algoritmi neliniari de tipul celor mai mici ptrate
Rezolvarea de sisteme de ecuaii neliniare
Sunt disponibili i algoritmi specializai pentru sisteme mari (large-scale problems
).
Funciile toolbox-ului pot fi utilizate n combinaie cu alte toolbox-uri sau cu Simul
ink.
241
13.9. Toolbox-ul pentru Sisteme de Putere (Power System Blockset)
Sistemele electrice de putere sunt combinaii de circuite electrice i de aparate el
ectro-mecanice cum ar fi motoarele i generatoarele. Inginerii care lucreaz n acest
domeniu trebuie s
mbunteasc performanele sistemelor de putere. Cerinele de cretere drastic a eficien
au determinat proiectanii s foloseasc aparatur electronic i sisteme sofisticate de co
ducere care necesit instrumente de analiz i proiectare corespunztoare, fiind absolut
necesar nelegerea fenomenelor (neliniare) prin simulare.
Power System Blockset a fost proiectat pentru furnizarea unor instrumente de pro
iectare care
permit inginerilor s construiasc rapid i uor modele care simuleaz sistemele de putere
.
Blocurile utilizeaz mediul Simulink i permit construirea unui model cu proceduri s
imple de
tip click and drag. Se poate trasa rapid topologia circuitelor electrice i de ase
menea se poate
face o analiz a circuitelor care include interaciunile cu sistemele mecanice, term
ice, de
control.
Bibliotecile conin modele ale aparaturii tipice pentru sistemele de putere, cum a
r fi transformatoare, linii electrice, motoare, electronic de putere etc. Posibil
itile toolbox-ului pot fi
testate prin rularea fiierelor demonstrative.
13.10. Toolbox-ul Stateflow (Diagrame de stare)
Stateflow este un produs multiplatform, care poate rula pe sisteme Microsoft Wind
ows XP,
Windows 7 i UNIX, i care necesit MATLAB + Simulink.
Stateflow este un instrument grafic de proiectare i dezvoltare pentru sisteme de
conducere
complexe i pentru sisteme logice de supervizare. Cu ajutorul acestui toolbox se p
ot genera
modele sub forma unor diagrame de stare dinamice ale unui sistem. Generarea de c
od pentru
elementele Simulink ale unui model Stateflow necesit pachetul suplimentar al Simu
link-ului
Real-Time Workshop.
13.11. Toolbox-ul de Statistic (Statistics Toolbox)
Toolbox-ul de Statistic dispune de instrumente care permit executarea de sarcini
statistice
uzuale, de la generarea de numere aleatoare pn la proiectarea de experimente stati
stice i
controlul proceselor statistice (recomandm studiu atent al capitolului 9 Elemente
de probabiliti i Statistic Matematic).
Exist dou categorii de instrumente:
Construcia de funcii statistice i probabilistice
Instrumente grafice interactive
Prima categorie const n funcii care pot fi apelate din linia de comand sau din aplic
aii
proprii.
A doua categorie const n instrumente interactive care permit accesul la funcii prin
intermediul unei interfee grafice utilizator (GUI), care furnizeaz un mediu adecv
at pentru
funcii de predicie, interpolare, probabilistice etc.
242
13.12. Toolbox-ul pentru Calcul Simbolic (Symbolic
Math Toolbox)
Acest toolbox completeaz facilitile grafice i numerice ale MATLAB-ului cu diverse al
te
tipuri de faciliti matematice, care permit efectuarea de calcule simbolice (17) .
Maina de calcul utilizat este nucleul de la Maple. Exist de fapt dou toolbox-uri:
unul de baz, care este o colecie de peste o sut de funcii MATLAB care permit
accesul la Maple,
un toolbox extins care permite accesul extins la multiple pachete Maple (nongraf
ice, faciliti de programare, proceduri utilizator etc.).
Faciliti:
Calcul matematic:
Algebr liniar:
Simplificri:
Rezolvarea ecuaiilor:
Aritmetic cu precizie
variabil:
specificat
Transformri:
Funcii matematice
speciale:
Diferenieri, integrri, limite, sume, serii Taylor
Inverse, determinani, valori proprii, forme canonice ale
matricelor.
Metode de simplificare a expresiilor algebrice
Soluii simbolice i numerice ale ecuaiilor algebrice i
difereniale
Evaluarea numeric a expresiilor matematice cu precizie
Fourier, Laplace, Transformarea z i inversele lor
Funcii speciale ale matematicilor aplicate clasice
Toolbox-ul pentru Calcul Simbolic definete un nou tip de date : obiecte simbolice
care se
pot crea cu ajutorul funciei sym. Aceste obiecte simbolice sunt utilizate pentru
a
reprezenta variabile simbolice, expresii, i matrici. Spre exemplu pentru a calcul
a derivatele
unei funcii se poate utiliza funcia diff.
Exemplu
>> x=sym('x');
>> f=exp(cos(x))*sin(x);
>> diff_f=diff(f,x)% calculeaza derivata de ordin I
diff_f =
exp(cos(x))*cos(x) - exp(cos(x))*sin(x)^2
>> diff(f,x,2)% calculeaza derivata de ordin II
ans =
exp(cos(x))*sin(x)^3 - exp(cos(x))*sin(x) 3*exp(cos(x))*cos(x)*sin(x)
>> diff(f,x,5)%calculeaza derivata de ordin V
ans =
exp(cos(x))*cos(x) + 15*exp(cos(x))*cos(x)^2 +
15*exp(cos(x))*cos(x)^3 - 16*exp(cos(x))*sin(x)^2 +
20*exp(cos(x))*sin(x)^4 - exp(cos(x))*sin(x)^6 45*exp(cos(x))*cos(x)^2*sin(x)^2
- 75*exp(cos(x))*cos(x)*sin(x)^2 +
15*exp(cos(x))*cos(x)*sin(x)^4
243
Pentru mai multe detalii se poate folosii comanda:
>> help sym/diff
diff
Differentiate.
diff(S) differentiates a symbolic expression S with respect to
its
free variable as determined by SYMVAR.
diff(S,'v') or diff(S,sym('v')) differentiates S with respect to
v.
diff(S,n), for a positive integer n, differentiates S n times.
diff(S,'v',n) and diff(S,n,'v') are also acceptable.
Examples;
x = sym('x');
t = sym('t');
diff(sin(x^2)) is 2*x*cos(x^2)
diff(t^6,6) is 720.
See also sym/int, sym/jacobian, sym/symvar.
Calculul integralelor definite.
Exemplu:
>> g=exp(-2*x)*sin(3*x);
>> int_g=int(g,x)
int_g =
-(3*cos(3*x) + 2*sin(3*x))/(13*exp(2*x))
Dezvoltri n serie Taylor:
Exemplu :
>> clear,syms x, Tay_expx=taylor(exp(x),5,x,0)
Tay_expx =
x^4/24 + x^3/6 + x^2/2 + x + 1
>> pretty(Tay_expx)
4
3
2
x
x
x
-- + -- + -- + x + 1
Limite
>>L=limit(asin(x)/x,x,0)
L =
1
Pentru a reprezenta expresii simbolice se poate utiliza funcia ezplot.
Exemplu
>> ezplot(Tay_expx,[-3,3]);grid on
Se obine graficul:
244
4
3
2
x /24 + x /6 + x /2 + x + 1
16
14
12
10
8
6
4
2
0
3
2
1
0

1
2
3
Dac dorim a reprezenta dou grafice n aceai figur:
>>ezplot(Tay_expx,[-3,3]);grid on;hold on
>>ezplot(exp(x),[-3,3]);grid on
Se obine graficul:
exp(x)
18
16
14
12
10
8
6
4
2
0
3
2
1
0

1
2
3
Rzolvara sistemelor liniare i neliniare.
Exemplu
>> clear,syms x y
>> eq1='y=2*exp(x)';eq2='3-x^2';
>> [x,y]=solve(eq1,eq2,x,y)
x =
3^(1/2)
-3^(1/2)
y =
2*exp(3^(1/2))
2/exp(3^(1/2))
O alt modalitate de lucru este lansarea n execuie a notebook-ului Mupad astfel :
>>mupad
Apare o fereastra delimitata n zona de lucru de simbolul [ unde se introduce codu
l Maple:
245
> restart;
with(orthopoly):with(CodeTools):with(plots):
> S:=(x,k,a,b)->P(k,((b-a)*x+a+b)/2):
> a:=-1:b:=1:k:=5:
> p5:=plot(S(x,k,a,b),x=-1..1,y=1..1,color=[BLUE],title="Polinomul lui Legendre"
):
> k:=4:
> p4:=plot(S(x,k,a,b),x=-1..1,y=..1,color=[GREEN],title="Polinomul lui Legendre"
):
> k:=3:
> p3:=plot(S(x,k,a,b),
x=-1..1,y=-1..1,color=[YELLOW],title="Polinomul lui
Legendre"):
> k:=2:
> p2:=plot(S(x,k,a,b),x=-1..1,y=1..1,color=[BLACK],title="Polinomul lui Legendre
"):
> k:=1:
> p1:=plot(S(x,k,a,b),x=-1..1,y=1..1,title="Polinomul lui Legendre "):
> plots[display]({p1,p2,p3,p4,p5});
n urma execuiei programului va rezulta reprezentarea grafic a polinoamelor lui
Legendre de grade 1,2,3,4,5:
Comanda:
>> mupadwelcome
Are ca effect deschiderea unei ferestre de lucru interactive.
246
Comanda:
>> mupaddemo
Are ca effect dechiderea unei ferestre de tip demo .
13.13. Toolboxul de ecuaii cu derivate pariale (PDE
toolobox)
Modul de utilizare este urmtorul (32):
1. cu comanda >> pdetool se deschide foaia de lucru PDE Toolbox.
2. din meniul
options se activeaz grid i apoi n submeniul
application se selecteaz generic scalar ca tip de ecuaie.
3. Din meniul Draw se activeaz draw mode i apoi polygon.
4. Pe foaia de lucru PDE toolbox se traseaz cu mouse-ul frontiera domeniului de
calcul .
5. Din domeniul Boundary se activeaz boundary mode i apoi specify
boundary conditions;n fereastra de dialog care apare se selecteaz tipul de
condiie la limit Dirichlet sau Neuman precum i parametrii respectivi. Condiiile
la limit se pot da i individual pe fiecare segment de frontier prin click cu mouseu
l pe acel segment.
6. Din meniul PDE se activeaz PDE mode i apoi PDE specification; n
fereastra de dialog care apare se alege de exemplu tipul de ecuaie eliptic
ceeace corespunde la div(c*grad(u)+a*u=f i coeficienii: c=1, a=0,
f=sin (x).*sin(y).
7. Din meniul Mesh se activeaz mesh mode i apoi initialize mesh ceea
ce genereaz o triangulaie de pornire care apare pe desen.
8. Din meniul Solve se selecteaz Parameters i apoi n fereastra de dialog care
apare se activeaz Adaptive mode. Aceast opiune permite rafinarea
succesiv a triangulaiei n funcie de calitile soluiei aproximate. Tot din meniul
Solve, prin activarea lui Solve PDE se trece la rezolvarea numeric a
problemei introduse cu metoda elementului finit, prin rafinri succesive ale
tringulaiei iniiale pn la ndeplinirea unui criteriu de stop.
9. Din meniul Plot se activeaz Parameters, iar apoi n fereastra de dialog
care apare se selecteaz color i countour care determin modul de
reprezentare grafic a soluiei.
Exist numeroase alte opiuni care sunt bine prezentate n paginile de Help ale produs
ului
i n exemplele demonstrative.
247
CAPITOLUL 14.
PACHETUL DE MODELARE I SIMULARE SIMULINK
SIMULINK [19] este un pachet software pentru modelarea, simularea i analiza sistem
elor dinamice. Pot fi modelate sisteme liniare i neliniare, continue, discrete, h
ibride, cu
mai multe perioade de eantionare
SIMULINK furnizeaz o interfa grafic utilizator (GUI) [14] pentru crearea modelelor
sub forma unor diagrame construite din blocuri, pe baza unor tehnici de tip clic
k-and-drag
realizate cu mouse-ul. Astfel, trasarea diagramelor este simpl i intuitiv, aproape
la fel de
simpl ca trasarea acestor diagrame direct pe hrtie.
n plus, se evit formularea matematic laborioas (sistemele dinamice sunt de regul desc
rise de ecuaii difereniale sau cu diferene).
SIMULINK dispune de o bibliotec vast de surse, receptoare, componente liniare i
neliniare, conectori etc. pe baza crora se pot trasa diagrame i construi blocuri p
roprii.
Modelele realizate n SIMULINK sunt ierarhice. Se poate vizualiza modelul de nivel n
alt,
iar la efectuarea unui dublu click pe blocul respectiv se coboar nivel dup nivel a
stfel nct
se pot observa toate detaliile de construcie i de organizare ale modelului.
Dup crearea unui model se pot realiza simulri apelnd la diverse metode de integrare
din
meniurile SIMULINK i/sau utiliznd comenzi MATLAB. Prin utilizarea unor blocuri
de tip osciloscop sau diverse dispozitive de afiare se pot observa rezultatele ch
iar n timpul
simulrii. De asemenea se pot schimba valorile unor parametri i se poate observa im
ediat
efectul acestor modificri. Rezultatele obinute se pot transporta n workspace-ul
MATLAB pentru prelucrri i vizualizri ulterioare.
14.1. Rularea unui model SIMULINK demonstrativ
14.1.1. Rularea modelului
Pentru a analiza modul de lucru cu SIMULINK se poate apela la rularea unor progra
me (modele) demonstrative.
Unul din programele demo este modelul termodinamic al unei case.
Exemplul este luat de pe site-ul: http://www.mathworks.com
MATLAB SIMULINK - Simulation and Model Based Design
Pentru rularea programului, trebuie parcuri urmtorii pai:
Pas 1. Se starteaz MATLAB.
Pas 2. Se ruleaz demonstraia tastnd thermo n fereastra de comand MATLAB sau se
tasteaz comanda demo i se alege programul demonstrativ din meniul care apare. Aces
te
comenzi starteaz SIMULINK i creeaz o fereastr model care conine modelul respectiv.
249
La deschiderea modelului (extensiile fiierelor SIMULINK sunt .mdl) SIMULINK-ul
deschide un bloc de tip osciloscop cu dou ecrane (temperatur interioar/exterioar - I
ndoor
vs. Outdoor Temp. i costul nclzirii - Heat Cost ($)).
3. Pentru startarea simulrii se activeaz meniul Simulation i se alege comanda Start
command (sau se activeaz direct butonul Start din bara de instrumente). O dat cu s
tartarea
simulrii sunt plotate evoluiile temperaturii interioare i exterioare, ca i costul cu
mulat al
nclzirii.
4. Pentru oprirea simulrii se alege comanda Stop din meniul Simulation (sau buton
ul
Pause din bara de instrumente).
5. Atunci cnd se dorete terminarea rulrii programului se nchide modelul alegnd Close
din meniul File.
14.1.2. Descrierea modelului
Programul modeleaz sistemul termodinamic al unei case folosind o reprezentare sim
pl.
Temperatura de referin este setat la 70 grade Fahrenheit (aprox. 21 grade Celsius).
Temperatura din cas este influenat de temperatura exterioar, care poate fi variat su
b form
sinusoidal (amplitudine 15 grade F, temperatura de baz 50 grade F), variaie care si
muleaz fluctuaiile temperaturii din exterior din timpul zilei.
Sunt utilizate subsisteme care fac modelul simplu i configurabil (un subsistem es
te un bloc
alctuit dintr-un grup de blocuri conectate).
250
Modelul conine 5 subsisteme: Thermostat, House i trei Convertoare de temperatur (Te
mp
Convert), din care 2 convertesc Fahrenheit n Celsius i unul Celsius n Fahrenheit.
Efectuarea unui dublu click pe blocul House permite vizualizarea blocurilor comp
onente ale
subsistemului.
Subsistemul Thermostat este de tip releu i determin pornirea sau oprirea sistemulu
i de
nclzire. Se pot vedea blocurile componente la efectuarea unui dublu click pe subsi
stem.
Subsistemele de conversie a temperaturii au o structur asemntoare:
Alte demonstraii
Din fereastra bibliotecilor SIMULINK pot fi rulate i alte demonstraii care pun n evi
den diverse concepte i tehnici de modelare din diverse domenii. Pentru rularea din
fereastra bibliotecilor SIMULINK se procedeaz astfel:
1. Se tasteaz simulink3 n fereastra de comand MATLAB; va apare fereastra biblioteci
lor SIMULINK
2. Se execut dublu click pe icon-ul Demos. Va apare fereastra demo a MATLAB ului,
care conine cteva modele SIMULINK interesante.
14.2. Crearea modelelor SIMULINK
Tehnica de creare a unor modele SIMULINK poate fi ilustrat cel mai bine prin exemp
le.
Modelul prezentat n continuare integreaz un sinus i afieaz att rezultatul ct i unda
sinusoidal de la intrare. Schema bloc a modelului este urmtoarea:
251
Pentru a genera modelul se tasteaz mai nti simulink n fereastra de comand MATLAB
Pe sistemele de operare de tip Windows va apare Browser-ul bibliotecilor SIMULIN
K
Pe sistemele UNIX, va apare fereastra bibliotecilor SIMULINK.
Pentru a genera un model nou pe sisteme UNIX se selecteaz Model din submeniul
New al meniului File. Pe sisteme Windows se selecteaz butonul New Model din bara
de
instrumente a Browser-ului de Biblioteci.
252
SIMULINK va deschide o fereastr pentru un model nou.
Pentru construcia modelului vor fi necesare blocuri din urmtoarele biblioteci Simu
link:
Biblioteca de surse (blocul Sine Wave)
Biblioteca de receptoare (blocul Scope)
Biblioteca de sisteme continue (blocul Integrator)
Biblioteca Signals & Systems (blocul Mux)
Pentru copierea blocului Sine Wave se utilizeaz Browser-ul de bibiloteci: nti se ex
pandeaz arborele de biblioteci (prin click pe nodul Simulink i apoi click pe nodul
surse)
astfel nct s fie afiate blocurile din biblioteca de surse. Apoi se selecteaz blocul S
ine
Wave (click).
Fereastra Browser-ului de biblioteci va arta astfel:
La pasul urmtor se trage (innd apsat butonul din stnga al mouse-ului) blocul
Sine Wave din browser i i se d drumul n fereastra modelului. Simulink va face o cop
ie a
blocului Sine Wave n punctul indicat.
Se poate proceda asemntor pentru copierea blocului Sine Wave din biblioteca de sur
se
deschis din fereastra de biblioteci Simulink (pe sisteme Windows se poate deschid
e
fereastra de biblioteci din Browser prin click din butonul drept al mouse-ului i
apoi click pe
Open Library).
253
Ca i n cazul utilizrii browser-ului se trage blocul Sine Wave din biblioteca de sur
se n
fereastra modelului (drag and drop):
Se procedeaz n mod asemntor i cu copierea celorlalte blocuri din bibliotecile
corespunztoare n fereastra modelului. Se poate deplasa cu uurin orice bloc prin trage
rea
cu mouse-ul sau prin selectare i deplasare cu tastele sgei. Dup copierea tuturor blo
curilor
necesare n fereastra de lucru, modelul trebuie s arate ca n figura urmtoare:
254
La o examinare atent a simbolurilor de reprezentare a blocurilor se vor observa sg
ei care
indic intrrile sau ieirile din blocuri: dac simbolul > este orientat spre ieirea bloc
ului
atunci este un port de ieire (output port) iar dac simbolul este ndreptat spre bloc
este un
port de intrare (input port). Un semnal circul de la un port de ieire al unui bloc
spre un port
de intrare al altui bloc printr-o linie de conectare, atunci cnd blocurile sunt c
onectate, simbolurile porturilor dispar.
Pentru conectarea blocurilor se trece nti la conectarea blocului Sine Wave la prim
a intrare
(de sus) a blocului Mux. Pentru aceasta se poziioneaz pointerul mouse-ului deasupr
a portului de ieire al blocului Sine Wave. n acest moment forma pointerului se sch
imb i
devine de tip cruce (cursor).
Se ine apsat butonul stnga al mouse-ului i se deplaseaz cursorul pn la intrarea de s
a
blocului Mux.
Urmeaz eliberarea butonului mouse-ului i se observ cum blocurile au fost conectate.
n afara liniilor care conecteaz ieirile unor blocuri la intrrile altora exist i linii
de branare a unor linii la intrrile unor blocuri (se poate observa n modelul prezen
tat iniial). O astfel de linie este utilizat pentru conectarea ieirii din blocul Si
ne Wave i la blocul
Integrator (exist deja conexiunea la blocul Mux).
255
Pentru a efectua aceast conexiune se procedeaz astfel:
1. Se poziioneaz pointerul pe linia dintre blocurile Sine Wave i Mux.
2. Se apas i se ine apsat tasta Ctrl. Se apas butonul mouse-ului i apoi se trage pn
intrarea n blocul Integrator sau pn deasupra acestui bloc.
3. Se elibereaz butonul mouse-ului i se observ cum apare o linie de branare pn la por
ul de intrare n blocul Integrator.
Se procedeaz conform indicaiilor i se efectueaz toate conectrile necesare.
Modelul va trebui s arate n final astfel:
256
14.3. Rularea simulrilor n SIMULINK
Dup ncheierea procedurii de construcie a modelului, trebuie rulat o simulare
pentru aprecierea corectitudinii modelului i pentru obinerea rezultatelor cerute.
Pentru aceasta se deschide mai nti blocul osciloscopului (Scope), pentru a vizuali
za evoluia mrimilor modelului. Pstrnd fereastra osciloscopului deschis se va seta SIM
ULINK pentru rularea unei simulri timp de 10 secunde. Pentru aceasta, parcurgem
urmtorii pai:
1. Setm parametrii simulrii prin alegerea submeniului Parameters din meniul Simula
tion.
n fereastra de dialog care apare vom seta parametrul Stop time la 10.0 (valoare i
mplicit).
2. nchidem fereastra de dialog Simulation Parameters prin click pe butonul Ok. Si
mulink va
aplica parametrii i va nchide fereastra de dialog.
3.
Se selecteaz Start din meniul Simulation i se observ curbele afiate n fereastra
osciloscopului.
4. Simularea se va opri atunci cnd se ajunge la finalul timpului de rulare indica
t n fereastra
de dialog Simulation Parameters sau la selectarea opiunii Stop din meniul Simulat
ion (sau
din bara de instrumente).
Pentru salvarea modelului se alege Save din meniul File i se introduce un nume de
fiier i
se alege directorul unde dorim s salvm modelul (fiierul va avea automat extensia .m
dl).
Pentru ncheierea lucrului se selecteaz Exit MATLAB sau se tasteaz quit n fereastra d
e
comand a MATLAB-ului.
257
14.4. Modul de lucru al unui program SIMULINK
Fiecare bloc dintr-un model Simulink are urmtoarele caracteristici generale: un v
ector de
intrare, u, un vector de ieire, y, i un vector de stare, x:
Vectorul de stare poate consta din stri continue, stri discrete sau combinaii ale a
cestora.
Relaiile matematice dintre aceste mrimi (intrri, ieiri, stri) sunt exprimate prin ecu
aii de
tipul:
y = f 0 ( t , x ,u )
iesirea
xd k +1 = f u ( t , x ,u )
actualizare
xc = f d ( t , x ,u )
derivata
xc
unde x =
xd k
Simularea const n dou faze: iniializare i simulare propriu- zis.
Faza de iniializare nseamn parcurgerea urmtoarelor etape:
1. Blocul parametrilor este trecut n MATLAB pentru evaluare. Valorile numerice re
zultate sunt folosite ca parametri actuali (cureni).
2. Este parcurs ierarhia modelului. Fiecare subsistem care nu este un subsistem e
xecutat
condiionat este nlocuit prin blocurile componente.
3. Blocurile sunt sortate n ordinea n care este necesar actualizarea lor. Algoritmu
l de
sortare ntocmete o list astfel nct orice bloc nu este actualizat pn cnd blocurile c
furnizeaz intrrile acestuia nu sunt actualizate. n timpul derulrii acestei etape sun
t
detectate buclele algebrice.
4. Conexiunile dintre blocuri sunt verificate pentru asigurarea compatibilitii ieir
eintrare.
Urmeaz faza de simulare propriu-zis. Modelul este simulat prin integrare numeric.
Calculul derivatelor se face n doi pai. Prima dat ieirea fiecrui bloc este calculat
ordinea determinat de algoritmul de sortare. La al doilea pas, pentru fiecare blo
c se calculeaz derivatele n funcie de timp, intrri i stri. Vectorul derivatelor rezul
at este returnat algoritmului de rezolvare de tip ODE, care l utilizeaz pentru cal
culul noului vector de stare pentru momentul de timp urmtor. O dat ce noul vector
de stare este calculat,
blocurile sunt actualizate.
Faza de simulare propriu zis const n lansarea simulink-ului astfel construit.
258
Bibliografie Extins
1.
Blaga P. - Statistic prin Matlab, Editura Presa Universitar Clujean, ClujNapoca, 20
02.
2.
Burden L., Faires J.D.-Numerical Analysis, - PWS Kent, Boston, 1986.
3.
Chow C.Y-A Introduction to Computational Fluid Mechanics,- John Wiley and
Sons,1979.
4.
Coman G.-Numerical Analysis, - Libris, Cluj-Napoca, 1985.
5.
Dormand J.-Numerical Methods for Differential Equations, A Computational Approac
h,- CRC Press, Boca Raton New-York, 1996.
6.
Guckenheimer J., Holmes P. Nonlinear Oscillations, Dynamical Systems and Bifurca
tions of Vector Fields, 3rd ed., Springer-Verlag, New York,1990.
7.
Ghinea M., Fireeanu V. - Matlab, Calcul numeric, Grafic, Aplicaii, Editura Teora, 2
006.
8.
Gladwell I., Shampine L.F., Thomson S. - Solving ODEs with MATLAB, Cambridge Uni
versity Press, 2003.
9.
Gheorghiu C.I. Metode numerice pentru sisteme dinamice Casa Crii de tiin
Cluj-Napoca, 2006.
10. Kohr M. - Special Chapter of Mechanics- Cluj University Press, 2005.
11. Kuzneov Y.A. - Elements of Applied Bifurcation Theory,- Springer Verlag 2004.
12. Li F., Kuang Y. , Li B.- Analysis of IVGT glucose-insulin interaction models
with
time delay ,- Discret and Continuous Dynamical System Series B , Vol I, Nr.1, pa
g:
103-124, 2001.
13. Leonard N.E., Levine W.S Using MATLAB to analyze and design Control Systems,
Addison-Wesley Publ., SUA, 1995.
14. Marchand P. Graphics and GUIs with MATLAB, CRC Press, SUA, 2003.
15. The Mathworks MATLAB 7. Getting Started Guide, 2008- Minor revision for
MATLAB 7.7 (Release 2008b).
16. The Mathworks, Inc. MATLAB 7.- Programming Fundamentals, 2008., Revised
for Version 7.7 (Release 2008b).
259
17. The Mathworks, Inc. MATLAB 7. - Symbolic Math Toolbox 5, 2008., Revised for
Version 7.7 (Release 2008b).
18. Micula G., Micula S.. Handbook of Splines Kluwer Academic Publishers, Nether
land, 1999.
19. Nakamura S . - Numerical Computing and Graphic Vizualization in MATLAB, Pren
tice Hall, Englewood Clifs, NJ, 1996.
20. Opri D. Mircea G. The numerical Integrators of Dynamical Systems- Seminar
of Differential Dynamical Systems , Universitatea de Vest Timioara, 1998.
21. Petrila T, Trif D - Metode numerice i computaionale n dinamica fluidelorEditura
Digital Data Cluj, 2002.
22. Pop N. D - Aspects concerning some numerical methods for solving boundary
value problems, Cluj University Press, 2011.
23. Postelnicu T., Tutu P. - Metode matematice n medicin i biologie, Editura
tehnic, Bucureti, 1971.
24. Quarteroni A., Sacco R., Saleri F. - Numerical Mathematics, - Springer, New
York,
Berlin , Heidelberg, 2000.
25. Shampine L.F., Gladwell I, Thomson S. Solving ODEs with Matlab, Instructors
Mul Cambridge University Press, 2002.
26. Stuart A.M, Humphries, A.R. Dynamical Systems and Numerical Algebra Cambridg
e University Press, 1996.
27. Syebehely, V . - Theory of Orbits- Academic Press, 1967.
28. Tassi, Ph.-Metodes statistiques- Second edition, Economica, Paris, 1989.
29. Trmbia R.T- Numerical Analysis in Matlab, Cluj University Press, 2009.
30. Trif, D., - Metode Numerice pentru ecuaii difereniale i Sisteme dinamice,
Transilvania Press, Cluj 1997.
31. Verhulst F. - Nonlinear Differential Equattion- Springer Verlag, 1985.
32. Udrite C.- Geometric Dynamics,- Kluwer Academic Publishers, 2000.
33. White R.E. - Computational Mathematics, Models, Methods, and Analysis with
Matlab and MPI, Champan &Hall/CRC, Boca Raton, London, New York, Washington, D.C
., 2004.
34. Wiggins S.- Introduction to Applied Nonlinear Dynamical Systems and Chaos,
Springer-Verlag, 1990.
260
35. Wilson H.B.,Turcotte L.H., Halpern D.-Advanced Mathematics and Mechanics App
lication Using Matlab,-third ed.Champan &Hall/CRC, Boca Raton, London, New
York, Washington, D.C., 2003.
36. Wilkinson J.H- The Algebraic Eingenvalue Problem, - Claredon Press, Oxford,
1965.
37. Xu R., - Global analysis in a pure-delayed type Lotka-Volterrra system with
one
predator and twopreys.-Contemporary differential equations and applications, 819
0, Nova Sci. Publ., Huappauge, NY, 2004
38. Zhang G., Cheng S.S, - Positive periodic solutions of coupled delay differen
tial systems,Taiwannese Journal of Mathematics, 8 (2004), no 4., pp 639-652.
Adrese de web utile:
http://www.ma.ma.ac.uk/MCCM/MCCM.html
http://www.netlib.org/templates
http://www.3d-meier.de/tut3/Seite0.html
http://mathworks.com/moler
http://www-users.cs.umn.edu/~saad/books.html
261