Capitolul 1. Calcule matematice fundamentale în...
Transcript of Capitolul 1. Calcule matematice fundamentale în...
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
1
Capitolul 1. Calcule matematice fundamentale în Matlab
1.1. Noţiuni de bază în Matlab
MATLAB este un pachet de programe de o performanţă remarcabilă care are o vastă
aplicabilitate atât în domeniul ştiinţei cât al ingineriei.
Pentru lansarea în execuţie a programului se acţionează dublu click pe pictograma
Matlab de pe Desktop sau se selectează StartAll Programs Matlab.
În Figura 1.1 se observă apariţia a patru tipuri de ferestre cu care lucrează Matlab.
Fig. 1.1. Ferestrele din Matlab 7.9.
Ferestrele din Matlab 7.9 sunt:
1. fereastra de comenzi Command Window;
2. fereastra Command History în care sunt stocate comenzile lansate în execuţie în
fereastra de comenzi;
3. fererastra Workspace, ce prezintă variabilele curente din memorie cu numele,
valoarea şi tipul acestora;
4. fereastra Current Folder, care afişează conţinutul directorului curent, împreună cu
subdirectoarele şi fişierele acestuia.
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
2
Dintre funcţiile utilizate pentru controlul general al Matlab-ului 7.9 menţionăm:
help: listează help-ul din Matlab în fereastra de comenzi;
help help: oferă informaţii despre funcţia help;
help nume funcţie: furnizează informaţii “on-line” despre funcţia
intitulată nume funcţie;
Scriind în dreptul prompter-ului (simbolul ) din Matlab comanda help dec2base,
lansată în linia de comandă se permite obţinerea informaţiilor despre funcţia dec2base.
doc nume funcţie: afişează documentaţia html corespunzătoare funcţiei
nume funcţie în browser-ul Help;
which nume_funcţie: permite localizarea funcţiei nume_funcţie;
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
3
iskeyword: listează cuvintele cheie din Matlab;
lookfor keyword: listează toate comenzile şi funcţiile care conţin
cuvântul cheie keyword;
who: listează variabilele curente din memorie;
whos: listează variabilele curente din memorie, alături de
dimensiunea şi tipul acestora;
clear listă_variabile: şterge din memorie variabilele existente în lista
precizată;
clear all: şterge din memorie variabilele existente în lista
precizată;
save nume_fişier
listă_variabile:
salvează variabilele utilizate într-o sesiune de lucru
sau enumerate în listă, într-un fişierul binar
nume_fişier.mat;
load nume_fişier
listă_variabile:
încarcă variabilele enumerate în listă (sau toate
variabilele din nume_fişier) din nume_fişier, în
sesiunea de lucru;
lastwarn returnează ultimul mesaj de avertizare (warning
message) semnalat de MATLAB;
lasterr returnează ultimul mesaj de eroare (error message)
semnalat de MATLAB;
helpbrowser: deschide browser-ul Help din Matlab 7.9.
Comanda helpbrowser poate fi înlocuită cu selectarea din meniul Help a opţiunii
Product Help:
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
4
Pentru a obţine informaţii “on-line” despre toate funcţiile din Matlab 7.9 şi despre
operatorii utilizaţi de acest program vom accesa:
Help Product Help FunctionsAlphabetical List.
Matlab 7.9 utilizează următorii operatori aritmetici (algebrici) între doi scalari:
Nume operator Forma algebrică Forma Matlab 7.9
Adunarea yx yx
Scăderea yx yx
Înmulţirea yx yx
Împărţirea la dreapta yx : yx /
Împărţirea la stânga xy : yx \
Ridicarea la putere yx yx^
Matlab 7.9 utilizează următorii operatori relaţionali:
Nume operator Forma algebrică Forma Matlab 7.9 Funcţia echivalentă
Mai mic yx yx lt(x,y)
Mai mare yx yx gt(x,y)
Mai mic sau egal yx yx le(x,y)
Mai mare sau egal yx yx ge(x,y)
Egal yx yx eq(x,y)
Diferit yx yx ~ ne(x,y)
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
5
Ordinea operaţiilor din Matlab 7.9 este aceeaşi cu cea a operaţiilor aritmetice, cunoscute
din matematica elementară, adică se efectuează întâi operaţiile cuprinse în paranteze, apoi
ridicarea la putere, înmulţirea şi împărţirea, adunarea şi scăderea. Ordinea prestabilită a
operaţiilor în calculul unei formule poate fi modificată prin utilizarea parantezelor ( ).
Valoarea expresiei 3 5 se calculează scriind-o în Matlab astfel:
ci nu sub forma:
Operaţiile logice cu scalari în MATLAB sunt:
Nume operator Forma Matlab 7.9
and (şi) and(x,y)
x&y
or(sau) or(x,y)
x|y
not(negaţie) not(x)
~x
exlusive or(sau exclusiv) xor(x,y)
Exemplul 2. 1. Să se verifice operaţiile logice pentru .1,0 ba
Sintaxa necesară pentru a apela o funcţie în MATLAB este:
[argumente returnate]=nume_funcţie(argumente de intrare)
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
6
Vom prezenta câteva funcţii din Matlab 7.9 utilizate în calcule matematice
fundamentale:
abs(x): determină modulul unui număr real sau complex x;
angle(z): determină argumentul numărului complex z;
acos(x): calculează ;arccos x
asin(x): calculează ;arcsin x
base2dec('strn',base): converteşte nr. strn din baza base în baza 10;
Exemplul 1. 1. Să se scrie numărul 6562 din baza 7 în baza 10 .
[th,rho]=cart2pol(x,y): transformă coordonatele carteziene (x,y) în coordonate
polare (unghiul th este returnat în radiani);
[x,y]=pol2cart( th,rho): transformă coordonatele polare (th,rho) în coordonate
carteziene (unghiul th este dat în radiani);
[th,phi,r]=cart2sph(x,y,z): transformă coordonatele carteziene (x,y,z) în
coordonate sferice (unghiurile th şi phi sunt returnate
în radiani)
Exemplul 1. 2. Determinaţi coordonatele sferice ale punctului 12,4,3 P .
[x,y,z]=sph2cart(th,phi,r): transformă coordonatele sferice (th,phi,r) în
coordonate carteziene (unghiurile th şi phi sunt date
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
7
în radiani);
complex(a,b): Construieşte forma algebrică ibaz a numărului
complex z ;
conj(z): determină conjugatul numărului complex z;
real(z) returnează partea reală a numărului complex z;
imag(z) returnează partea imaginară a numărului complex z;
cos(x): calculează ;cos x
cot(x): Calculează xcot
dec2base(d,base): converteşte numărul d din baza 10 în baza base;
dec2bin(d): converteşte numărul d din baza 10 în baza 2;
dms2degreees([d m s]): converteşte în grade un unghi dat în grade (d=degree),
minute (m=minutes), secunde(s=seconds)
Exemplul 1. 3. Transformaţi în grade unghiul de 547157 .
degtorad(d): converteşte în radiani un unghi dat în grade;
tan(x): calculează xtg ;
Exemplul 1. 4. Calculaţi 43.113tg .
isprime(x): testează dacă un număr este prim; funcţia returnează
valoarea 1 în caz afirmativ şi 0, altfel;
gcd(x,y) returnează cel mai mare divizor comun pentru x şi y;
lcm(x,y) returnează cel mai mic multiplu comun pentru x şi y;
rem(a,b) determină restul împărţirii lui a la b;
factor(a) descompune un număr în factori primi;
log(x): calculează xln ;
log2(x): calculează ;log2 x
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
8
log10(x): calculează ;log10 x
pow2(x): calculează ;2x
rats(d): aproximează d printr-o fracţie raţională;
Exemplul 1. 5. Să se scrie sub formă de fracţii raţionale numerele:
.6,5,4,3,2 6543
exp(x): calculează ;e x
floor(x): rotunjeşte valoarea lui x către ; funcţia matematcă
corespunzătoare este [x]= partea întreagă a lui x;
ceil(x): rotunjeşte valoarea lui x către ;
round(x): rotunjeşte valoarea lui x către cel mai apropiat întreg;
fix(x): rotunjeşte valoarea lui x către 0;
Exemplul 1. 6. Să se aproximeze cu un număr întreg numărul 5489089765.0x
folosind funcţiile de rotunjire de care dispune Matlab 7.9.
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
9
sin(x): calculează xsin ;
sqrt(x): calculează x ;
unitsratio(to, from): converteşte unităţi de măsură pentru lungimi şi
unghiuri;
Matlab 7.9 dispune de funcţia unitsratio, pe care nu o au versiunile precedente versiunii
Matlab 7.0. Unitsratio recunoaşte următorii identificatori pentru convertirea unităţilor de
lungime: metrul- „m‟, centimetrul- „cm‟, milimetrul- „mm‟, micronul- „micron‟, kilometrul-
„km‟, mila nautică- „nm‟, piciorul- „ft‟, inch- „in‟, yard- „yd‟, mila internaţională- „mi‟, etc.
Unitsratio recunoaşte următorii identificatori pentru convertirea unghiurilor: gradul-
„deg‟, radianul- „rad‟; 1 rad corespunde unghiului pentru care raportul dintre lungimea arcului
şi rază este egal cu 1.
Exemplul 1. 7. Determinaţi câţi metri are 1 yard.
Exemplul 1. 8. Câţi inci au 0.254 m?
Exemplul 1. 9. Determinaţi câte grade are un radian.
vpa(A, n): Afişează variabila A cu o precizie de n cifre. Valoarea
implicită pentru n este egală cu 32;
Exemplul 1. 10. Să se calculeze cu 14 zecimale valoarea fracţiei:
.37008959
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
10
Instrucţiunea
>> x=9
constituie o instrucţiune de atribuire în Matlab; apăsând tasta Enter se va afişa
x =
9
În cazul când utilizăm punct şi virgulă la sfârşitul instrucţiunii de atribuire nu se va mai
afişa rezultatul execuţiei instrucţiunii respective.
Expresiile ce conţin variabila x vor utiliza numărul introdus, care este memorat în
variabila x.
>> 1+x
ans =
10
Matlab-ul face distincţie între literele mari şi mici; de aceea, x şi X sunt variabile
distincte.
Din punct de vedere al formatului extern de afişare a numerelor pe ecran, Matlab 7.9
pune la dispoziţia utilizatorului funcţia format, a cărei sintaxă este:
format(‘type’) sau format type.
Calculatorul stochează un număr real finit ,x sub forma:
,0,1.01 121 amaaax teset
s (1.1)
unde:
1,0s ;
2Ν, semnifică baza considerată de calculatorul respectiv;
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
11
m reprezintă mantisa, lungimea sa t fiind numărul maxim de cifre ia ,
,10 ia care sunt memorate;
0,0,, ULULe constituie exponentul.
Numerele reprezentate sub forma (1.1) sunt denumite numere în virgulă mobilă,
deoarece poziţia punctului zecimal nu este fixă.
Cifrele paaa 21 (cu tp ) sunt primele p cifre semnificative ale lui .x
Standardul IEEE (Institute of Electrical and Electronics Engineers) stabileşte că
reprezentarea datelor în dublă precizie (double) se realizează pe 64 de biţi (8 bytes):
1 bit pentru semn (S);
11 biţi pentru exponent (E);
52 biţi pentru bază (fracţie=F)
iar în reprezentarea în simplă precizie (single) se utilizează 32 biţi, astfel:
S E E E E E E E E F F F F
0 1 2 3 4 5 6 7 8 9 10 30 31
Reprezentarea numerelor fără semn este asemănătoare reprezentării datelor cu semn dar
presupune alocarea bitului corespunzător semnului, pentru fracţie.
Alte tipuri de date (clase) numerice existente în Matlab 7.9 (pe lângă double şi single)
sunt:
int8(x): converteşte elementele lui x în numere întregi, cu
semn, reprezentate pe 8 biţi;
int16(x): converteşte elementele lui x în numere întregi, cu
semn, reprezentate pe 16 biţi;
int32(x): converteşte elementele lui x în numere întregi, cu
semn, reprezentate pe 32 biţi;
int64(x): converteşte elementele lui x în numere întregi, cu
semn, reprezentate pe 64 biţi;
uint8(x): converteşte elementele lui x în numere întregi, fără
semn, reprezentate pe 8 biţi;
uint16(x): converteşte elementele lui x în numere întregi, fără
semn, reprezentate pe 16 biţi;
uint32(x): converteşte elementele lui x în numere întregi, fără
semn, reprezentate pe 32 biţi;
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
12
uint64(x): converteşte elementele lui x în numere întregi, fără
semn, reprezentate pe 64 biţi;
Determinarea intervalului de valori specific fiecărei clase se poate obţine cu ajutorul
funcţiilor:
intmin (‘clasa_int’): returnează cea mai mică valoare din clasa de întregi
clasa_int;
intmax (‘clasa_int’): returnează cea mai mare valoare din clasa de întregi
clasa_int;
realmin (‘clasa_real’): returnează cea mai mică valoare din clasa reală
clasa_real;
realmax (‘clasa_real’): returnează cea mai mare valoare din clasa reală
clasa_real.
Observaţia 1. 1.
Clasa_int 64intu,32intu,16intu,8intu,64int,32int,16int,8int
Clasa_real .singledouble,
În MATLAB avem:
.1024
1021
53
2
U
L
t
Principalele formate de afişare sunt:
Valoarea
pentru
type
Rezultat Exemplu
long 15 cifre semnificative pentru double (numere
reprezentate în dublă precizie) şi 7 pentru single
(numere reprezentate în simplă precizie). Se
observă că celor 53 de cifre semnificative din baza
2 le corespund cele 15 cifre semnificative în baza
10, pe care le afişează formatul long în MATLAB.
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
13
long e formatul long, în notaţie ştiinţifică
long g 15 cifre
short 4 cifre semnificative
short e
formatul short, în notaţie ştiinţifică
short g 5 cifre semnificative
bank număr cu 2 zecimale
rat fracţie
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
14
Observaţia 1. 2.
(i) Notaţia ştiinţifică are următoarea semnificaţie:
0.3595.105955.3001e5955.3 1
(ii) Dacă se doreşte afişarea unui rezultat cu orice precizie trebuie utilizată funcţia vpa.
Pe lângă tipurile (clasele) numerice, Matlab 7.9 posedă şi clasele:
strings: variabilele de tip string se folosesc pentru a stoca
mesaje;
arrays: tablouri multidimensionale;
cell arrays: tablouri de celule- utilizate pentru gruparea datelor de
tipuri diferite într-o singură variabilă, exprimată cu { };
objects: obiecte- folosite în programarea orientată pe obiect.
Dintre variabilele şi constantele predefinite din Matlab 7.9 menţionăm:
Exemplul 1. 11. Evaluaţi expresia complexă:
hex hexazecimal
ans variabilă creată automat atunci când unei expresii nu i-a fost asignat un nume; ans
este abrevierea cuvântului answer;
realmax cea mai mare valoare reală pozitivă, care poate fi folosită în calcule, adică este
egală cu ;10486231581.79769313 308=1-L
realmin cea mai mică valoare reală pozitivă, care poate fi folosită în calcule, adică are
valoarea ;1085072012.225073851 308 tU
intmax cea mai mare valoare întreagă pozitivă, care poate fi folosită în calcule, adică este
egală cu 2147483647;
intmin cea mai mică valoare întreagă pozitivă, care poate fi folosită în calcule, adică este
egală cu -2147483648;
inf variabilă ce semnifică ;
pi PI 3.1415926535897....;
i sau j variabile folosite pentru introducerea numerelor complexe;
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
15
.1
21
i
i
Caracterele speciale specifice pentru Matlab 7.9 sunt:
1.2. Definirea tablourilor în Matlab
În Matlab 7.9 definirea tablourilor se poate face prin una din următoarele modalităţi:
1. introducerea listei de elemente componente
2. generarea lor cu ajutorul unor instrucţiuni şi funcţii
3. crearea de fişiere cu extensia .m
4. încărcarea lor din fişiere de date externe.
În cazul primei metode de definire a unui tablou (introducerea listei de elemente
componente), cea mai utilizată dintre toate, elementele unei linii dintr-un tablou sunt separate
prin spaţiu sau virgulă iar liniile se separă prin punct-virgulă.
Elementele tabloului sunt cuprinse între paranteze drepte şi pot fi atât numere reale sau
complexe cât şi orice expresie din Matlab 7.9.
Comanda
eps constituie toleranţa la eroare pentru operaţiile în virgulă mobilă efectuate în Matlab
şi are valoarea egală cu 016;e-2.22042 521 t
nan Variabilă care reprezintă un Not-a-Number .
% este utilizat pentru scrierea unui comentariu;
[ ] perechea de parenteze drepte este necesară definirii tablourilor;
’ apostrof, folosit în două scopuri: pentru transpunerea tablourilor şi respectiv ca
delimitator pentru şiruri de caractere;
; simbolul punct şi virgulă are dublă utilitate: separator de instrucţiuni (nu afişează
rezultate intermediare) şi pentru liniile unei matrice;
permite continuarea scrierii unei instrucţiuni pe linia următoare.
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
16
produce matricea de numere reale:
iar comanda
furnizează matricea complexă:
În cazul în care componentele unui vector constituie o reţea echidistantă, tabloul
unidimensional poate fi generat printr-o instrucţiune de atribuire, utilizând variabile de
interval, definite astfel:
v=v1:v2:v3,
unde:
v1 reprezintă valoarea iniţială a lui v;
v2 constituie incrementul (pasul);
v3 semnifică valoarea finală a lui v.
Dacă termenul v2 este omis, atunci pasul implicit este 1.
Exemplul 1. 12. Să se genereze un vector ale cărui componente iau valorile cuprinse
în intervalul ],3.1,0[ cu pasul 0.1.
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
17
Pentru a extrage o submatrice dintr-o matrice se utilizează caracterul special “:”. Spre
deosebire de Mathcad unde este posibilă numai extragerea unor blocuri adiacente dintr-o
matrice, MATLAB-ul permite selecţia şi a unor blocuri neadiacente.
O matrice A poate fi transformată într-un vector coloană folosind comanda
A(:),
care are drept rezultat, concatenarea coloanelor matricei A.
Exemplul 1. 13. Se consideră matricea
34.71278
78547.5
79.007.4
39971
A .
Se cere:
a) Transformaţi matricea A într-un vector coloană b ;
b) Să se extragă din matricea A , submatricea
378
787.5D ,
ce constă din elementele situate pe ultimele două linii şi coloanele 1 şi 4 ale
matricei A .
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
18
În MATLAB se poate realiza simplu concatenarea pe:
orizontală: [A B]
cat(2,A,B)
horzcat(A,B);
verticală: [A; B]
cat(1,A,B)
vertcat(A,B)
a două (sau mai multe) matrice A şi B, de dimensiuni adecvate.
Exemplul 1. 14. Să se concateneze pe orizontală şi respectiv verticală matricele:
.654
321,
654
321
BA
Un tablou tridimensional se numeşte tensor şi reprezintă o succesiune, în adâncime, de
matrice, denumite paginile tabloului.
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
19
Fig 1.2. Tensor cu 3 linii, 4 coloane şi 3 pagini.
Exemplul 1. 15. Generaţi în Matlab 7.9 tensorul reprezentat în Fig. 1.2.
Elementele
unui vector x pot fi identificate prin notaţia ix , semnificând componenta a i-a din
vectorul x , ni ,1 , n fiind numărul total de componente;
1
2
1 2 3 5
4 5 6 8
7 8 9 0
10 1 13 2
14 5 16 -1
-7 2 19 11
0 11 17 0
-4 51 1 6
6 -2 92 4
3
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
20
unei matrice A pot fi identificate prin notaţia jiA , , semnificând elementul aflat în
A , la intersecţia dintre linia i şi coloana j , mi ,1 , nj ,1 , m fiind numărul de
linii iar n numărul de coloane ale matricei A ;
unui tensor T pot fi identificate prin notaţia kjiT ,, , semnificând elementul aflat
în T , la intersecţia dintre linia i , coloana j şi pagina k , mi ,1 , nj ,1 , pk ,1
m fiind numărul de linii, n numărul de coloane şi respectiv p numărul de pagini
ale tensorului .T
Matlab 7.9 utilizează următorii operatori aritmetici (algebrici) pentru matrice:
Nume operator Forma algebrică Forma Matlab 7.9
Adunarea YX YX
Scăderea YX YX
Înmulţirea YX YX
Înmulţirea element cu element jiYjiX ,, YX .
Împărţirea la dreapta 1YX YX /
Împărţirea la dreapta element cu element jiYjiX ,/, YX /.
Împărţirea la stânga YX 1 YX \
Împărţirea la stânga element cu element jiXjiY ,/, YX \.
Ridicarea la putere pX , p scalar pX ^
Ridicarea la putere a fiecărui element pjiX , , p scalar pX .^
Transpunerea tX 'X
Observaţia 1. 3.
(i) Produsul a două matrice este posibil dacă şi numai dacă numărul coloanelor
matricei X este egal cu numărul liniilor matricei .Y
(ii) Transpunerea unui tablou, ce are componente numerice (ci nu simbolice) se
realizează folosind operatorul apostrof.
(iii) MATLAB returnează un mesaj de eroare atunci când se încearcă efectuarea
unor operații cu matrice, care au dimensiuni incompatibile.
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
21
Matlab 7.9 utilizează următorii operatori relaţionali (de comparaţie) pentru matrice:
Nume operator Forma algebrică Forma Matlab 7.9 Funcţia echivalentă
Mai mic BA BA lt(A,B)
Mai mare BA BA gt(A,B)
Mai mic sau egal BA BA le(A,B)
Mai mare sau egal BA BA ge(A,B)
Egal BA BA isequal(A,B)
eq(A,B)
Diferit BA BA ~ ne(A,B)
Operaţiile logice cu matrice (se efectuează element cu element) în MATLAB sunt:
Nume operator Forma Matlab 7.9
and (şi) and(A,B)
A&B
or(sau) or(A,B)
A|B
not(negaţie) not(A)
~A
exlusive or(sau exclusiv) xor(A,B)
Dintre funcţiile folosite de Matlab 7.9 pentru generarea tablourilor menţionăm:
diag(v): generează o matrice diagonală din vectorul v;
diag(A): returnează vectorul ce are drept componente
elementele de pe diagonala principală a matricei A;
diag(v,m): formează o matrice pătratică A, de dimensiune
,mabsn având elementele vectorului v situate pe a
m-a diagonală, de deasupra diagonalei principale
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
22
(m>0) a lui A ( n fiind lungimea lui v); dacă m este
un număr întreg negativ, atunci se consideră
elementele vectorului v situate pe a m-a diagonală, de
dedesubtul diagonalei principale a lui A.
Exemplul 1. 16. Generaţi matricea
a) ;
0000
3000
0200
0010
A
b) tridiagonală .
6800
3570
0246
0013
B
eye(n): generează o matrice unitate cu n linii şi n coloane;
eye(m,n): generează o matrice unitate cu m linii şi n coloane;
ones(n): generează o matrice de unu-ri cu n linii şi n coloane;
ones(m,n): generează o matrice de unu-ri cu m linii şi n coloane;
rand(m,n): generează o matrice ale cărei elemente sunt numere
aleatoare, cu distribuiţie uniformă în intervalul 1,0 ;
randn(m,n): generează o matrice ale cărei elemente sunt numere
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
23
aleatoare, cu distribuiţie normală, de medie 0 şi
varianţă 1;
tril(A): extrage partea inferior triunghiulară a matricei A;
triu(A): extrage partea superior triunghiulară a matricei A;
Exemplul 1. 17. Să se extragă partea inferior şi respectiv superior triunghiulară a
matricei:
.
7987
8654
5321
A
vander(v): generează o matrice Vandermonde pe baza
elementelor din vectorul v;
Exemplul 1. 18. Generaţi matricea Vandermonde:
1525125625
141664256
1392781
124816
11111
A .
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
24
zeros(n): generează o matrice nulă cu n linii şi n coloane;
zeros(m,n): generează o matrice nulă cu m linii şi n coloane.
Observaţia 1. 4.
(i) Transformarea numerelor r distribuite uniform pe intervalul 1,0 în numerele x
distribuite uniform pe intervalul ba, se realizează prin intermediul relaţiei
rabax .
(ii) Transformarea numerelor r distribuite normal N 1,0 în numerele x distribuite
normal 2,N se realizează prin intermediul relaţiei
rx .
Vom prezenta câteva funcţii din Matlab 7.9 utilizate în calcule cu tablouri.
dot(x,y): calculează produsul scalar al vectorilor x şi y ;
cross(x,y): calculează produsul vectorial al vectorilor x şi y ;
Exemplul 1. 19. Calculaţi produsul vectorial al vectorilor
kjiu 23 , kjv 4 .
length(x): returnează lungimea vectorului x;
[m,n] = size(X): returnează dimensiunea m x n a matricei X;
ndims(A) determină numărul de dimensiuni ale matricei A;
funcţia este echivalentă cu length(size(A));
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
25
isvector(v) returnează o valoare egală cu 1 dacă v este un vector şi
0 în caz contrar;
isscalar(v) verifică dacă argumentul său v este un scalar sau nu;
isreal(v) testează dacă argumentul său v este real sau nu;
isfinite(v) verifică dacă argumentul său v este finit sau nu;
isinf(v) verifică dacă argumentul său v este infinit sau nu;
isempty(v) verifică dacă argumentul său v este vid sau nu;
all(x) testează dacă toate componentele unui vector sau
matrice x sunt nenule;
all(x op_ relaţional a) testează dacă toate componetele vectorului x
îndeplinesc condiţia dată ca argument în raport cu ;a
all(A op_ relaţional a) testează dacă toate coloanele matricei A conţin
elemente care îndeplinesc condiţia indicată ca
argument în raport cu ;a
any(x) testează dacă vreun element al vectorului sau matricei
x este nenul;
any(x op_ relaţional a) testează dacă vreo componentă a vectorului x
îndeplinşte condiţia dată ca argument în raport cu ;a
any(A op_ relaţional a) testează dacă vreo coloană a matricei A conţine
elemente care îndeplinesc condiţia indicată ca
argument în raport cu ;a
u=find(x op_ relaţional a): returnează în u indicii elementelor din vectorul x, care
respectă condiţia precizată ca argument, în raport cu
;a
[u,v]=find(X op_ rel a): returnează indicele liniei (vectorul u) şi al coloanei
(vectorul v) matricei argument ,X care conţin
elementele care respectă condiţia precizată ca
argument, în raport cu ;a
Exemplul 1. 20. Să se determine indicii elementelor din vectorul
186176.0 x ,
a căror valoare este egală cu 1 .
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
26
sort(x): sortează în ordine crescătoare componentele
vectorului x;
[y,I]= sort(x): returnează în vectorul y elementele sortate în ordine
crescătoare ale vectorului x iar în I, indicii elementelor
sortate;
sort(x,’descend’): Sortează în ordine descrescătoare elementele
vectorului x;
Exemplul 1. 21. Să se sorteze în ordine descrescătoare elementele vectorului
7820176.0 x ,
cu precizarea indicelui fiecărui element.
Observaţia 1. 5. Specific pentru Matlab 7.9 este opţiunea descend a funcţiei sort;
pentru versiunile precedente lui Matlab 7.0, sortarea poate fi realizată numai în ordine
crescătoare, neeexistând această opţiune.
min(v): determină cel mai mic element al vectorului v;
min(A) : determină cel mai mic element de pe fiecare coloană a
matricei A;
max(v) : determină cel mai mare element al vectorului v;
max(A) : determină cel mai mare element de pe fiecare coloană a
matricei A;
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
27
sum(v): calculează suma elementelor vectorului v;
sum(A): calculează suma elementelor de pe fiecare coloană a
matricei A;
prod(v): calculează produsul elementelor vectorului v;
prod(A): obţine produsul elementelor de pe fiecare coloană a
matricei A;
mean(x): calculează media aritmetică a componentelor vectorului x;
mean(A): calculează media aritmetică a elementelor de pe fiecare
coloană a matricei A;
std(x): calculează deviaţia standard a setului de date conţinute în
vectorul x;
std(A): calculează deviaţia standard a elementelor de pe fiecare
coloană a matricei A;
corrcoef(x,y): furnizează coeficientul de corelaţie dintre vectorii x şi y.
Exemplul 1. 22. Se consideră datele referitoare la înălţime (în inches) şi vârsta (în
ani) pentru 19 indivizi (N.H. Bingham, John M. Fry, 2010) :
x(vârsta)=(14, 13, 13, 14, 14, 12, 12, 15, 13, 12, 11, 14, 12, 15, 16, 12, 15, 11, 15),
y(înălţime)=(69, 56.5, 65.3, 62.8, 63.5, 57.3, 59.8, 62.5, 62.5, 59.0, 51.3, 64.3, 56.3, 66.5,
72.0, 64.8, 67.0, 57.5, 66.5).
a) Calculaţi mediile aritmerice corespunzătoare celor două serii de valori observate, adică
., yx
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
28
b) Determinaţi varianţa (dispersia) a x- valorilor observate, adică media lui .2
xx
c) Aflaţi covarianţa dintre x şi y, definită ca media lui .yyxx
d) Determinaţi coeficientul de corelaţie r, ce este măsura numerică a puterii de asociere
dintre variabila independentă x şi variabila dependentă y.
Observaţia 1. 6.
(i) Corelaţia exprima gradul de potrivire al relaţiei liniare. Dreapta de regresie are
ecuaţia bxay ˆ , unde:
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
29
x
y
S
Srb , xS şi yS fiind deviaţiile standard (deviaţia standard este rădăcina
pătrată din valoarea varianţei) corespunzătoare valorilor lui x şi respectiv y;
xbya
y constituie valoarea estimată a lui y şi reprezintă valoarea lui y obţinută folosind
dreapta de regresie.
(ii) Coeficientul de corelaţie nu depinde de unităţile de măsură ale caracteristicilor.
1.3. Definirea funcţiilor în Matlab
Ca orice mediu de programare, Matlab 7.9 lucrează fie în modul linie de comandă, fie
cu programe conţinute în fişiere.
O funcţie poate fi definită în Matlab 7.9 trei moduri:
A. modul clasic (întâlnit şi în versiunile precedente), adică într-un fişier de tip
function; acesta poate fi construit selectând: File New Function M-file.
Sintaxa necesară definirii unei funcţii într-un fişier M-file este:
function [lista argumentelor returnate de funcţie]=nume_funcţie(lista
argumentelor de intrare)
corpul funcţiei;
end
B. în linia de comandă (facilitate care nu este posibilă la variantele precedente lui
Matlab 7.0), folosind:
a) @ pentru a crea funcţii anonime;
Sintaxa de definiţie a unei funcţii anonime, în linia de comandă, în Matlab
7.9 este:
nume_funcţie=@(var1,…,varn) expresie_funcţie
b) funcţii inline.
Structura unei funcţii inline este:
nume_funcţie=inline(‘expresie_funcţie’,’var1,…,varn’)
Funcţiile definite în linia de comandă sunt echivalente celor definite într-un M-file.
Numele funcţiei definită într-un fişier de tip function coincide cu numele acelui M-file.
Exemplul 1. 23. Definiţi în linia de comandă a Matlab-ului (atât ca funcţie anonimă
cât şi ca funcţie inline) şi respectiv ca M- function, funcţia
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
30
xxxf2
3sin22sin
şi apoi calculaţi f .
Cazul I) Funcţia este considerată funcţie anonimă.
Cazul II) Funcţia este funcţie inline.
Cazul III) Funcţia este definită într-un fişier de tip function (intitulat f.m).
Funcțiile definite pe ramuri
22
11
condexpr
condexprxf
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
31
pot fi reprezentate în Matlab 7.9 astfel:
2211 condexprcondexpr .
Matlab 7.9 dispune de funcții predefinite, care realizează următoarele operații cu
funcții matematice:
compose(f(x),g(x)): compunerea funcțiilor f(x) și g(x);
Exemplul 1. 24. Se consideră aplicațiile liniare:
21,: xxff
.1,: 2xxfg
Să calculeze gf și .fg
inverse(f(x)): returnează inversa funcției f(x).
1.4. Aplicaţii propuse
1. Determinaţi numărul complex z cunoscând partea sa reală şi partea imaginară:
.5Im
2Re
z
z
2. Să se calculeze expresiile următoare:
a) 33 25172517
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
32
b) 53
74
53
74
c) 37266 e35log
36
7log7log A
d) 33221 xxxM , pentru 4x
e) 32 111 zzzN , pentru iz
f)
33
1
1
1
1
i
i
i
i
g)
35log2 3
5
3
5
ln 2 3 sin5
2log 1 cos log arccos
ln( ) 1 2
ee
tge
h) 2
13
3
2
x
xxF , pentru 1x
i) 53log xB , pentru 7x
j) xxxx cossin
1
)ctgtg2( , pentru 5
x ;
k) xxxxC 7cos5cos3coscos 4444 , pentru .8
x
3. Calculaţi:
a) 324221
b)
4
3loglog
3
1
2
1
c) 777
d) 331 i
e) 39.320coslg
f) 7362ctg
4. Determinaţi valoarea expresiilor următoare:
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
33
a) 1
2arcsin
22
x
xu
, pentru 2.2x
b) xee
xxxxx sin2
cossin
, pentru 6.1x
c) 2
2
1
1
zz
zz
, pentru iz
5. Verificaţi dacă:
a) 3x este soluţie a ecuaţiei xxxx 6543 ;
b) 331 347347 x este soluţie a ecuaţiei 01433 xx ;
c) iu 11 este soluţie a ecuaţiei 03212 ixix ;
d) 8
71
x şi
22
212
x sunt soluţii ale ecuaţiei 0sin
7
3cos xx .
6. Să se efectueze următoarele operaţii:
a) 22 1111110000110000010
b) 66 1442:12201200 .
7. Determinaţi câţi radiani reprezintă unghiul de 547157 .
8. Să se genereze:
a) o matrice identitate 77x ;
b) o matricea nulă 1010x ;
c) o matrice aleatoare 1110x cu elemente distribuite uniform şi normal.
9. Să se sorteze în ordine crescătoare elementele vectorului
7820176.0 x ,
cu precizarea indicelui fiecărui element.
10. Se consideră matricea
104
320
011
C .
Calculaţi:
a) ttt CC ,
b) 323 I142 CCC .
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
34
11. Se consideră matricele:
2
0
1
a ,
83
51
90
B ,
111
107
014
C , 720 d .
Verificaţi care dintre următoarele produse au sens şi în acest caz efectuaţi-le: Ba , ad , da ,
dB , Bd ,CB , BC , dC , Cd , aC , Ca , 2C , dBC , dCB , adC , adBC , adCa , 2a .
12. Găsiţi matricea A când:
a)
11
122I
1A ;
b)
22
01
12
011
A .
13. Să se formeze matricea
33
22
11
A pe baza vectorilor
3
2
1
u şi
3
2
1
v .
14. Să se determine indicii elementelor din matricea
33
31X
a căror valoare este mai mare sau egală cu 3 .
15. Fie matricea
02376.05
32431A .
Să se extragă din matricea A submatricea
2376.0
43B .
16. Se consideră vectorul
x=[3.24 2 5 3 4.5 7 6.67 8.95 4.34 2.12],
ce conţine rezultatele obţinute prin N=10 determinări experimentale. Să se calculeze
abaterea medie pătratică a acestor rezultate, folosind formula
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
35
1
2
11
2
NN
xxN
sigma
N
ii
N
ii
.
17. Calculaţi 5.2,1f cu ajutorul unei funcţii Matlab 7.9, definită în linia de comandă,
pentru:
22, yxyxf .
18. Verificaţi cu ajutorului Matlab-ului dacă:
.0
1
1
1
bac
cab
cba
19. Testaţi dacă vectorii următori sunt coplanari:
kjia 52 , kjib 2 , kjic 194 .
REZOLVAREA UNOR PROBLEME DE MATEMATICĂ APLICATĂ ÎN INGINERIE CU MATLAB
36
1.5. Bibliografie
1. N.H. Bingham, John M. Fry, Regression. Linear Models in Statistics, Springer, New
York, 2010.
2. D.G. Duffy, Advanced Engineering Mathematics with Matlab, Chapman & Hall/CRC,
2003.
3. M. Ghinea, V. Fireţeanu, Matlab: Calcul numeric- Grafică-Aplicaţii, ed. Teora, Bucureşti,
1998.
4. I. Iatan, Îndrumător de laborator în Matlab 7.0, Ed. Conspress, Bucureşti, 2009.
5. I. Iatan, B. Sebacher, Aplicaţii de laborator în Mathematica şi Mathcad, Ed. Conspress,
Bucureşti, 2014.
6. A. Jeffrey, Advanced Engineering Mathematics, Harcourt/Academic Press, 2002.
7. N. Martaj, M. Mokhtari, Matlab R2009, Simulink et Stateflow pour Ingénieurs,
Chercheurs et Etudiants, Springer, 2010.
8. C. Moler, Experiments with MATLAB, http://www.mathworks.com/moler, 2011.
9. A. Quarteroni, F. Saleri, Scientific Computing with Matlab and Octave, Springer, 2006.
10. D. Xue, Y.Q. Chen, Solving Applied Mathematical Problems with Matlab, Taylor &
Francis Group, 2009.