Sunteți pe pagina 1din 9

1

LUCRRI PRACTICE DE PROGRAMARE N


MATLAB

s.l. dr. mat. Nicolae Mitu
s.l. dr. ing. Viorel Paleu


1.Introducere

Conform site-ului www.thefreedictionay.com, MATLAB este :
Un program interactiv, produs de firma MathWorks pentru calcule
numerice de nalt performan i vizualizri. MATLAB integreaz
analiza numeric cu calculul matriceal, cu prelucrarea semnalelor i cu
grafica ntr-un mediu uor de utilizat. MATLAB este construit pe baza
unui soft sofisticat de calcul matricial de analiz a ecuaiilor liniare.
Componentele livrate pot fi utilizate n urmtoarele domenii: matematic
aplicat, fizic, chimie, tehnic, finane i n orice domeniu care
utilizeaz modele ce necesit calcule numerice complexe.
Definiia din dicionar este o definiie destul de laborioas i
descrie, n opinia noastr, destul de corect punctul de vedere al unui
utilizator obinuit al programului MATLAB. Un specialist n tiina
calculatoarelor va spune c MATLAB este un limbaj de programare, mai
exact un interpretor pentru programarea calculelor numerice complexe.
Mathworks a intitulat manualul de utilizare la un moment dat (la
versiunea 5) MATLAB The Language of Technical Computing ceea
ce se traduce prin MATLAB Limbajul calculelor tehnice, fapt ce
vine n sprijinul accepiunii date de autori mai sus . Surprinztor,
MATLAB este un limbaj ca C++, Fortran, Pascal, fcnd parte din
aceeai clas cu BASIC-ul. De asemenea de subliniat c MATLAB
accept majoritatea instruciunilor C++ i practic apare ca o extensie a
acestui limbaj. De aceea au un mare avantaj cei ce cunosc limbajul C++,
pentru acetia timpul de nsuire al limbajului MATLAB fiind foarte
scurt. n cele ce urmeaz vom face un numr de lucrri practice utiliznd
versiunea 6.5 (R13) a programului MATLAB.

2

LUCRAREA 1
Expresii i calcule

2.Ferestrele MATLAB.

Lansarea programului MATLAB se face simplu: fie dnd click de
dou ori iconia corespunztoare de pe desktop, fie din start>all
programs>MATLAB. Se obine imaginea din figura 1.1 pe desktop.
Pentru nchiderea programului MATLAB avem urmtoarele
posibiliti:
- se apas butonul din stnga sus al ferestrei principale ;
- se tasteaz CTRL+Q;
- se intr n meniul File i se alege Exit;
- se tasteaz exit n zona de comenzi.
De interes deosebit este zona de comenzi, unde programul ateapt s
tastm comenzi pe care el s le interpreteze i s le execute.
Vom indica cu caractere italice exemplificrile din aceast zon.
Zona denumit istorie comenzi va conine toate comenzile date pe



Figura 1. Ferestrele MATLAB
Zona
memorie
Istorie
comenzi
Zona
comenzi
3

parcursul unei sesiuni de lucru (adic ntre deschiderea i nchiderea
programului. Mai mult conine toate comenzile din mai multe sesiuni,
fiecare sesiune fiind desprit de precedenta de un rnd ce conine data
i ora deschiderii sesiunii. Aceast zon ne permite s nu scriem secvene
de comenzi care au fost date n sesiuni anterioare, ci utiliznd copy-paste
s readucem secvena dorit n zona de comenzi, economisind timp. Zona
de memorie conine informaii despre toate datele,constante sau variabile
existente n memorie lucru ce permite uurare construirii programelor
mari. Mai exist o fereastr des utilizat, fereastra grafic. Aceast
fereastr se deschide numai dac a fost scris n zona de comenzi o
comand din clasa comenzilor grafice.

3 Expresii i calcule

Ca orice program de modelare matematic MATLAB este capabil
s efectueze calcule matematice simple (la sfritul comenzi se tasteaz
Enter pentru a o transmite programului Matlab):
- adunarea
>> 5 + 3
ans =

8
>>
- scderea
>> 5 3
ans =

2
>>
- nmulirea
>> 5 * 3
ans =

15
>>
- mprirea
>> 5 / 3
ans =

1.6667
4
>>
- ridicarea la putere
>> 5 ^ 3
ans =

125
>>
Se impun dou observaii: prima este remarcarea faptului c
operaiile de nmulire i mprire utilizeaz aceleai simboluri, *
respectiv / , care sunt utilizate n celelalte limbaje de programare; a doua
este apariia variabilei ans, variabil n care programul introduce automat
rezultatul unei comenzi ce nu definete o variabil proprie n acest scop..
Sigur putem face calcule aritmetice complexe acum utiliznd
reguli implicite acceptate n limbajele de programare. Astfel pentru
calculul simplu:
3
7
3
5+

Vom scrie:
>> (5+3/7)/3
ans =

1.8095
>>
Utiliznd parantezele corespunztor se pot calcula expresii mai
complicate. n calcule se pot utiliza i funcii elementare predefinite n
program. Mai jos prezentm cele mai utilizate funcii:
a) funcii trigonometrice
sin sinus; asin arcsinus;
cos cosinus; acos arccosinus;
tan tangent; atan arctangent;
cot cotangent; acot arccotangent;
sec secant; asec arcsecant;
csc cosecant; acsc arccosecant;
b) funcii putere;
exp funcia exponenial;
log logaritm natural;
log2 logaritm n baza 2;
log10 logaritm n baza 10;
sqrt funcia radical;
5
c) alte funcii;
abs valoarea absolut,modul;
min minimum;
max maximum;
n [3] se gsesc listate n ordine alfabetic toate funciile definite
implicit de programul MATLAB. Putem utiliza aceste funcii n calcule:

17 . 0
5 . 1 ) 7 ln( 5
3
cos
4
sin
+
+


Se va scrie comanda:
>> (sin(pi/4)+cos(pi/3))/(sqrt(5+log(7))-1.5^0.17)
ans =

0.7717
>>

Aplicaii

1. Care dintre expresii este mai mare?
a)
2
2 ; sau


b)
2
2 1 1
1 ; sau


+ +
+ +
c)
sin cos
3 4
sin cos .
3 4
sau

+
| |
+
|
\ .


2. S se calculeze:
a)
1 5
2
+
=
b)
( )
3
2

(
(

=
c)
2 2
10 cos
3

=

3. S se afle valoarea fraciilor:
6
a)
3
3
3
1 3
3

| |
|

| =
+ |
|
\ .

b)
3
ln(56) sin(cos 44.67)
ln(678) lg(223.38) (sin )
3
tg

+
=
+

c)
1
2
1
3
1
2
1
5
1
1 6
=
+
+
+
+
+


4. S se efectueze calculele cu constante speciale:
a) realmax + 2 =
b) inf inf =
c) nan + 2 =
d) realmax realmin =
e) inf / inf =
f) 0 * inf =

5. De la analiza matematic se tie c limitele:
( ) ( )
0
lim
h
f x h f x
h

+
i
( ) ( )
0
lim
2
h
f x h f x h
h

sunt egale cu derivata


funciei n x, ( )
'
f x . Acest lucru nseamn c dnd o valoare mic pentru
h fraciile din limitele de mai sus aproximeaz derivata. Lund f(x)=sin x
s se calculeze eroarea dintre valoarea exact a derivatei n
4

i aceste
aproximri pentru:
a) h=10
-6
;
b) h=10
-8
;
c) h=10
-10
;
d) h=10
-12
;
e) h=10
-14
.
Cum explicai rezultatele?
7

6. Pentru x=0.5 i t= 2 calculai expresiile:
a)
( ) ( )
3 2
1 ln 1 x t t + + + =
b) ( ) 1 cos
x t
e x t
+
+ + =
c)
2
cos
t
x
x arctg t
x t e
+
=
+ +




Indicaii i soluii

1.
a) 2^pi-pi^2

ans =

-1.0446 Deci
2
2

< . Analog i punctele b) i c).



2.
a) (1+sqrt(5))/2

ans =

1.6180
b) 6.5919
c) 7.3696

3.
a) ((3^pi-pi^3)/((1+sqrt(3))/3))^(pi/sqrt(3))

ans =

0.3849
b) 2.4231
c) 0.5576

4.
a) realmax;
8
b) NaN;
c) NaN;
d) realmax;
e) NaN;
f) NaN;

5. Erorile sunt date de: abs(cos(pi/4)-(sin(pi/4+h)-sin(pi/4))/h) ,
respectiv abs(cos(pi/4)-(sin(pi/4+h)-sin(pi/4-h))/h/2)
a)
h=0.000001
ans=
3.5344e-007
ans=
5.2650e-011
b)
h=0.00000001
ans=
3.0503e-009
ans=
3.0503e-009
c)
h=0.0000000001
ans =
9.2454e-007
ans =
3.6942e-007
d)
h=0.000000000001
ans =
5.7368e-006
ans =
6.1248e-005
e)
ans =
0.0034
ans =
0.0021
Este surprinztor dar fraciile nu tind la derivata n
4

!!? Motivul este n


principal erorile de calcul care se acumuleaz( precizia este mic la
9
mainile pe 32 bii). De remarcat este faptul c i funciile elementare
sin(x) i cos(x) sunt i ele calculate i au erori de aproximare. n plus aici
este vorba de o nedeterminare de forma
0
0
i deci se mpart dou numere
foarte mici. Ca i sfat n astfel de calcule utilizai valori pentru h la
jumtatea preciziei maxime, deci 10
-7
sau 10
-8
. Se observ c precizia
atins atunci este n jur de 10
-8
, 10
-9
o precizie satisfctoare pentru
mainile de 32 bii. Precizia se va dubla odat cu trecerea la procesoare
pe 64 bii.

6.
a) (x^3+1)*log(1+t+t^2)= 1.6704
b) exp(x+t)*(1+x+cos(t))= 11.2300
c) ((cos(x))^2+atan(t))/(x+t+exp(x^t))= 0.5121