0% au considerat acest document util (0 voturi)
21 vizualizări24 pagini

UI9 Matlab

Documentul oferă o introducere în MATLAB, un limbaj de programare de înaltă performanță utilizat pentru matematică, simulare și vizualizare. Se discută despre structura MATLAB, inclusiv limbajul, mediul de lucru, funcțiile matematice și interfața de aplicații, precum și despre pachetul SIMULINK pentru simularea sistemelor. De asemenea, se explică cum se utilizează expresiile, variabilele, operatorii și funcțiile în MATLAB, împreună cu resursele de ajutor disponibile online.

Încărcat de

MariusMarian Ion
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
21 vizualizări24 pagini

UI9 Matlab

Documentul oferă o introducere în MATLAB, un limbaj de programare de înaltă performanță utilizat pentru matematică, simulare și vizualizare. Se discută despre structura MATLAB, inclusiv limbajul, mediul de lucru, funcțiile matematice și interfața de aplicații, precum și despre pachetul SIMULINK pentru simularea sistemelor. De asemenea, se explică cum se utilizează expresiile, variabilele, operatorii și funcțiile în MATLAB, împreună cu resursele de ajutor disponibile online.

Încărcat de

MariusMarian Ion
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 24

UÎ.9.

matlab

CUPRINS

9.1. Introducere

9.2. Expresii în matlab

9.3 Help on-line, formatul datelor, opţiuni


de salvare

9.4. Crearea fișierelor matlab (.m files)

Lucrare de verificare nr. 9.

Obiective

• Introducerea într-un limbaj de


programare, matlab;

După parcurgerea unității de învățare


nr. 9. cursanții vor fi capabili:

• să realizeze programe în
matlab.

49
9.1. Introducere
MATLAB® = Limbaj de înaltă performanţă pentru proiectarea asistată de
calculator.

MATLAB este în acelaşi timp un limbaj de programare şi un sistem de


dezvoltare care integrează calculul, vizualizarea şi programarea într-un mediu
uşor de utilizat (easy-to-use), problemele şi soluţiile acestor probleme 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

• Grafica inginerească şi din ştiinţele aplicate

• Dezvoltarea de aplicaţii, inclusiv GUI

MATLAB = sistem interactiv care are ca element de bază tabloul, matricea,


ceea ce permite rezolvarea problemelor de calcul numeric, în special cele care
necesită prelucrarea de vectori sau matrici.

Numele MATLAB provine de la Matrix laboratory, firma producătoare este


The MathWorks, Inc., SUA.

MATLAB-ul a evoluat:

• în mediul universitar unde este pachetul standard pentru cursurile


introductive şi avansate de matematică, inginerie şi ştiinţe

• în industrie, unde este utilizat pentru cercetarea de înalt randament,


dezvoltare şi producţie

MATLAB permite dezvoltarea unei familii de aplicaţii sub forma toolbox-


urilor. Aceste toolbox-uri permit învăţarea şi aplicarea tehnologiilor
specializate din diverse domenii. Sunt disponibile toolbox-uri pentru domenii
cum ar fi: procesarea numerică a semnalelor, sisteme de conducere automată,
reţele neurale, logică fuzzy, wavelet, simulare (SIMULINK), identificare etc.

50
Sistemul MATLAB constă în cinci părţi principale:

• Limbajul MATLAB

• Mediul de lucru MATLAB

• Handle Graphics®

• Biblioteca de funcţii matematice a MATLAB-ului

• Interfaţa de aplicaţii program a MATLAB-ului (API)

Limbajul MATLAB: Reprezintă un limbaj de nivel înalt de tip matrice/tablou


cu instrucţiuni de control al salturilor, funcţii, structuri de date, intrări/ieşiri
şi cu proprietăţi de programare orientată pe obiecte. Facilităţile de programare
sunt organizate pe 6 directoare:

Tabelul 9.1

ops Operators and special characters.


Lang Programming language constructs.
Strfun Character strings.
Iofun File input/output.
Timefun Time and dates.
Datatypes Data types and structures.

Mediul de lucru MATLAB: Reprezintă un set de facilităţi care permit


manevrarea variabilelor în spaţiul de lucru, importul şi exportul de date,
dezvoltarea, manipularea, editarea şi depanarea fişierelor MATLAB (.m) şi a
aplicaţiilor MATLAB. Aceste facilităţi sunt organizate în directorul:

Tabelul 9.2
general General purpose commands.

Handle Graphics®: Reprezintă sistemul grafic al MATLAB-ului. Cuprinde


comenzi de înalt nivel pentru vizualizarea datelor bi şi tri-dimensionale,
procesarea imaginilor, animaţie, prezentări de grafice. Permite de asemenea
utilizarea unor comenzi de nivel scăzut pentru crearea unor interfeţe grafice
GUI. Funcţiile grafice sunt organizate în 5 directoare:

Tabelul 9.3
graph2d Two-dimensional graphs.
Graph3d Three-dimensional graphs.
Specgraph Specialized graphs.
Graphics Handle Graphics.
51
Uitools Graphical user interface tools.

Biblioteca de funcţii matematice a MATLAB-ului: Reprezintă o colecţie


complexă de algoritmi de calcul pornind de la funcţii elementare (sinus,
cosinus etc.) până la funcţii sofisticate (inversarea de matrice, valori proprii,
funcţii Bessel, FFT etc.). Funcţiile matematice sunt organizate în 8 directoare:

Tabelul 9.4
elmat Elementary matrices and matrix manipulation.
Elfun Elementary math functions.
Specfun Specialized math functions.
Matfun Matrix functions – numerical linear algebra.
Datafun Data analysis and Fourier transforms.
Polyfun Interpolation and polynomials.
Funfun Function functions and ODE solvers.
Sparfun Sparse matrices.

Interfaţa de aplicaţii program a MATLAB-ului (API) este o bibliotecă care


permite scrierea de programe în C sau Fortran care interacţionează cu
MATLAB-ul. Include facilităţi pentru apelarea rutinelor din MATLAB,
apelarea MATLAB-ului ca maşină de calcul, scrierea şi citirea fişierelor de
tip .MAT .

Pachetul SIMULINK
• SIMULINK® este un pachet software ataşat MATLAB-ului şi
reprezintă un sistem interactiv pentru simularea dinamicii sistemelor
neliniare (bineînţeles şi a celor liniare). Este conceput sub forma unei
interfeţe grafice care permite crearea unui model prin “trasarea”
schemei bloc a sistemului şi apoi simularea dinamicii sistemului.

• SIMULINK poate lucra cu sisteme liniare, neliniare, continue,


discrete, multivariabile etc.

• SIMULINK bebeficiază de aşa-numitele Blockset-uri care sunt de fapt


biblioteci suplimentare care conţin aplicaţii specializate din domenii
cum ar fi: comunicaţii, procesarea semnalelor etc.

• Real-time Workshop® este un program foarte important care permite


generarea unui cod C pentru schemele bloc create în SIMULINK şi
prin urmare permite rularea de aplicaţii în timp real de o mare
diversitate.

52
Toolbox-urile MATLAB
Toolbox-urile reprezintă o familie de aplicaţii care permit învăţarea şi
aplicarea tehnologiilor specializate din diverse domenii. Aceste toolbox-uri
sunt colecţii de funcţii MATLAB (functions) (M-files) care extind mediul
MATLAB pentru rezolvarea unor clase particulare de probleme. Câteva din
cele mai utilizate aplicaţii sunt prezentate în figura următoare.

Figura 9.1

9.2. Expresii
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 alcătuite cu ajutorul următoarelor tipuri:

• Variabile
53
• Numere

• Operatori

• Funcţii

Variabile

MATLAB-ul nu necesită declararea dimensiunii variabilelor, deoarece la


întâlnirea unui nou nume de variabilă generează automat variabila respectivă
şi alocă spaţiul necesar de memorie.

Numele unei variabile este o literă, urmată de un număr oricât de mare de


litere, cifre sau simboluri. Din acest număr “oricât de mare” sunt oprite
primele 31 de caractere.

MATLAB-ul este case sensitive - face distincţie între literele mici şi cele
mari.

Exemplu:

» a = 30

crează o matrice 1 x 1 cu numele a şi stochează valoarea acesteia 30 într-o


singură locaţie corespunzătoare singurului element al matricei.

Numere

MATLAB-ul utilizează notaţia zecimală, cu punct zecimal opţional şi cu semn


+ sau -. Se utilizează şi notaţia ştiinţifică cu litera e pentru a specifica o putere
a lui 10. Reprezentarea numerelor imaginare este realizată cu litera i sau j
ca sufix.

Exemple:
3 -99 0.0001

9.6397238 1.60210e-20 6.02252e23

1i -3.14159j 3e5i

Toate numerele sunt stocate intern utilizând formatul long specificat de


standardul IEEE în virgulă mobilă (precizie de 16 zecimale semnificative în
domeniul 10-308 la 10+308).

Operatori

Expresiile utilizează operatori aritmetici uzuali.

54
Tabelul 9.5
+ Adunare
- Scădere
* Multiplicare
/ Împărţire
\ Împărţire la stânga
^ Ridicarea la o putere
' Transpusa complex conjugată
( ) Operatorul de specificare a ordinii de evaluare

Funcţii

MATLAB-ul furnizează un mare număr de funcţii matematice elementare


standard (abs, sqrt, exp, sin …).

Există şi funcţii matematice avansate (funcţii Bessel, gama etc.), multe dintre
acestea acceptând argumente complexe.

Pentru vizualizarea funcţiilor elementare se poate tasta:

» help elfun

Pentru a vedea lista funcţiilor avansate se poate tasta:

» help specfun

» help elmat

O parte din funcţii (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 utilizatorului.

Alte funcţii sunt implementate ca fişiere MATLAB (M-files) şi pot fi chiar


modificate.

Câteva funcţii furnizează valorile unor constante universale:


Tabelul 9.6
pi 3.14159265
I Imaginary unit, -1
J Same as I
Eps Floating-point relative precision, 2-52
Realmin Smallest floating-point number, 2-1022
Realmax Largest floating-point number, 21023
Inf Infinity
NaN Not-a-number

55
Numele funcţiilor nu sunt rezervate şi deci este posibilă suprascrierea lor.

Exemplu:

eps = 1.e-6

Funcţia originală este reconstituită prin comanda:

» clear eps

Exemple de expresii şi rezultatele corespunzătoare ale evaluării acestor


expresii:

» rho = (1+sqrt(5))/2

rho =

1.6180

» a = abs(3+4i)

a =

» z = sqrt(besselk(4/3,rho-i))

z =

0.3730+ 0.3214i

» huge = exp(log(realmax))

huge =

1.7977e+308

» toobig = pi*huge

toobig =

Inf

56
9.3. Help on-line, formatul datelor, opţiuni de salvare
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 de tip UNIX) trebuie tastat matlab după prompter-ul
sistemului de operare.

Pentru aflarea tuturor informaţiilor utile despre o comandă sau o funcţie se


tastează help urmat de numele comenzii sau funcţiei respective.

Pachetul MATLAB dispune de asemenea de informaţii complete despre


utilizare sub forma unei documentaţii tip .pdf.

În cazuri particulare se poate apela la INTERNET, existând o legătură la


pagina Web a firmei producătoare.

Alte comenzi utile pentru aflarea de informaţii sunt: helpwin, lookfor,


help help.

Exemple:

>> help sin

sin Sine of argument in radians.

sin(X) is the sine of the elements of X.

See also asin, sind.

Reference page for sin

Other functions named sin

>> help exp

exp Exponential.

exp(X) is the exponential of the elements of X,


e to the X.

57
For complex Z=X+i*Y, exp(Z) =
exp(X)*(COS(Y)+i*SIN(Y)).

See also expm1, log, log10, expm, expint.

Reference page for exp

Other functions named exp

>> 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, disconnected

line objects are created and plotted as discrete


points vertically at X.

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 columns:

b blue . point - solid


58
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 color is specified, makes


automatic use of the colors specified by the axes
ColorOrder property. By default, plot cycles through
the colors in the ColorOrder property. For
monochrome systems, plot cycles over the axes
LineStyleOrder property.

59
Note that RGB colors in the ColorOrder property
may differ from similarly-named colors in the
(X,Y,S) triples. For example, the second axes
ColorOrder property is medium green with RGB [0 .5
0], while plot(X,Y,'g') plots a green line with RGB
[0 1 0].

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)

60
See also plottools, semilogx, semilogy, loglog,
plotyy, plot3, grid,

title, xlabel, ylabel, axis, axes, hold, legend,


subplot, scatter.

Reference page for plot

Other functions named plot

Formatul datelor
MATLAB-ul afişează numerele cu 5 zecimale (setare implicită). Această
setare se poate modifica cu ajutorul comenzii format.

>> help format


format Set output format.
format with no inputs sets the output format to
the default appropriate
for the class of the variable. For float
variables, the default is
format SHORT.

format does not affect how MATLAB computations


are done. Computations
on float variables, namely single or double, are
done in appropriate
floating point precision, no matter how those
variables are displayed.
Computations on integer variables are done
natively in integer. Integer
variables are always displayed to the
appropriate number of digits for
the class, for example, 3 digits to display the
INT8 range -128:127.
format SHORT and LONG do not affect the display
of integer variables.

format may be used to switch between different


output display formats
of all float variables as follows:
format SHORT Scaled fixed point format
with 5 digits.
format LONG Scaled fixed point format
with 15 digits for double
61
and 7 digits for single.
format SHORTE Floating point format with 5
digits.
format LONGE Floating point format with 15
digits for double and
7 digits for single.
format SHORTG Best of fixed or floating
point format with 5
digits.
format LONGG Best of fixed or floating
point format with 15
digits for double and 7
digits for single.
format SHORTENG Engineering format that has
at least 5 digits
and a power that is a
multiple of three
format LONGENG Engineering format that has
exactly 16 significant
digits and a power that is a
multiple of three.

format may be used to switch between different


output display formats
of all numeric variables as follows:
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. Numbers
with a large numerator or large
denominator are
replaced by *.

format may be used to affect the spacing in the


display of all
variables as follows:
format COMPACT Suppresses extra line-feeds.
format LOOSE Puts the extra line-feeds back
in.

Example:
format short, pi, single(pi)

62
displays both double and single pi with 5 digits
as 3.1416 while
format long, pi, single(pi)
displays pi as 3.141592653589793 and single(pi)
as 3.1415927.

format, intmax('uint64'), realmax


shows these values as 18446744073709551615 and
1.7977e+308 while
format hex, intmax('uint64'), realmax
shows them as ffffffffffffffff and
7fefffffffffffff respectively.
The HEX display corresponds to the internal
representation of the value
and is not the same as the hexadecimal notation
in the C programming
language.

Exemple:

» c=1.333456789233

c =

1.3335

» format long

» c

c =

1.33345678923300

» format short e

» c

c =

1.3335e+000

» format long e

» c

c =

1.333456789233000e+000

63
» format

» c

c =

1.3335

Opţiuni 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 variabilele curente generate de către utilizator


într-un fişier numit matlab.mat . Dacă se doreşte se poate da un nume
fişierului de date în care se salvează variabilele.

Exemplu:

» save date c determ A

realizează salvarea datelor c, determ şi A într-un fişier date.mat .

Pentru restituirea variabilelor într-o sesiune de lucru ulterioară se foloseşte


comanda load.

Exemplu:

» load date

Dacă se doreşte aflarea variabilelor curente se pot utiliza comenzile who,


whos:

Exemplu:

» who

Your variables are:

A c determ

» whos

Name Size Bytes Class

64
A 2x2 32 double array

c 1x1 8 double array

determ 1x1 8 double array

Grand total is 6 elements using 48 bytes

Pentru ştergerea tuturor variabilelor curente din memoria de lucru se poate


utiliza comanda clear.

9.4. Crearea fișierelor MATLAB (.m files)


Deoarece este mult mai comod şi util decât introducerea comenzilor linie
după linie la prompterul MATLAB, se lucrează cu fişiere text care conţin
aceste linii program cu comenzile necesare.

Aceste fişiere conţin cod în limbajul MATLAB şi sunt denumite .m files (sau
M-files). Fişierele se creează utilizând un editor de text şi apoi se utilizează
ca o comandă MATLAB obişnuită.

Sunt două tipuri de fişiere .m:

• Fişiere Script, care nu acceptă argumente de intrare şi nu returnează


argumente de ieşire. Aceste fişiere operează cu datele din spaţiul de
lucru.
• Rutine (funcţii), care acceptă argumente de intrare şi returnează
argumente de ieşire. Variabilele utilizate sunt variabile locale
(interne) ale funcţiei.

Pentru a vedea conţinutul unui fişier MATLAB, de exemplu iedm.m, se


foloseşte comanda:

» type iedm

Fişiere Script
Atunci când se apelează la un fişier script, MATLAB-ul execută comenzile
găsite în fişierul respectiv. Fişierele script pot lucra cu date din spaţiul de
lucru (workspace) sau pot crea date noi cu care operează. Script-urile nu
furnizează argumente de ieşire, iar variabilele create rămân în workspace,
pentru a fi eventual folosite în calculele ulterioare.

Fişierele script pot furniza ieşiri grafice folosind funcţii cum ar fi plot,
bar.

65
Exemplu de fişier script:

magicrank.m, cu următoarele 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 fişierului script (fără extensia .m):

» magicrank

MATLAB-ul execută comenzile, calculează rangul unor matrici (matricile


magice), şi trasează graficul cu rezultatele calculului. După ce se termină
execuţia fişierului, variabilele n şi r rămân în spaţiul de lucru.

Graficul rezultat este prezentat în continuare:

Figura 9.2
66
Funcţii (rutine)
Aceste fişiere acceptă argumente de intrare şi furnizează argumente de ieşire.
Numele fişierului MATLAB (M-file) şi cel al funcţiei (subrutinei) respective
trebuie să fie identice. Funcţiile (subrutinele) lucrează cu variabile proprii
separate de spaţiul de lucru uzual al MATLAB-ului.

Exemplu:

funcţia rank. Fişierul M-file rank.m este disponibil în directorul


toolbox/matlab/matfun.

Se poate vizualiza fişierul cu comanda:

» type rank

function r = rank(A,tol)

%RANK Matrix rank.

% RANK(A) provides an estimate of the number of


linearly

% independent rows or columns of a matrix A.

% RANK(A,tol) is the number of singular values of


A

% that are larger than tol.

% RANK(A) uses the default tol = max(size(A)) *


eps(norm(A)).

% Class support for input A:

% float: double, single

% Copyright 1984-2007 The MathWorks, Inc.

s = svd(A);

67
if nargin==1

tol = max(size(A)) * eps(max(s));

end

r = sum(s > tol);

Prima linie a unei funcţii M-file începe cu cuvântul cheie function.


Această linie dă numele funcţiei, ordinea şi numărul argumentelor.

Liniile următoare (care încep cu caracterul %) sunt linii de comentariu, care


de fapt sunt şi liniile afişate atunci când se apelează la comanda » help
rank.

Restul liniilor sunt executabile. Variabila s, ca şi r, A, tol sunt variabile locale


ale funcţiei şi sunt separate de variabilele din workspace.

uncţia rank poate fi utilizată în diferite moduri:

» rank(A)

» r = rank(A)

» r = rank(A,1.e-6)

Variabile globale
Dacă se doreşte ca mai multe astfel de subrutine să utilizeze o anume variabilă
comună, se declară variabila respectivă ca globală utilizând comanda global
în toate funcţiile respective.

Exemplu:

fişierul falling.m:

function h = falling(t)
global GRAVITY
h = 1/2*GRAVITY*t.^2;

Se introduc apoi în mod interactiv liniile:

» global GRAVITY

» GRAVITY = 32;
68
» y = falling((0:.1:5)');

Funcţia eval
Funcţia eval lucrează cu variabilă text pentru implementarea unei facilităţi
puternice de tip macro text.

Expresia eval(s) foloseşte interpreter-ul MATLAB pentru evaluarea


expresiei sau execuţia declaraţiei din şirul de caractere s.

Vectorizarea
Pentru a obţine o viteză de calcul mare, este foarte importantă aşa-numita
vectorizare a algoritmilor în fişierele MATLAB. Acolo unde alte limbaje
folosesc bucle de repetitive, MATLAB-ul poate utiliza operaţii matriceale sau
vectoriale.

Exemplu:

x = 0;

for k = 1:1001

y(k) = log10(x);

x = x + .01;

end

Versiunea vectorizată a aceluiaşi program este:

x = 0:.01:10;

y = log10(x);

Funcţii de funcţii
În MATLAB există o clasă de funcţii care lucrează cu funcţii neliniare ca
argument. Funcţiile de funcţii includ:

• găsirea zerourilor;
• optimizare;
• integrare numerică;

69
• ecuaţii diferenţiale ordinare.

MATLAB-ul reprezintă funcţia neliniară ca o funcţie M-file care poate fi


ulterior utilizată ca argument de alte funcţii MATLAB.

Exemplu:

Următorul fişier creează o funcţie neliniară:

function y = humps(x)

y = 1./((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;

Această funcţie poate fi evaluată pentru un set de puncte în intervalul 0 x


1 cu programul:

x = 0:.002:1;

y = humps(x);

şi apoi se poate reprezenta grafic funcţia cu comanda

plot(x,y)

Graficul arată că funcţia are un minim local la aproximativ x = 0.6. Dacă de


exemplu utilizăm funcţia fmins putem găsi imediat valoarea exactă a lui x .
Primul argument al funcţiei fmins este chiar numele funcţiei pentru care
calculăm minimul (al doilea parametru este o aproximare grosieră a localizării
minimului).

» p = fmins('humps',.5)

p =

0.6370

Se poate acum evalua valoarea funcţiei în punctul de minim local:

» humps(p)

ans =

11.2528

70
Figura 9.3

71
Lucrare de verificare nr. 9.

✓ Identificați care este formatul datelor în matlab.


✓ Care este tipul fisierelor în matlab?
✓ Care este semnificația operatorilor utilizați de matlab.

72

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