Sunteți pe pagina 1din 298

CAPITOLUL I

INTRODUCERE N MATLAB
MATLAB este un mediu de programare i calcul tehnic ce nsumeaz
calculul, vizualizarea i programarea ntr-un mediu compact, unde problemele i
soluiile acestora sunt exprimate folosind notaii matematice familiare. Utilizarea
acestui mediu este frecvent n domeniile:
Matematic i calcule matematice;
Dezvoltarea algoritmilor de calcul i programare;
Modelare, simulare i prototipare;
Analiza, studiul i vizualizarea datelor;
Diagrame i reprezentri grafice n inginerie;
Dezvoltarea soft-urilor aplicative folosind metode de creare a
interfeelor grafice interactive(GUI).
MATLAB este un sistem interactiv care folosete, ca element definitoriu,
matricea, numele acestuia fiind dat de acronimul format din cuvintele MATrix i
LABoratory. MATLAB ofer faciliti multiple prin familiile de aplicaii specifice
numite toolbox-uri. Toolbox-urile sunt colecii de funcii MATLAB (fiiere .m)
care extind utilizarea mediului MATLAB, la rezolvarea unor clase de probleme
specifice. Toolbox-urile sunt utilizate intensiv n domeniile: procesarea sunetelor,
sisteme de control, reele neuronale, simulare. Mediul MATLAB se compune din
cinci pri principale:
Mediul de dezvoltare-un set de faciliti i instrumente matematice
(interfee grafice) cu ajutorul crora se pot manevra fiierele i funciile
MATLAB. Aceste instrumente includ: desktop-ul MATLAB, Command
Window (Fereastra de Comand), un sistem de urmrire a comenzilor
precum i browser-e pentru afiarea instruciunilor de Help (ajutor),
spaiului de lucru;
Biblioteca de funcii MATLAB-un set de funcii i algoritmi de calcul
(pornind de la cele mai simple, pentru calculul funciilor trigonometrice, de
exemplu, i pn la cele mai complicate, cum ar fi cele pentru calculul
transformatei Fourier);
Limbajul MATLAB-un limbaj de nivel nalt, bazat pe manevrarea
matricilor, cu control asupra declaraiilor, funciilor, structurilor de date,
intrrilor/ieirilor i cu faciliti de programare orientat pe obiecte.
Manevrarea graficelor - acesta reprezint partea grafic a sistemului
MATLAB. Acest sistem include comenzi pentru vizualizarea datelor bi- i
MATLAB n ingineria mecanic
tridimensionale, de procesare a imaginilor, animaiilor i reprezentrilor
grafice n general;
Interfaa aplicativ MATLAB (API)- este o bibliotec de instrumente i
funcii specifice, care permite dezvoltarea programelor n limbaj C i
Fortran, limbaje care interacioneaz cu MATLAB. Aceast bibliotec
include faciliti pentru utilizarea i apelarea unor rutine i subrutine pentru
MATLAB (dynamic linking), folosind MATLAB ca un mediu de calcul ct
i pentru citirea / scrierea fiierelor .mat.
NOIUNI ELEMENTARE
Programul se lanseaz, n execuie, din mediul Windows, prin selecia
pictogramei MATLAB (dublu-clic asupra icon-ului Matlab), sau, din afara
mediului Windows (de exemplu, DOS), direct cu o comand de forma:
win c:\Matlab\bin\matlab
care, acceseaz fiierul executabil matlab.exe ce se gsete n calea
C:\MATLAB\BIN din unitatea c:\ ( presupunnd ca c:\ reprezint unitatea de pe
hard-ul sistemului de calcul, unde se gsete instalat MATLAB).
Se vor prezenta, n continuare, noiuni generale ale mediului de programare
MATLAB 5.2, cu referiri la versiunea MATLAB 6.0.0.88 Release 12.
FERESTRELE DE LUCRU
MATLAB lucreaz cu dou tipuri de ferestre: o fereastr de comenzi
(Command Window) i o fereastr pentru reprezentri grafice (Figure). Ambele
tipuri de ferestre dispun de meniuri si submeniuri independente, cu observaia ca,
n fereastra Figure, se reprezint grafic comanda din Command Window.
FEREASTRA DE COMENZI (Command Window)
Fereastra de comenzi este prezentat n imaginea alturat. Meniurile din
bara superioar sunt
accesibile prin tastarea
simultan a tastei [Alt]
i a literei subliniate
(de exemplu pentru
accesarea meniului
4
MATLAB n ingineria mecanic
File se tasteaz concomitent [Alt]+F- adic tasta [Alt] i tasta [F])sau prin clic cu
mouse ul asupra comenzii dorite.
Fiecare comand din meniul principal furnizeaz un submeniu specific, n
cadrul acestuia selecia putndu-se face fie cu mouse-ul, fie cu ajutorul sgeilor
prin deplasarea zonei active, fie prin tastarea literei marcate special n fiecare
subcomand a respectivului meniu.
GESTIONAREA FIIERELOR
Selectnd
comanda File din meniul
principal, prin [Alt] + F,
sau prin poziionarea
mouse-ului n dreptul
cuvntului File, se
obine un submeniu ca
cel prezentat n figura
alturat.
Meniul File
conine o suma de
submeniuri, dintre care
prezentm:
New provoac
deschiderea unui
sub-submeniu, care are opiunile: M-file, Figure i Model. Alegerea
opiunii M-file va deschide o fereastr de editare a unui fiier, cu extensia
.m, n timp ce opiunea Figure deschide o fereastr grafic.
O pen deschide o fereastr de dialog care permite selectarea i
deschiderea unui fiier.
Open Selected analizeaz fiierele pentru selectare i deschide pe cel
selectat.
R un Script- permite rularea unui fiier script care are definit calea
(Path)
Save Workspace As deschide o fereastr de dialog pentru a salva datele
din spaiul de lucru ntr-un fiier, al crui nume trebuie precizat.
Set Path - deschide o caset de dialog care permite setarea cii de acces
la un anumit fiier de pe hard- disc sau de pe unitile mobile :floppy disc
sau CD ROM.
Preferences- permite configurarea formatului numeric, alegerea tipului
caracterelor, mrimea caracterelor etc.;
5
MATLAB n ingineria mecanic
Print Setup i Print- Comenzile de tiprire a documentului; Print i
Print Setup, apar n acelai meniu de gestionare a fiierelor. Comanda
Print permite tiprirea documentului, iar Print Setup configureaz
pagina, marginile, tipul de imprimant etc.
Exit MATLAB- comanda al crei efect este prsirea aplicaiei. Comanda
de prsire a aplicaiei (echivalent opiunii Exit MATLAB din meniul File)
poate fi validat i prin apsarea simultan a tastelor [Ctrl]+ Q.
EDITAREA PROGRAMELOR
Selectnd comanda Edit din meniul principal al Command Window, apare
submeniul prezentat n figura alturat.
Modul de lucru n acest meniu
este intuitiv, identic meniului Edit
Windows sau oricrui editor de texte care
lucreaz sub Windows: dup selectarea
unui text, din mediul MATLAB sau din
alt document, acesta se poate prelucra
folosind opiunile Cut, Copy i Paste.
tergerea sesiunii de lucru se realizez cu
comanda Clear Session (efectul acestei
comenzi constituindu-se n curirea
complet a spaiului de lucru).
ALEGEREA OPIUNILOR

Selectnd comanda Options din bara de
meniuri, se afieaz caseta de submeniuri
prezentat n figura alturat. Submeniurile sunt:
N umeric Format este un submeniu care
permite selectarea unuia dintre formatele
de afiare: Short (5 cifre) / Long (15
cifre) / Hex (hexazecimal) / Bank / Plus
(+, - i blanc) / Short e (5 cifre +
exponeniala) / Long e (15 cifre +
exponeniala) / Rational (fracii), precum
i a distanelor dintre rndurile succesive: Loose (distanat)/ Compact.
6
MATLAB n ingineria mecanic
Turn Echo este un comutator (on/off) care permite afiarea liniilor
programului MATLAB, n timpul rulrii acestuia.
Enable Background Process este un comutator (on/off) care permite
rularea programelor MATLAB, n background, n timp ce calculatorul poate
efectua i alte operaii.
Command Window Font- deschide o fereastr de dialog pentru
selectarea fonturilor (tip, mrime i culoare) care se vor utiliza n fereastra de
comand curent a sesiunii de lucru MATLAB.
U icontrols Font - permite setarea fonturilor (tip, mrime i culoare) pentru
interfee grafice, butoane etc.
Editor Preference - selecteaz editorul de texte cu care se vor scrie
programele MATLAB, implicit este NOTEPAD.EXE.
SELECTAREA FERESTRELOR CURENTE DE LUCRU
Comanda Windows, din bara de meniuri, afieaz submeniul prezentat n
figura alturat.
Trecerea dintr-o
fereastr grafic, sau de
comenzi, ntr-o alt
fereastr se realizeaz prin
selectarea comenzii
Window din meniul
principal, urmat de
selectarea uneia dintre
ferestrele grafice deschise
(ex: Figure No. 1, Figure
No. 2,) sau a celei de
comenzi (MATLAB
Command Windows).
DOCUMENTAIA DE AJUTOR
Comanda Help din meniul principal afieaz submeniul prezentat n figura
alturat. Submeniurile acestui meniu sunt:
Table of Contents. Afieaz o list senzitiv cu toi subdirectorii din corpul
principal al MATLAB. La plasarea sgeii mouse-ului pe unul dintre
subdirectorii listai, acesta se transform ntr-o mn care permite, prin
selectare, afiarea help-ului grupei de funcii respective.
7
MATLAB n ingineria mecanic
Index furnizeaz o list cu
subdirectorii principali ai
MATLAB-ului. Selectarea
subdirectorului dorit afieaz
coninutul acestuia i apoi
informaii despre un anumit fiier
sau funcie.
Help Selected afieaz
documentaia Help pentru
funcia MATLAB ce a fost selectat cu mouse-ul.
About-afieaz versiunea, licena etc.
FEREASTRA DE REPREZENTRI GRAFICE N MATLAB (Figure)
Fereastra grafic este o form elevat de reprezentare a graficelor. De
menionat c pot exista mai multe ferestre grafice deschise n acelai timp, una
fiind curent, dar o singur fereastr de comenzi.
GESTIONAREA FERESTRELOR GRAFICE
Din meniul File- submeniul
New- opiunea Figure se deschide o
fereastr, cu titlul Figure 1, avnd o
configuraie apropiat de cea a
Command Window, cu bar de meniuri
: File, Edit, Windows, Help, ale cror
opiuni sunt similare celor ale ferestrei
de comenzi.
EDITAREA GRAFICELOR
Selectnd meniul Edit din bara de meniuri a ferestrei grafice, sunt posibile
cteva opiuni pentru modificarea reprezentrilor grafice:
C opy- copiaz figura n Clipboard;
Copy Options- copiaz figura curent n format meta sau bitmap(vezi
formatele fiierelor grafice n Windows), existnd i posibilitatea alegerii
8
MATLAB n ingineria mecanic
unei culori pentru fundalul (background) figurii (inversarea ntre alb i
negru; implicit este negru);
Clear Figure terge figura curent, fr s nchid fereastra grafic.
TIPURI DE DATE UTILIZATE N MATLAB
DATE EXEMPLU DESCRIERE
single 3*10^38 Reele numerice cu simpl precizie. Simpla precizie necesit
spaiu de stocare mai mic dect dubla precizie. Acest tip de
date nu poate fi utilizat n operaii matematice
double 3*10^300
5+6*i
Reele numerice cu dubl precizie. Este cel mai util;izat tip
de variabile n MATLAB.
sparse speye(5) Matrice compact bi-dimensional cu dubl precizie.
Matricile compacte stocheaz doar elementele nenule,
necesitnd mai puin memorie.
int8, uint8,
int16, uint16,
int32, uint32
uint8(magic(5)) Reele de ntregi cu i fr semn cu lungimea de 8, 16, 32 de
bii. Permit manevrarea cantitilor ntregi ntr-un mod
eficient. Aceste date nu pot fi utilizate n operaii
matematice.
char Pachet de
programe
Reea de caractere(fiecare caracter are 16 bii). Aceste reele
sunt numite, n general, iruri de caractere.
cell {25 Pachet eye(2)} Reea celular. Elementele celulelor pot conine alte
reele.Celulele pot colecta date i informaii de factur i
mrime diferit.
structure A.ziua=12;
A.culoare=rou;
A.matrice=magic(3)
;
Reea structural. Reelele structurii se numesc
cmpuri.Cmpurile pot conine alte reele. Ca i celulele,
structurile pot colecta date i informaii de factur i
mrime diferit.
user class inline(sin(x)) Classa MATLAB. Aceast classa este creat de utilizator,
folosind funcii MATLAB.
java class java.awt.Frame Classa Java. Se pot utiliza appleturi Java deja existente sau
se pot crea appleturi proprii.
Function
handle
@humps Manipulator al funciei MATLAB.
FORMATUL NUMERELOR. OPERATORI I EXPRESII ARITMETICE
MATLAB utilizeaz, ca orice limbaj de programare, expresii matematice,
dar, spre deosebire de majoritatea limbajelor de programare, aceste expresii, n
MATLAB, sunt matrici. Expresiile MATLAB sunt de urmtoarele tipuri:
Variabile
Numere
Operatori
Funcii
9
MATLAB n ingineria mecanic
VARIABILE
Pentru variabile, MATLAB nu solicit un, anume, tip de declarare a
acestora, nici o configurare dimensional. n MATLAB, variabilele se creeaz
automat prin declararea numelui acesteia, fiindu-i alocat un spaiu de stocare
corespunztor. De exemplu, prin atribuirea:
fun=123;
variabila cu numele fun are valoarea 123. Aceast valoare va fi utilizat de
MATLAB, pe tot parcursul sesiunii de lucru, dac aceasta nu este schimbat printr-
o nou atribuire. Dac, o nou variabil, cu acelai nume, este declarat, n linia de
comand, sau ntr-un fiier-program, atunci vechea valoare este nlocuit cu noua
valoare. Variabilele sunt matrici. De exemplu, fun, reprezint o matrice cu o linie
i o coloan. Numele variabilei trebuie sa nceap, obligatoriu cu o liter, urmat de
oricte litere sau numere, dar MATLAB reine doar primele 31 de caractere.
ntruct, MATLAB este case sensitive, acesta face distincie ntre literele
majuscule i literele minuscule. De exemplu, variabila fun, este diferit de oricare
dintre variabilele Fun, fUn, fuN, FUn, FuN, fUN sau FUN.
Expresiile introduse de la tastatur, de ctre utilizator, sunt interpretate i
evaluate secvenial, la accesarea tastei [Enter]. Expresiile pot fi: iruri de caractere
(care reprezint, de cele mai multe ori, numele unui fiier script sau al unui fiier
funcie), instruciuni, funcii dedicate (specifice limbajului MATLAB).
Instruciunile MATLAB sunt, de cele mai multe ori, de forma general:
variabila=expresie [Enter]
Atenie: simbolul , nu trebuie introdus de ctre utilizator,
simbolul este afisat automat de MATLAB, n Command Window,
acesta fiind prompterul din fereastra de lucru, Workspace.
n forma general, a instruciunii:
variabila - reprezint numele expresiei, si poate fi o niruire de
caractere alfa-numerice, exceptnd caracterele speciale (^,&,*,(,),+,/
etc.) cu condiia ca primul caracter sa nu fie o cifr;
= reprezint semnul de atribuire (egalitatea dintre dou
expresii se reprezint, n MATLAB, cu semnul egal dublu : = = );
expresie reprezint instruciunea propriu- zis, adic aceea
care urmeaz a fi evaluat, dup accesarea tastei [Enter]. Valoarea
expresiei va fi atribuit automat variabilei , aceasta poate fi
folosit n expresii i funcii, fiind memorat de MATLAB.
De asemenea, instruciunile pot avea i urmtoarea form, simplificat:
expresie [Enter]
10
MATLAB n ingineria mecanic
ceea ce permite execuia imediat a expresiei, la accesarea tastei [Enter],
MATLAB atribuind, automat, numele ans valorii acestei expresii , ca n
exemplul urmtor:
1/4 [Enter]
returneaz rezultatul:
ans = 0.2500
Atenie MATLAB recunoate sistemul britanic de scriere a numerelor
( fraciile zecimale se exprim folosind ca separator caracterul punct . i
nu caracterul virgul ,, ca n sistemul european, continental) !
Expresiile sunt compuse din operatori sau caractere speciale, din funcii i
cifre, respectiv expresii logice. Orice instruciune, scris n cmpul de lucru, este n
mod normal ncheiat cu accesarea tastei [Enter]. Dac ultimul caracter, al
instruciunii, este caracterul punct-virgul ; , atunci instruciunea este executat,
valoarea acesteia este stocat n memoria MATLAB, dar afiarea rezultatului este
suprimat (excepie cazul n care instruciunea genereaz o eroare). Utilizarea
acestui caracter la sfritul unei instruciuni n fiiere- .m este necesar n
situaiile n care nu se dorete afiarea datelor intermediare. De exemplu, matricea
1
1
1
]
1

9 8 7
6 5 4
3 2 1
A
, se introduce de la tastatur folosind urmtoarea convenie de
scriere:
A=[1 2 3; 4 5 6; 7 8 9]
Accesarea tastei [Enter], va avea ca rezultat afiarea matricei A:
A =
1 2 3
4 5 6
7 8 9
Dac, aceeai matrice se introduce, folosind caracterul punct i virgul ; ,
rezultatul nu va fi afiat. Tastarea numelui unei variabile urmat de Enter
afieaz valoarea acesteia, dac aceasta a fost, n prealabil, executat sau introdus
de la tastatur. De exemplu, daca matricea A a fost introdus in spaiul de lucru
MATLAB, i este dorit afiarea ei, pentru aceasta este nevoie doar de introducerea
numelui acesteia (adic A):
A [Enter]
11
MATLAB n ingineria mecanic
A =
1 2 3
4 5 6
7 8 9
Dac expresia, ce urmeaz a fi evaluat, este supra-dimensionat, i nu
ncape pe o singur linie, se utilizeaz semnul (trei puncte), urmat de
[Enter], pentru a preciza c instruciunea continu pe linia urmtoare. Astfel
instruciunea:
S=1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+
19+20;
evalueaz suma celor 20 de numere i valoarea acesteia este atribuit variabilei S.
Spaiile dintre semnele =, +, - i numere sunt opionale, dar caracterul ,
este obligatoriu a fi introdus, ntotdeauna, dup un operator, dup o virgul sau
dup o parantez, altfel se afieaz un mesaj de eroare. De exemplu, dac ntr-o
instruciune simpl, caracterul ( trei puncte) se introduce, nu imediat dup
operatori, caractere separatoare, paranteze (ca mai jos):
S=1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18
atunci se afieaz un mesaj de eroare :
??? S=1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18
|
Error: Missing operator, comma, or semicolon.
VARIABILE SPECIALE I CONSTANTE
ans - ultimul rspuns
eps - precizia relativ, n virgul mobil
realmax - cel mai mare numr pozitiv, n virgul mobil
realmin - cel mai mic numr pozitiv, n virgul mobil
pi - 3.1415926535897....
i, j - unitatea imaginar ( 1 )
inf - infinit
NaN - Not-a-Number (nu este numr)
isnan - valoarea de adevr pentru NaN
12
MATLAB n ingineria mecanic
isinf - valoarea de adevr pentru infinit
isfinite - valoarea de adevr pentru valori finite
why - rspuns succint
NUMERE
Formatul numerelor utilizabile n MATLAB este cel convenional cu
punct zecimal (scrierea britanic). Astfel, fracia zecimal 1714 , 0
35
6
, va fi
recunos-
cut ca atare, n expresiile MATLAB, dac aceasta este scris:
0.1714
Formatul numerelor se declar n linia de comand, sau din meniul
FilePreferencesCommand WindowNumeric format. Declararea
formatului numerelor n linia de comand, din fereastra de lucru, se realizeaz
folosind comanda format urmat de tipul formatului numerelor (conform
tabelului):
De exemplu, vectorul linie
1
]
1

2345678901 2345678901 , 1
3
5
a
, n care 090552 1.77245385 , poate fi afiat n diferite formate. Pentru
aceasta, se va introduce, n linia de comand, mai nti, vectorul a:
FORMATUL
NUMERELOR
COMANDA DESCRIEREA FORMATULUI
short format short -formatul scurt cu 5 cifre semnificative, cu aproximare la
ultima cifr zecimal
short e format short e -formatul scurt n 5 cifre semnificative, aproximat prin
adaos sau lips
short g format short g -formatul scurt cu 5 cifre semnificative, cu cea mai bun
aproximare
long format long -formatul lung cu 15 cifre semnificative
long e format long e -formatul lung cu 15 cifre semnificative aproximat prin
adaos sau lips
long g format long g -formatul lung cu 15 cifre semnificative, cu cea mai bun
aproximare
bank format bank -formatul cu dou cifre zecimale semnificative, aproximat
prin adaos, sau prin lips
rat format rat -formatul raional (raport)
+ format + -afieaz semnul numrului
hex format hex -formatul hexazecimal
13
MATLAB n ingineria mecanic
a=[5/3,1.23456789012345678901,sqrt(pi)];
apoi, se introduc instruciunile pentru schimbarea afirii numerelor (Atenie!
Dup fiecare instruciune de schimbare a formatului, se introduce, n linia de
comand, fnumele variabilei care se dorete a fi afiat, n formatul respectiv):
format short
a =
1.6667 1.2346 1.7725
format short e
a =
1.6667e+000 1.2346e+000 1.7725e+000
format short g
a =
1.6667 1.2346 1.7725
format long
a =
1.66666666666667 1.23456789012346 1.77245385090552
format long e
a =
1.666666666666667e+000 1.234567890123457e+000 1.772453850905516e+000
format long g
a =
1.66666666666667 1.23456789012346 1.77245385090552
format bank
a =
1.67 1.23 1.77
format rat
a =
5/3 100/81 296/167
format +
a =
+++
14
MATLAB n ingineria mecanic
O mare atenie trebuie acordat scrierii fraciilor zecimale. Dac aceeai
fracie zecimal este scris n linia de comand cu caracterul virgul (,), atunci se
va afia un rezultat dublu. De exemplu, dac se introduce numarul 0,1714, i se
dorete afiarea acestuia n format scurt, se vor folosi urmtoarele instruciuni:
format short
0.1714
ans =
0.1714
n timp ce, dac, acelai numr, se introduce n scriere est-european (cu
caracterul virgul, pentru separarea fraciei zecimale), se vor afia dou
rspunsuri:
0,1714
ans =
0
ans =
1714
De observat c sunt afiate dou variabile, cu acelai nume, ans, dar cu
valori diferite. n acest caz MATLAB va utiliza n evaluri, ulterioare acestei
secvene, ultima valoare a variabilei ans (adic 1714).
Numerele complexe, scrise n forma algebric, sunt acceptate de
MATLAB, dac se folosete simbolul i sau j, pentru valoarea 1 . Astfel,
numerele complexe: i 2 a ,
j 2 b
, 7 i 3 c + , i
3
2
3 d + , 2 i 3 e + , se
pot introduce, de la tastatur, astfel:
a=2i
a =
0 + 2.0000i
a=2*i
a =
0 + 2.0000i
b= 2j
b =
0 + 2.0000i
b= 2*j
15
MATLAB n ingineria mecanic
b =
0 + 2.0000i
c=3+sqrt(7)*i
c =
3.0000 + 2.6458i
d=3+2/3i
d =
3.0000 - 0.6667i
e=3+sqrt(2)*i
e =
3.0000 + 1.4142i
e=3+2^(1/2)*i
e =
3.0000 + 1.4142i
Dac numerele complexe necesit folosirea funciilor speciale (de exemplu
pentru calculul rdcinii ptrate a numrului x, se folosete, uneori, funcia
specific MATLAB: x =sqrt(x), n timp ce, pentru calculul radicalului de
ordinul trei se poate folosi calculul cu puteri raionale:
3
3 =3^(1/3)) sau a
parantezelor, pentru scrierea acestora, atunci este necesar folosirea operatorului
aritmetic de nmulire (*), pentru evidenierea prii imaginare a numrului
complex, n caz contrar, va fi afiat un mesaj de eroare.
De exemplu, numerele 7 i 3 c + , 2 i 3 e + , i ) 3 2 ( 1 f + +
scrise fr operatorul *, afieaz urmtoarele mesaje de eroare:
c=3+sqrt(7)i
??? a=3+sqrt(7)i
|
Error: Missing operator, comma, or semicolon.
Eroare:Lipsete operatorul, virgula, sau paranteza dreapt
e=3+2^(1/2)i
??? a=3+2^(1/2)i
|
Error: Missing operator, comma, or semicolon.
f=1+(2+sqrt(3))i
16
MATLAB n ingineria mecanic
??? f=1+(2+sqrt(3))i
|
Error: Missing operator, comma, or semicolon.
Numrul 2 3 + este un numr complex, pentru care MATLAB
afieaz valoarea explicit: -3.0000 + 1.4142i
Numerele utilizate n MATLAB trebuie sa fie cuprinse ntre
308
10

i
308
10
.
OPERATORI ARITMETICI
MATLAB utilizeaz urmtorii operatori aritmetici:
+ adunarea
- scderea
* nmulirea
/ mprirea la dreapta
\ mprirea la stnga
^ ridicarea la putere
transpunerea
( ) specificarea ordinii evalurii expresiilor
Exist dou simboluri pentru mprire, utilizate n mod special pentru
operaiile cu matrici. Pentru expresiile scalare 1/4 i 4\1 se obine acelai rezultat
(0.25). ntr-o expresie, parantezele sunt utilizate pentru a preciza ordinea executrii
operaiilor.
FUNCII
n MATLAB sunt predefinite funciile matematice elementare standard. O
list complet a funciilor matematice elementare se afieaz folosind comanda
help elfun, help specfun, respectiv help elmat, n linia de comand. Acestea sunt:
Funcii trigonometrice
sin - sinus
sinh - sinus hiperbolic
asin - inversa sinusului (arcsin)
asinh - inversa sinusului hiperbolic
cos - cosinus
cosh - cosinus hiperbolic
acos - inversa cosinusului
17
MATLAB n ingineria mecanic
acosh - inversa cosinusului hiperbolic
tan - tangenta
tanh - tangenta hiperbolic
atan - arctangenta
atan2 - arctangenta n cadranul patru
atanh - arctangenta hiperbolic
sec - secanta
sech - secanta hiperbolic
asec -arcsecanta
asech - arcsecanta hiperbolic
csc - cosecanta
csch - cosecanta hiperbolic
acsc - arccosecanta
acsch - arccosecanta hiperbolic
cot - cotangenta
coth - cotangenta hiperbolic
acot - arccotangent
acoth - arccotangenta hiperbolic
Funcii exponeniale
exp - exponeniala simpl (
x
e )
log - logaritmul natural ( ln x )
log10 - logaritmul n baza zece ( lg x )
log2 - logaritmul n baza doi ( x log
2
)
pow2 - puterile lui 2 (
x
2
)
sqrt - radical de ordin 2 ( x )
nextpow2 - puterea urmtoare a lui 2 ( ) N ( abs 2
p
)
Funcii complexe
abs - valoarea absolut (
x
)
angle - unghiul de faz (
i
e R z

)
complex - creeaz numrul complex din partea real i imaginar, date
conj - conjugatul numrului complex
imag - partea imaginar a numrului complex
real - partea real a numrului complex
unwrap - corecteaz unghiul de faz
isreal - valoarea de adevr
18
MATLAB n ingineria mecanic
Aproximri i resturi
fix - aproximare prin lips
floor - aproximare spre cel mai mic ntreg
ceil - aproximare spre ntregul mai mare sau egal
round - aproximare spre cel mai apropiat ntreg
mod - rest modulo
rem - restul mpririi
sign - signum
Funcii matematice speciale
besselj - f. Bessel de ordinul I ( 0 y ) x (
dx
dy
x
dx
y d
x
2 2
2
2
2
+ +
bessely - funcia Bessel de ordinul II
besselh - funcia Bessel de ordinul III (funcia Hankel)
besseli - funcia Bessel de ordinul I, modificat
besselk - funcia Bessel de ordinul II, modificat
beta - funcia Beta complet (



1
0
1 w 1 z
dt ) t 1 ( t ) w , z ( B
)
betainc -funcia Beta incompl. (



1
0
1 w 1 z
x
dt ) t 1 ( t
) w , z ( B
1
) w , z ( I
)
betaln - logaritmul natural al funciei Beta
ellipj - funcia Jacobi eliptic (

0
2
) sin m 1 (
d
)
ellipke - funcia eliptic integral (
dt )] mt 1 )( t 1 [(
2
1
1
0
2 2


)
erf - funcia eroare (

x
0
t
dt e
2
) x ( erf
2
)
erfc - funcia eroare complementar (

0
t
dt e
2
) x ( erfc
2
)
erfinv - funcia eroare invers
expint - funcia integral exponenial (
dt
t
e
x
t

)
19
MATLAB n ingineria mecanic
gamma - funcia Gamma (



0
1 a t
dt t e ) a (
)
gammainc - funcia Gamma incomplet (

x
0
1 a t
dt t e
) a (
1
)
gammaln - logaritmul natural al funciei Gamma
legendre - funcia Legendre asociat
(
( )

,
_

1
1
]
1


n
2
n
n n
m
2
m
2 m m
n
1 x
dx
d
! n 2
1
dx
d
) x 1 ( ) 1 ( ) x ( P
)
cross - produs vectorial al doi vectori
dot - produs scalar al doi vectori
Funcii specifice teoriei numerelor
factor - descompunerea n factori primi
isprime - valoarea de adevr, pentru numere prime
primes - genereaz lista numerelor prime, mai mici sau egale cu nr. dat
gcd - cel mai mare divizor comun
lcm - cel mai mic multiplu comun
rat - descompunere raional (

,
_

+ +
+
+
k
3
2
1
d
1
d
1
d
1
d
d
n

)
rats - aproximarea raional cu afiarea rezultatului n format raional
perms - afieaz toate permutrile posibile
nchoosek - combinri de n luate cte k
! n )! k n (
! n
C
k
n

factorial - factorial (n!)


Funcii specifice operaiunilor cu matrici
Matrici elementare
zeros - matricea zerourilor
ones - matricea unitar
eye - matricea unitate
repmat - repetarea matricei originale
rand - matrici cu elemente aleatorii uniform distribuite
randn - numere normal distribuite
linspace - creeaz un vector linie spaiat linear egal
20
MATLAB n ingineria mecanic
logspace - creeaz un vector linie egal spaiat logaritmic
freqspace - spaierea frecvenei
meshgrid - transform vectorii liniari n matrici bi-dimensionale
: - spaierea regulat

Caracteristici elementare ale matricilor
size - dimensiunea matricei
length - lungimea vectorului
ndims - numrul de dimensiuni ale structurii
disp - afieaz o matrice sau un text
isempty - valoarea de adevr pentru matricea goal
isequal - valoarea de adevr pentru matrici egale
isnumeric - valoarea de adevr pentru matrici numerice
islogical - valoarea de adevr pentru matrici logice
logical - convertete valori numerice n valori logice

Operaiuni cu matrici
reshape - schimb dimensiunea matricei
diag - matrici diagonale i diagonala matricilor
blkdiag - creeaz o matrice diagonal cu elementele date
tril - extrage matricea diagonal inferioar
triu - extrage matricea diagonal superioar
fliplr - inverseaz ordinea coloanelor, de la stnga la dreapta
flipud - inverseaz liniile
flipdim - inverseaz liniile sau coloanele dup dimensiunea cerut
rot90 - rotete matricea cu multiplu de 90
o
find - afieaz indicele poziiei elementelor diferite de zero
end - ultimul index valabil
sub2ind - transform indicii multipli n indici singulari
Matrici speciale
compan - matricea companion
gallery - testarea tipului matricei
hadamard - matricea Hadamard
hankel - matricea Hankel
hilb - matricea Hilbert
invhilb - matricea invers Hilbert
magic - matricea magic ptratic
pascal - matricea Pascal
21
MATLAB n ingineria mecanic
toeplitz - matricea Toeplitz
vander - matricea Vandermonde
wilkinson - testarea matricei Wilkinson
MATRICI, VECTORI I SCALARI
NOTAII
MATLAB este un pachet de programe care lucreaz numai cu un singur tip
de entiti, matrici rectangulare, cu elemente reale sau complexe.n acest sens,
scalarii sunt asimilai matricilor cu o linie i o coloan (1x1), iar vectorii sunt
asimilai matricilor cu o linie i n coloane (1x n) sau o coloan i n linii (nx1).
Operaiile i comenzile n MATLAB sunt aproape naturale, n sens matricial,
asemntor modului de calcul obinuit. Astfel, entitile :
A=
1
]
1

4 3
2 1
; B=
1
]
1

9 7 2
5 1 0
; C=
1
1
1
]
1

3
2
1
; D=
1
1
1
]
1


7 9 7 5
5 1 2 3
1 0 2
; E=[1 3 5
7] ,
sunt toate matrici n accepiunea MATLAB: A este o matrice 2x2, B are
dimensiunea 2x3, C este 3x1, D este o matrice 3x4 i E este un vector linie 1x4.
Elementele unei matrici, pot fi identificate prin una dintre notaiile: A
ij
, A[i,j],
A(i,j) etc. i semnific elementul de la intersecia liniei i cu coloana j. Ultima
notaie, A(i,j), este cea care a fost adoptat i n MATLAB i va fi folosit n
continuare. Dimensiunea unei matrici este precizat de o pereche de numere, care
arat numrul de linii i coloane ale matricei respective: D este o matrice 3x4; iar o
matrice cu o singur linie sau o singur coloan se numete vector linie (matricea E
din exemplul anterior) sau vector coloan (matricea C din exemplul anterior),
elementele acestora putnd fi identificate cu un singur indice. O matrice cu o
singur linie i o singur coloan este un scalar.
Pentru a face referire la un element A(i,j), (adic elementul aflat la
intersecia liniei i cu coloana j ) al unei matrici A, sunt necesari doi indici, indicele
de linie i indicele de coloan, n aceast ordine. Referirea la un element al unui
vector poate fi fcut numai cu un singur indice.
Astfel, dac se introduce de la tastatur, la promptul MATLAB, (promptul
are simbolul grafic ) matricile A, B, C, D i E:
A=[1,2;3,4];B=[0,1,5;2,7,9];C=[1,2,3];D=[sqrt(2),0,pi,1;3,2,1,
22
MATLAB n ingineria mecanic
5;5,7,9,7];E=[1,3,5,7]
De exemplu, elementul de pe poziia (2,1), al matricei A, poate fi apelat cu
comanda:
A(2,1) [Enter]
ans =
3
Dac se repet exemplul, pentru matricile B, D, E:
B(1,3) [Enter]
ans =
5;
D(3,4) [Enter]
ans =
7;
E(4) [Enter]
ans =
7
DEFINIREA MATRICILOR SIMPLE
Definirea matricilor se face prin una dintre urmtoarele metode:
1. introducerea explicit a listei de elementelor;
2. generarea prin instruciuni i funcii;
3. crearea fiierelor .m;
4. ncrcare din fiiere de date externe.
DEFINIREA MATRICILOR SIMPLE PRIN
INTRODUCEREA LISTEI DE ELEMENTE
Cea mai simpl metod de definire a matricilor mici const n utilizarea unei
liste explicite, a elementelor acesteia, respectnd conveniile de scriere. La
introducerea unei astfel de liste trebuie respectate urmtoarele reguli:
a) elementele matricei sunt cuprinse ntre paranteze drepte [ ]
b) elementele unei linii trebuie separate prin spaii libere (blanc-uri ) sau
virgule;
23
MATLAB n ingineria mecanic
c) liniile se separ prin semnul punct-virgul

; ;
Astfel, matricea A=
1
]
1

4 3
2 1
, se introduce de la tastatur cu secvena:
A=
[ ] 4 3 ; 2 1 [Enter]
A=
1 2
3 4
Obs. n acest exemplu:
elementele unei linii sunt separate printr-un spaiu liber
((blank):

2 1
respectiv

4 3
;
[Enter]- reprezint tasta cu acelai nume;
Acelai rezultat se obine dac elementele liniei se separ prin virgul:

[ ] 4 , 3 ; 2 , 1 A
A=
1 2
3 4
Matricea A, astfel definit, poate fi utilizat n calcule sau poate fi salvat
ntr-un fiier de date pentru o folosire ulterioar (tipul fisierelor de date este .mat).
Pentru matricile mari, la care datele de intrare nu ncap pe o singur linie,
se poate proceda la nlocuirea semnului ; cu o apsare a tastei [Enter], ca n
exemplul urmtor:
A=[1,2[Enter]
3,4[Enter]
5,6] [Enter]
i se afieaz:
A =
1 2
3 4
5 6
24
MATLAB n ingineria mecanic
Un alt mod de definire a unei matrici const n apelarea numelui unui fiier
de date aflat n memoria sistemului de calcul. Acest fiier trebuie s fi fost salvat,
n prealabil, pe hard-disc, n format ASCII (text), organizat ca o matrice
rectangular (complet) i trebuie s aib extensia .m . Astfel, de exemplu, dac
pe hard-disc se gsete un fiier cu numele matricea_A.m care conine
urmtoarele linii de text:
instruciunea care citete fiierul (i genereaz matricea A) este:
matricea_A
ceea ce va avea ca rezultat afiarea matricei A:
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Afiarea matricei coninut n fiierul matricea_A.mat, este posibil, la
tastarea numelui acestui fiier, numai n cazul n care acest fiier este salvat n
directorul curent.
Posibilitatea de a importa date din alte programe va fi abordat n seciuni
ulterioare.
GENERAREA MATRICILOR PRIN
INSTRUCIUNI I FUNCII
n MATLAB se pot defini matricile folosind instruciuni i funcii
specifice, existnd, deasemenea, predefinite matrici implicite. Generarea matricilor
prin instruciuni i funcii utilizeaz facilitile acestui mediu de programare.
De exemplu, matricile
[ ] 4 3 2 1 E i
[ ] 5 , 0 4 , 0 3 , 0 2 , 0 1 , 0 F se genereaz astfel:
E=1:4 [Enter]
25
MATLAB n ingineria mecanic
E =
1 2 3 4
iar cu secvena urmtoare se obine matricea F:
F=0.1:0.1:0.5 [Enter]
F =
0.1000 0.2000 0.3000 0.4000 0.5000
Matricile predefinite, prin funcii MATLAB, sunt:
A). Matricea unitate eye(n), eye(n,m)
Prin secvana urmtoare se genereaz matricile unitate avnd elementele
diagonalei principale 1 (Atenie! Pentru afiarea matricilor I2, I3 respectiv I34,
este necesar introducerea numelui acesteia, la prompterul MATLAB, ntruct
definirea acestora se ncheie cu caracterul ; care blocheaz afiarea!):
I2=eye(2);I3=eye(3);I34=eye(3,4); [Enter]
I2 =
1 0
0 1
I3 =
1 0 0
0 1 0
0 0 1
I34 =
1 0 0 0
0 1 0 0
0 0 1 0
B). Matricea identic : ones(n), ones(m,n)
Matricea identic are toate elementele egale cu cifra 1:
26
MATLAB n ingineria mecanic
Y2= ones(2); Y34= ones(3,4);
se obin rezultatele (dup ce se introduce, de la tastatur, numele matricei):
Y2 =
1 1
1 1
Y34 =
1 1 1 1
1 1 1 1
1 1 1 1
C). Matricea zero : zeros(n), zeros(n,m)
Matricea zero are toate elementele egale cu 0 (nu este matricea nul):
Z3=zeros(3)
Z3 =
0 0 0
0 0 0
0 0 0
D). Matricea vid: [ ]
Matricea vid este o matrice cu, cel puin, una dintre dimensiuni egal cu
zero, deci fr elemente definite, dar matricea exist ca structur matematic:
A=[]
E). Matricea aleatoare: rand(n), rand(n,m), rand(n,m,p)
Funcia rand() genereaz matrici ale cror elemente sunt numere uniform
distribuite n intervalul de valori (0,1) . Cu secvena urmtoare se genereaz
matricile arbitrare B3 (cu dimensiunea 3x3), B34(cu dimensiunea 3x4) i B345(cu
dimensiunea 3x4 n 5 variante, disponibil numai n versiunile MATLAB
superioare versiunii 5.3 ):
B3=rand(3);B34=rand(3,4);B345=rand(3,4,5);
27
MATLAB n ingineria mecanic
fiind obinute rezultatele:
B3 =
0.4514 0.3127 0.6831
0.0439 0.0129 0.0928
0.0272 0.3840 0.0353
B34 =
0.6124 0.0164 0.0576 0.7176
0.6085 0.1901 0.3676 0.6927
0.0158 0.5869 0.6315 0.0841
B345(:,:,1) =
0.4544 0.1536 0.7275 0.1210
0.4418 0.6756 0.4784 0.4508
0.3533 0.6992 0.5548 0.7159
B345(:,:,2) =
0.8928 0.8656 0.9084 0.0498
0.2731 0.2324 0.2319 0.0784
0.2548 0.8049 0.2393 0.6408
B345(:,:,3) =
0.1909 0.1708 0.3400 0.3932
0.8439 0.9943 0.3142 0.5915
0.1739 0.4398 0.3651 0.1197
B345(:,:,4) =
0.0381 0.9342 0.8729 0.9669
0.4586 0.2644 0.2379 0.6649
0.8699 0.1603 0.6458 0.8704
B345(:,:,5) =
0.0099 0.4302 0.6873 0.1556
0.1370 0.8903 0.3461 0.1911
0.8188 0.7349 0.1660 0.4225
F). Matricea dispersiilor: sparse (A), sparse(i,j,s,m,n)
28
MATLAB n ingineria mecanic
Funcia sparse() genereaz o matrice dispersat n raport cu argumentul.
Astfel, dac se d matricea
1
]
1

8 9 0 0 6 , 0
4 9 3 0 1
C
, atunci funcia sparse
(C), genereaz matricea:
C=[1,0,3,9,4;0.6,0,0,9,8];
sparse (C)
ans =
(1,1) 1.0000
(2,1) 0.6000
(1,3) 3.0000
(1,4) 9.0000
(2,4) 9.0000
(1,5) 4.0000
(2,5) -8.0000
adic, sunt reinute doar elementele diferite de valoarea zero din matricea C de la
argumentul funciei sparse. Aceast funcie este util pentru stocarea n memoria
calculatorului a matricilor cu m linii i n coloane, unde m i n sunt valori mari.
A). Matricea Hadamard
Aceast matrice se genereaz cu funcia sinonim hadamard(n) cu
condiia ca n, n/12 i n/20 s fie puteri ale lui 2. Matricea Hadamard are
elementele 1 i -1 iar coloanele sunt ortogonale. Utilitatea acestei matrici se
regsete n combinatoric, procesarea semnalelor i analiz numeric. Cu secvena
urmtoare se obin matricea Hadamard de ordinul 4:
H4=hadamard(4)
H4 =
1 1 1 1
1 -1 1 -1
1 1 -1 -1
1 -1 -1 1
G). Matricea Hilbert
Matricea Hilbert este un exemplu notabil de matrice slab condiionat.
Elementele matricei Hilbert sunt de forma H(i, j) = 1/(i+j-1), i se genereaz cu
funcia MATLAB hilb(n). De exemplu:
H3=hilb(3)
H3 =
1.0000 0.5000 0.3333
29
MATLAB n ingineria mecanic
0.5000 0.3333 0.2500
0.3333 0.2500 0.2000
H). Matricea magic ptratic
Matricea magic ptratic este generat cu funcia MATLAB magic(n) i
este construit din ntregii cuprini ntre 1 i n
2
cu condiia ca suma elementelor de
pe orice rnd s fie egal cu suma elementelor de pe oricare coloan respectiv cu
suma elementelor de pe diagonala principal, iar n trebuie s fie un scalar mai mare
sau egal cu 3:
M3=magic(3) [Enter]
M3 =
8 1 6
3 5 7
4 9 2
Pentru verificarea condiiei de egalitate ntre suma elementelor pe linie cu
suma elementelor pe coloan, respectiv cu suma elementelor pe diagonal, se
realizeaz suma corespunztoare, folosind o funcie Matlab (sum() )
suma_elementelor_pe_linie=sum(M3) [Enter]
suma_elementelor_pe_linie =
15 15 15
suma_elementelor_pe_coloana= sum(M3') [Enter]
suma_elementelor_pe_coloana =
15 15 15
suma_elementelor_pe_diagonala= sum(diag(M3)) [Enter]
suma_elementelor_pe_diagonala =
15
M4=magic(4)
M4 =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
30
MATLAB n ingineria mecanic
suma_elementelor_pe_linie= sum(M4)
suma_elementelor_pe_linie =
34 34 34 34
suma_elementelor_pe_coloana =sum(M4')
suma_elementelor_pe_coloana =
34 34 34 34
suma_elementelor_pe_diagonala= sum(diag(M4))
suma_elementelor_pe_diagonala =
34
Pentru afiarea matricilor M3 respectiv M4, se tasteaz numele acesteia.
I). Matricea Pascal
Matricea Pascal se genereaz cu funcia MATLAB, specific, pascal(n),
este o matrice de ordinul n, pozitiv definita, simetric, cu elemntele, numere
ntregi, preluate din Triunghiul lui Pascal (format din coeficienii binomiali), iar
inversa acestei matrici este o matrice cu elementele numere ntregi:
P2=pascal(2);P3=pascal(3);P4=pascal(4);P5=pascal(5);
P2 =
1 1
1 2
P3 =
1 1 1
1 2 3
1 3 6
P4 =
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
P5 =
1 1 1 1 1
1 2 3 4 5
31
MATLAB n ingineria mecanic
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
J). Matricea Wilkinson
Cu funcia MATLAB wilkinson(n) se genereaz matricea sinonim, care
este o matrice ptratic de ordinul n cu valori proprii, de test, simetric,
tridiagonal, cu perechi de valori ntregi apropiate dar nu exact egale. Cea mai
utilizat este matricea Wilkinson de ordinul 21. Pentru a se observa cum se
construiete matricea Wilkinson se prezint, mai jos, matricele corespunztoare, de
ordinul 2, 3, 4, 5, 6:
doi=wilkinson(2)
doi =
0.5000 1.0000
1.0000 0.5000
trei=wilkinson(3)
trei =
1 1 0
1 0 1
0 1 1
patru=wilkinson(4)
patru =
1.5 1 0 0
1 0.5 1 0
0 1 0.5 1
0 0 1 1.5
cinci=wilkinson(5)
cinci =
2 1 0 0 0
1 1 1 0 0
0 1 0 1 0
0 0 1 1 1
0 0 0 1 2
32
MATLAB n ingineria mecanic
sase=wilkinson(6)
sase =
2.5 1 0 0 0 0
1 1.5 1 0 0 0
0 1 0.5 1 0 0
0 0 1 0.5 1 0
0 0 0 1 1.5 1
0 0 0 0 1 2.5
GENERAREA MATRICILOR PRIN
CREAREA FIIERELOR SCRIPT
O facilitate oferit de MATLAB, pentru generarea matricilor, este crearea
fiierelor script. De exemplu, pentru matricea A, dat sub forma algebric,
1
1
1
1
]
1

0 . 1 0 . 14 0 . 15 0 . 4
0 . 12 0 . 7 0 . 6 0 . 9
0 . 8 0 . 11 0 . 10 0 . 5
0 . 13 0 . 2 0 . 3 0 . 16
A
,
se realizeaz fiierul matricea_A.m astfel:
Din meniul File New M-file se creaz fiierul matricea_A care va
conine textul

A = [ ...
16.0 3.0 2.0 13.0
5.0 10.0 11.0 8.0
9.0 6.0 7.0 12.0
4.0 15.0 14.0 1.0 ]
Acest fiier se salveaz (din meniul File Save
As ) cu numele matricea_A, acestuia fiindu-i atribuit, implicit,
extensia .m
Dac se dorete apelarea fiierului (pentru a fi utilizat n alte fiiere, sau n
Workspace), n linia de comand MATLAB, se tasteaz numele fiierului,
matricea_A, rezultatul fiind afiarea matricei A:
matricea_A
A =
16 3 2 13
5 10 11 8
33
MATLAB n ingineria mecanic
9 6 7 12
4 15 14 1
GENERAREA MATRICILOR PRIN
NCRCAREA DIN FIIERE EXTERNE
O alt posibilitate de a accesa date din fiiere n format text sau binar, n
MATLAB-6, este aceea de a folosi calea File Import Data care utilizeaz
un Import Wizard (Asistent pentru import date), acesta solicitnd utilizatorului
date suplimentare privind calea fiierului ce urmeaz a fi importat. De exemplu,
pentru a importa fiierul matrice, care se gsete pe hard-disc, n partiia D:/ a
acestuia, D:/MATLAB-6/work/matrice, se va deschide fereastra de dialog din
figur:
Accesnd butonul Next, iar, dup validarea operaiei, Finish, n spaiul de
lucru, poate fi, oricnd, afiat i utilizat matricea salvat n acest fiier. Comanda
load citete fiierele binare coninnd matrici generate n sesiuni de lucru
anterioare. Aceeai comand citete fiiere- text coninnd date numerice. Fiierul
text trebuie sa fie organizat ca tabel bi-dimensional (linii i coloane), separate prin
spaii libere (blancuri), cu un rnd pe fiecare linie i numr egal de elemente n
fiecare rnd (tabelul trebuie sa aib acelasi numr de coloane pe fiecare linie). De
exemplu, dac, intr-un editor de text (acest editor poate fi extern MATLAB-ului),
se creeaz fiierul text coninnd urmtoarele patru linii de text:
16 3 2 13
34
MATLAB n ingineria mecanic
5 10 11 8
9 6 7 12
4 15 14 1
i se salveaz fiierul cu numele, matrice, de exemplu, atunci, acest fiier poate fi
apelat folosind urmtoarea succesiune de operaiuni, n Workspace (acest fiier
poate fi apelat i de alte fiiere sau funcii MATLAB). De exemplu, presupunnd
c n calcule este necesar ca datele cuprinse n fiierul matrice.dat, stocat n
memoria calculatorului, i aceste date s fie identificate cu numele B, atunci se
procedeaz astfel:
load matrice.dat
B=matrice
B =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
ELEMENTELE MATRICILOR
Elementele matricilor pot fi numere reale sau complexe, sau orice alt
expresie MATLAB. De exemplu, pentru introducerea matricei
( )
1
]
1

+ +
5
4
3 2 1 3 3 , 1 x se folosete scrierea:
x=[ -1.3, sqrt(3), (1+2+3)*4/5] [Enter]
rezult:
x=
-1.3000 1.7321 4.8000
Obs. De remarcat faptul c pentru numrul raional -1,3 s-a folosit
formatul britanic: s-a folosit caracterul . pentru separarea prii ntregi de
partea fracionar a numrului. De asemenea, sqrt(3), pentru numrul 3 ,
elementul x(3) fiind afiat cu valoarea calculat pentru expresia de mai sus,iar
pentru separarea elementelor unei linii s-a folosit caracterul virgul (,).
35
MATLAB n ingineria mecanic
Elementele unei matrici pot fi referite (se pot apela, sau se poate edita) cu
indici cuprini ntre paranteze rotunde ( ) , cifrele reprezentnd identificatorii de
linie, respectiv de coloan ai elementului apelat.
De exemplu, cu instruciunea urmtoare, se cere afiarea elementului al
doilea al vectorului x:
a = x(2) [Enter]
a =
1.7321
n timp ce, cu instruciunea urmtoare se modific elementul al cinci-lea al
aceluiai vector x (dac acest element nu exista n varianta original a vectorului x,
atunci, MATLAB atribuie automat valoarea nscris n partea dreapt a semnului
=, de atribuire):
x(5) = abs(x(1) ) [Enter]
x=
-1.3000 1.7321 4.8000 0 1.3000
(adic, elementul al 5-lea al vectorului x este egal cu valoarea absolut a
elementului de pe poziia 1 a vectorului x), ceea ce returneaz rezultatul:
Obs:De remarcat c se atribuie o valoare unui element care ocup o poziie
n afara dimensiunii maxime a matricei sau vectorului referit, iar
elementele nedefinite sunt setate la valoarea zero.
Deci, ca regul, se poate deduce c n cazul n care pe o anumit poziie,
ntr-o matrice, nu exist un element i se definete, folosind o regul oarecare, un
element de pe o poziie urmtoare, elementul care lipsete se nlocuiete automat
de ctre MATLAB, cu valoarea 0 (zero).In acest sens, instruciunea urmtoare
adaug un element pe poziia (2,4), i completeaz cu zerouri acolo unde nu
sunt definite alte valori, pentru matricea A:
A=[1,2;3,4];A(2,4) = 6 [Enter]
A=
1 2 0 0
3 4 0 6
(adic elementul din linia 2 coloana 4, al matricei A=
1
]
1

4 3
2 1
este definit, de-
acum nainte, ca fiind numrul ntreg 6,(Atenie! Nu trebuie nlocuite elementele
36
MATLAB n ingineria mecanic
care lipsesc: A
13
, A
14
, A
23
, acest lucru este realizat automat de ctre mediul
MATLAB )).
O modalitate de a construi matrici mari const n folosirea matricilor mici
ca elemente, i concatenarea (legarea) acestora. Spre exemplu, din dou matrici
2x3 se poate construi o matrice 4x3; dimensiunile matricilor utilizate trebuind s
fie astfel alese nct s se realizeze tablouri rectangulare complete.
Fie A1 i A2 cele dou matrici utilizate. Cu secvena urmtoare:
A1=[ 1 2 ; 3 4]; A2=[5 6 ; 7 8]; A =[ A1 ; A2] [Enter]
se obine rezultatul:
A=
1 2
3 4
5 6
7 8
O matrice cu dimensiuni reduse poate fi extras din matrici mai mari
utiliznd semnul : (dou puncte). De exemplu:
B=A(2,3, :) [Enter]
extrage liniile doi i trei (2:3) i toate coloanele din matricea curent A,
obinndu-se matricea B:
B=
3 4
5 6
n acest exemplu, caracterul dou puncte ( : ), folosit n instruciunea
B=A(2:3, :), are urmtoarea semnificaie:se extrag elementele aflate la
intersecia liniilor 2, 3 cu toate coloanele matricei A.
CONCATENAREA MATRICILOR
Concatenarea (legarea) este procesul de asamblare a matricilor mici,
pentru generarea matricilor supra- dimensionate (o matrice, n fapt, este constituit
prin concatenarea elementelor proprii). Operatorul de concatenare este perechea de
37
MATLAB n ingineria mecanic
paranteze drepte, [ ]. De exemplu, fiind dat matricea
1
1
1
1
]
1

9 7 5 3
9 8 7 6
8 0 9 7
2 8 4 21
A
, se
poate genera o alt matrice B, prin suplimentarea liniilor i coloanelor matricei A,
astfel:
Matricea B va avea dou linii i dou coloane
Elementul B(1,1) este matricea A;
Elementul B(1,2) este format din elementele matricei A, la care se adun
scalarul 32;
Elementul B(2,1) este format din elementele matricei A, la care se adun
scalarul 48;
Elementul B(2,1) este format din elementele matricei A, la care se adun
scalarul 16.
Pentru a realiza acest deziderat, n linia de comand (considernd c
matricea A este stocat n memorie), se introduce, de la tastatur, urmtoarea
secven:
A=[21,4,8,2;7,9,0,8;6,7,8,9;3,5,7,9];
B = [A, A+32; A+48, A+16]
B =
21 4 8 2 53 36 40 34
7 9 0 8 39 41 32 40
6 7 8 9 38 39 40 41
3 5 7 9 35 37 39 41
69 52 56 50 37 20 24 18
55 57 48 56 23 25 16 24
54 55 56 57 22 23 24 25
51 53 55 57 19 21 23 25
Un alt exemplu, asamblarea acelorai matrici, prin aranjarea acestora n
coloan :
B1 = [A ;A+32; A+48; A+16]
B1 =
21 4 8 2
7 9 0 8
38
A+32
A+48
A+16
A
A
MATLAB n ingineria mecanic
6 7 8 9
3 5 7 9
53 36 40 34
39 41 32 40
38 39 40 41
35 37 39 41
69 52 56 50
55 57 48 56
54 55 56 57
51 53 55 57
37 20 24 18
23 25 16 24
22 23 24 25
19 21 23 25
TERGEREA LINIILOR I A COLOANELOR
Se pot terge linii i coloane, ale unei matrici, folosind operatorul [ ]. De
exemplu, pentru a terge coloana 2 a matricei A, dat n forma algebric general:
1
1
1
1
]
1

9 7 5 3
9 8 7 6
8 0 9 7
2 8 4 21
A
, se poate folosi urmtoarea secven:
A=[21,4,8,2;7,9,0,8;6,7,8,9;3,5,7,9];x=A; x(:,2)=[]
se obine o nou matrice x :
x =
21 8 2
7 0 8
6 8 9
3 7 9
Pentru tergerea unui singur element (de exemplu, tot al treilea element s
fie ters, considernd elementele matricei scrise pe coloan) se poate folosi
urmtoarea secven:
A=[21,4,8,2;7,9,0,8;6,7,8,9;3,5,7,9];x=A;
x(1:3:16) =[]
39
A+32
A+48
A+16
MATLAB n ingineria mecanic
x =
7 6 4 9 5 8 8 7 8 9
Se observ c, elementele matricei au fost citite pe coloan, i tot al treilea
element, ncepnd cu primul, a fost eliminat, rezultatul fiind un vector linie.
EXTRAGEREA SUBMATRICILOR PRIN INDICI
Elementele individuale ale unei matrici se apeleaz cu numele acesteia,
urmat de doi indici, cuprini ntre paranteze rotunde separai prin virgul. Primul
indice semnific linia, iar al doilea coloana n care se gsete elementul apelat. De
exemplu, considernd matricea
1
1
1
1
]
1

9 7 5 3
9 8 7 6
8 0 9 7
2 8 4 21
A stocat n memoria
calculatorului, atunci cu instruciunea:
A=[21,4,8,2;7,9,0,8;6,7,8,9;3,5,7,9];A(6,5)=A(1,2)+A(3,1) [Enter]
se obine o alt matrice la care elementul din linia 6, coloana 5: A(6,5), al matricei
A, este obinut ca suma dintre elementul de pe linia 1 coloana 2 (A(1,2)) i
elementul de pe linia 3, coloana 1 (A(3,1)), celelalte elemente fiind nlocuite cu
valoarea zero:
A =
21 4 8 2 0
7 9 0 8 0
6 7 8 9 0
3 5 7 9 0
0 0 0 0 0
0 0 0 0 10
Indicii pot fi scalari sau vectori. Indicii vectori permit definirea unor
submatrici, procedeu prin care se pot referi pri disparate dintr-o matrice. Spre
exemplu, dac se presupune c matricea M
6x10
exist deja salvat pe disc,
M=[1,2,3,4,5,6,7,8,9,10;-1,2,3,-4,5,-6,7,-8,9,-10;0,2,0,4,0,6,0,8,0,10;
-1,2,-3,4,-5,6,-7,8,-9,10;1,2,3,0,0,0,7,8,9,10;10,9,8,7,6,5,4,3,2,1];
M =
1 2 3 4 5 6 7 8 9 10
-1 2 3 -4 5 -6 7 -8 9 -10
0 2 0 4 0 6 0 8 0 10
40
MATLAB n ingineria mecanic
-1 2 -3 4 -5 6 -7 8 -9 10
1 2 3 0 0 0 7 8 9 10
10 9 8 7 6 5 4 3 2 1
atunci, cu instruciunea urmtoare, se extrage submatricea B cu dimensiunea 5x1,
format cu elementele liniilor 1, 2, 3, 4, 5 (notaia 1:5 arat c sunt apelate toate
liniile: 1 pn la 5) i coloana a 3-a a matricei M:
B1=M(1:5,3) [Enter]
B1 =
3
3
0
- 3
3
n timp ce, instruciunea urmtoare, extrage submatricea C, de dimensiunea 5x4,
constituit din elementele primelor 5 liniii i ale ultimelor 4 coloane (coloanele 7,
8, 9, 10) ale matricei M:
C1=M(1:5, 7:10) [Enter]
C1 =
7 8 9 10
7 - 8 9 - 10
0 8 0 10
-7 8 - 9 10
7 8 9 10
Utilizarea, numai a caracterului : (dou puncte) n locul indicilor
pentru linii sau pentru coloane, presupune considerarea tuturor elementelor pe linii,
respectiv pe coloane. Astfel instruciunea:
D1=M(:,3) [Enter]
extrage din matricea M, o submatrice D1 cu elementele extrase din matricea M
(toate liniile i numai coloana 3) avnd urmtoarea configuraie:
D1 =
3
3
0
41
MATLAB n ingineria mecanic
- 3
3
8
n timp ce, instruciunea:
E1=M(1:5,:) [Enter]
extrage submatricea E1 care conine liniile de la 1 la 5 ale tuturor coloanelor
matricei M:
E1 =
1 2 3 4 5 6 7 8 9 10
-1 2 3 -4 5 -6 7 -8 9 -10
0 2 0 4 0 6 0 8 0 10
-1 2 -3 4 - 5 6 -7 8 -9 10
1 2 3 0 0 0 7 8 9 10
UTILIZAREA SIMBOLURILOR
MATLAB, n variantele recente, folosete Symbolic Math Toolbox (grup
de instrumente matematice simbolice) pentru crearea variabilelor i obiectelor
simbolice. Aceast colecie de instrumente MATLAB, nu trebuie confundat cu
facilitatea oferita, tot de MATLAB, pentru utilizarea simbolurilor literale.
n calcule inginereti se utilizeaz frecvent, in locul expresiilor numerice,
supradimensionate, n general n cazul calculelor numerice cu matrici i de analiz
numeric, expresii simbolice. Nucleul computaional este format pe baza kernel-
ului MAPLE, dezvoltat la University of Waterloo, Canada, i la Eidgenssiche
Technische Hochschule, Zrich, Elveia. Sunt disponibile dou categorii de
toolbox-uri: o colecie de baz, numit Symbolic Math Toolbox, respectiv, o
colecie de funcii extinse, numit Extended Symbolic Math Toolbox.
Simbolurile matematice se creeaza cu funcia MATLAB sym(), respectiv
cu funcia syms. Diferena dintre aceste dou funcii const n faptul c prima
creeaz o variabil simbolic, n timp ce, a doua, creaz o mulime finit de
variabile, prin declararea acestora, la nceputul sesiunii de lucru. Trebuie fcut o
difereniere exact ntre simbolurile literale (ale literelor din alfabetul grecesc, de
exemplu) i simbolurile matematice folosite pentru reprezentarea variabilelor n
MATLAB. De exemplu, pentru introducerea unui text, de la tastatur, n care
intervin simboluri matematice sau caractere greceti, precum i caractere speciale
folosite ca simboluri pentru operatori matematici, se folosesc proprietile
42
MATLAB n ingineria mecanic
disponibile n MATLAB, pentru inserarea acestora. n tabelul alturat sunt cuprinse
toate simbolurile literale i caracterele speciale, pentru care MATLAB ofer
faciliti de inserare n text:
DENUMIREA
SIMBOLULUI
SIMBOL DENUMIREA
SIMBOLULUI
SIMBOL DENUMIREA
SIMBOLULUI
SIMBOL
\alpha

\upsilon

\sim

\beta

\phi

\leq

\gamma \chi \infty

\delta

\psi \leftrightarrow

\epsilon

\omega

\leftarrow

\zeta

\Gamma

\rightarrow

\eta \Delta

\uparrow

\theta

\Theta

\downarrow

\vartheta

\Lambda

\circ

\iota \Xi

\pm
t
\kappa

\Pi

\geq

\lambda

\Sigma

\partial

\mu \Upsilon

\div

\nu

\Phi

\neq

\xi

\Psi

\equiv

\pi

\Omega

\Im

\rho \forall

\Re

\sigma

\exists

\supset

\varsigma \ni

\subset

\tau

\cong

\int

\nabla

\copyright \in

\perp

\langle

\rangle

\cap

\cup

\supseteq

\otimes

\oplus

\oslash
Introducerea simbolurilor literale, respectiv a caracterelor speciale, n
texte sau iruri de caractere este o operaiune distinct a MATLAB, din acest
motiv, aceasta va fi tratat ntr-o seciune consacrat acestui subiect. Raiunea
pentru care aceste observaii, referitoare la diferena dintre simbolurile
matematice, folosite n MATLAB ca orice alt tip de variabil i simbolurile
literale, folosite ca iruri de caractere (text) rezid n aceea c se dorete
eliminarea unei posibiliti de apariie a confuziilor nedorite, n tratarea
calculului simbolic.
43
MATLAB n ingineria mecanic
DEFINIREA I CREAREA EXPRESIILOR SIMBOLICE
Variabilele i expresiile simbolice se definesc cu comanda sym, n
linia de comanda a spaiului de lucru MATLAB. Funcia MATLAB sym(x),
permite atribuirea, variabilei x, caracterul de simbol. Astfel, cu
comanda:
c = sym('variabila_simbolica')
se creaz variabila simbolica c , care va afia, atunci cnd este accesat,
expresia variabila_simbolica :
c =
variabila_simbolica
O expresie matematic poate fi reprezentat printr-un simbol alfanumeric,
fiind posibil utilizarea acesteia, ulterior, n calcule i expresii numerice complexe.
De exemplu, presupunnd c se dorete folosirea repetat a unei expresii
matematice, relativ complicat, ca editare, n expresii diferite, atunci se poate folosi
urmtorul algoritm: se declar expresia simbolic, dup care aceasta se poate
utiliza n calcule i expresii ca o valoare numeric sau simbolic de sine-stttoare.
Fie expresia:
( )
8
4 12
55 _ 8 23 ln 34 14
11
3 12
: 3 2 1 9 E
3
125 log 3 5
5
5

'

1
1
]
1

+ +
Declararea acesteia ca variabila simbolica se realizeaz cu comanda:
E=sym( ' (((1+2+3)/((12-3^5)/11)-(14+(34)^(1/5)- log(23))^(1/3))*8
^((log(125))/(log(5))))-sqrt(55)*(12-4^3)/(8) ' )
ceea ce are ca rezultat afiarea expresiei simbolice:
E =
(((1+2+3)/((12-3^5)/11)-(14+(34)^(1/5)- log(23))^(1/3))*8^((log(125))/(log(5))))-
sqrt(55)*(12-4^3)/(8)
Utilizarea acestei expresii, n calcule, (pentru determinarea valorii expresiei
f=E^2-3*E+log(E), de exemplu), este posibil, folosind urmtoarea secven
MATLAB:
44
MATLAB n ingineria mecanic
f=E^2-3*E+log(E)
f =((-2/7-(14+34^(1/5)- log(23))^(1/3))*8^(log(125)/log(5))+
13/2*55^(1/2))^2-3*(-2/7-(14+34^(1/5)-log(23))^(1/3))*8^(log(125)/
log(5))-39/2*55^(1/2)+log((-2/7-(14+34^(1/5)-log(23))^(1/3))*
8^(log(125)/log(5))+13/2*55^(1/2))
Pentru ca operaiile aritmetice cu expresii simbolice, n MATLAB, s se
poat realiza, este necesar declararea tuturor variabilelor dintr-o expresie
matematic. De exemplu, rezolvarea unei ecuaii parametrice, cu parametrul a ,
i variabila x , declarat, este posibil dac, n prealabil, s-a declarat simbol,
parametrul respectiv, folosind, pentru aceasta funcia syms. Astfel, pentru
rezolvarea ecuaiei
( ) 0 x f , unde 7 ax 2 x ) x ( f
2
+ , se procedeaz astfel:
syms x a
f=x^2-2*a*x+7
f =
x^2-2*a*x+7
solve(f)
ans =
[ a+(a^2-7)^(1/2)]
[ a-(a^2-7)^(1/2)]
elementele matricei simbolice ans fiind cele dou rdcini ale ecuaiei date.
CALCULE SIMBOLICE
Diferenierea
Pentru calculul diferenialei unei funcii, se procedeaz astfel:
1. -se declar simbolurile care urmeaza a fi utilizate:
syms x a b c
f=a*x^3+b*x^2+c*x
f =
a*x^3+b*x^2+c*x
2. se aplic funcia diff() expresiei simbolice, creat anterior,
f:
diff(f)
45
MATLAB n ingineria mecanic
ans =
3*a*x^2+2*b*x+c
Difereniala se calculeaza, implicit, n raport cu variabila x, indiferent de
ordinea declarrii simbolurilor. Dac, de exemplu, se cere difereniala n raport cu
o alt variabil, atunci funcia MATLAB pentru calculul diferenialei se apeleaz
cu doi parametri:
diff(f,a)
ans =
x^3
n mod similar se determin difereniala de ordinul n(n2) n raport cu o
variabil. Funcia MATLAB diff() se apeleaz, atunci, cu doi sau trei parametri,
ntre acetia, ultimul parametru fiind ordinul de difereniere:
diff(f,x,2)
ans =
6*a*x+2*b difereniala de ordinul doi n raport cu x
diff(f,2)
ans =
6*a*x+2*b - difereniala de ordinul doi n raport cu x
diff(f,3)
ans =
6*a - difereniala de ordinul trei n raport cu x
diff(f,a,2)
ans =
0- difereniala de ordinul doi n raport cu a
Difereniala matricei se determin n mod similar diferenialelor funciilor
simple:
syms x k pi
A=[ (k*x)^2, (pi*x)^3;k^2*x, (x^2+1)^(1/2)];
diff(A)
ans =
[ 2*k^2*x, 3*pi^3*x^2]
[ k^2, 1/(x^2+1)^(1/2)*x]
46
MATLAB n ingineria mecanic
Derivatele pariale se determin folosind funcia MATLAB jacobian(), n
funcie de variabilele funciilor. Astfel, derivata unei funcii
) v , u ( f
, n raport cu
funciile
) y , x ( u
, respectiv
) y , x ( v
, se determin cu urmtoarea secven:
syms x y u v
u=2*x^4-log(x^2+4);v=exp(x^2-8)+4*log(3*x^3-2);
Der_partiala=jacobian([u;v],[x,y])
Der_partiala =
[8*x^3-2*x/(x^2+4)-(2*x+2*y^3)/(x^2+2*x*y^3-5*y),- (6*x*y^2-5)/(x^2+2*x*y^3-5*y)]
[ 2*x*exp(x^2-8*y^3+6*y^2)+36*x^2/(3*x^3-2*y),(-24*y^2+12*y)*exp(x^2-8*y^3+6*y^2)-8/(3*x^3-2*y)]
respectiv, pentru alte dou funcii:
syms x y u v a b c d
u=cos(a*x+b*y);v=sin(c*x-d*y);
Der_partiala=jacobian([u;v],[x,y])
Der_partiala =
[ -sin(a*x+b*y)*a, -sin(a*x+b*y)*b]
[ cos(c*x-d*y)*c, -cos(c*x-d*y)*d]
Calculul limitelor funciilor simbolice
Calculul limitei unei funcii, definit simbolic presupune existena, n
primul rnd, limitei funciei respective ntr-un punct. ntruct se definesc limitele
laterale (la stnga sau la dreapta), MATLAB permite calculul difereniat al acestora
prin specificarea sensului de calcul. Limitele se calculeaz folosind funcia
MATLAB limit(f(x),x
o
), cu parametrii de intrare, f(x) i x
o
n funcie de tipul
limitei. De exemplu, dac se cere calculul limitei funciei
a x
x x
a a
a x
) x ( f

, cnd x
tinde spre a, se procedeaz astfel:
syms a x
limit((x^x-a^x)/(a^x-a^a),a)
ans =
47
MATLAB n ingineria mecanic
1/log(a)
Pentru calculul limitei irului 0 a ), a a ( n x
1 n n 2
n
>
+
, se folosete
secvena MATLAB:
syms n a
limit((n^2)*(a^(1/n)-a^(1/(n+1))),n,inf)
ans =
log(a)
Limitele laterale se determin folosind aceeai funcie MATLAB, pentru
care paramatrii de intrare sunt:funcia (scris simbolic), variabila, punctul n care se
cere limita respectiv sensul (left-stnga; right-dreapta), dup cum limita se
calculeaz, la stnga, sau la dreapta punctului de acumulare. De exemplu, pentru
calculul limitelor laterale

a x
a x
1
e lim
i
+

a x
a x
1
e lim
se procedeaz astfel:
syms a x
limit(exp(1/(x-a)),x,a,'left')
ans =
0
limit(exp(1/(x-a)),x,a,'right')
ans =
inf
Calculul sumelor simbolice
Pentru calculul sumelor de tipul

n
1 k
k
a
, n care irul
k
a este definit
simbolic, se folosete funcia MATLAB symsum(
k
a ,k,k
o
,k
n
). De exemplu,
pentru calculul sumei

+
n
1 k
2
k k
1
, se folosete secvena:
syms k n
48
MATLAB n ingineria mecanic
symsum(1/(k^2+k),1,n)
ans =
-1/(n+1)+1
n cazul n care indexul de sumare nu este implicit (n expresia simbolic,
irul fiind definit cu mai multe variabile), funcia MATLAB trebuie sa fie explicit
definit prin parametrii de intrare. Astfel, dac se cere calculul sumelor infinite
( )

+
n
0 k
k 2
x 1 k
i
( )

+
n
0 k
k k
y x
, se folosete secvena:
syms k x y n
symsum((x^k)*(k^2+1),k,0,inf)
ans =
-(2*x^2-x+1)/(x-1)^3
respectiv, pentru cea de-a doua sum:
syms k x y n
symsum(x^k+y^k,k,0,inf)
ans =
-1/(x-1)-1/(y-1)
Calculul seriilor Taylor
Dezvoltarea unei funcii n serie Taylor are o aplicabilitate deosebit n
calculele numerice. Fie
. R ] b , a [ : f
Se pune problema determinii unei
funcii F, care s aproximeze funcia f n intervalul [a,b]. Se recurge la
aceast aproximare n dou cazuri: 1) cnd nu se cunoate expresia analitic
a lui f, dar se cunosc valorile sale ntr-un numr finit de puncte i 2) cnd
expresia analitic a lui f este destul de complicat i cu ajutorul acesteia
calculele sunt destul de dificile. Pentru evaluarea lui f(x) se caut o alt
funcie F(x) relativ simpl astfel ca pentru orice valoare a lui x valoarea lui
f(x) se alege dintr-o anumit clas de funcii, de exemplu din clasa
polinoamelor de grad n sau mai mic, pentru un anume n, atunci trebuie ca
F(x) s ia aceeai valoare cu f(x) pentru anumite valori ale lui x. Aceste
valori ale lui x sunt adesea referite ca puncte de interpolare. De asemenea se
49
MATLAB n ingineria mecanic
poate cere ca anumite derivate ale lui F(x) s ia acelai valori cu valorile
derivatelor corespunztoare ale lui f(x) n anumite puncte de interpolare. Se
poate arta c dac F(x) este suma a n+1 termeni ai seriei Taylor pentru f(x)
n punctul x=a, atunci F(x) poate fi considerat ca un polinom de interpolare
pentru f(x) de grad n sau mai mic, deoarece:
n ,..., 2 , 1 , 0 k ), a ( f F
k ) k (
) a (

Forma general a dezvoltarii funciei f(x), n serie Taylor, n jurul unui
punct x=a este:
( )
( )
( )
n
0 n
n
a x
! n
a f

. Funcia MATLAB, pentru calculul primilor


n termeni ai dezvoltrii, se utilizeaz funcia taylor(f(x), n, a). De exemplu, pentru
determinarea primilor 4 termeni ai dezvoltrii funciei
2
x
e ) x ( f , n jurul
punctului x=3, se va folosi urmtoarea secven:
syms x
taylor(exp(x^2),4,3)
ans =
exp(9)+6*exp(9)*(x-3)+19*exp(9)*(x-3)^2+42*exp(9)*(x-3)^3
Problemele legate de aproximarea folosind seriile Taylor vor fi abordate
ntr-o alt seciune a acestei lucrri.
REZOLVAREA ECUAIILOR SIMBOLICE
ECUAII ALGEBRICE
Rezolvarea ecuaiilor algebrice simple comport, n MATLAB, un volum
de lucru redus, dar necesit un efort de calcul relativ mare pentru sistemul de
calcul, comparativ cu alte operaii i calcule matematice. Funcia MATLAB
folosit pentru rezolvarea direct a ecuaiilor algebrice, este solve(), n care
parametrii de intrare sunt ecuaiile simbolice. Dac ecuaia are forma f(x)=0, atunci
funcia MATLAB se apeleaz n forma simpl: solve(f(x)), n timp ce, pentru
ecuaii de forma f(x)=g(x), funcia MATLAB se apeleaz cu parametrii de intrare
marcai ca iruri de caractere: solve(f(x)=g(x)). n cazul sistemelor de ecuaii, se
respect ultima regul de scriere a parametrilor de intrare, ecuaiile fiind
50
MATLAB n ingineria mecanic
considerate iruri de caractere separate prin caracterul virgul: solve(f
1
(x)=g
1
(x),
f
2
(x)=g
2
(x), f
3
(x)=g
3
(x), ,f
n
(x)=g
n
(x)). n continuare se prezint exemple
ilustrative:
syms a x
solve(x^4-7*x^3+19*x^2-23*x+10)
ans =
[ 1]
[ 2]
[ 2+i]
[ 2-i]
solve(x^2=6*x-5)
ans =
[ 1]
[ 5]
Rezolvarea sistemului de ecuaii

'

yln3 7) 2ln(x
2 - 2 x
2 - y
este realizabil cu
urmtoarea secven:
syms x y
[x,y]=solve('x=2^(y-2)-2','2*log(x+7)=y*log(3)')
x =
1/4*exp(2.7726)-2
y =
2.7726/log(2)
n scrierea soluiei acestui sistem de ecuaii, MATLAB folosete
transformarea ln 16 =2,7726. Astfel, soluia sistemului se mai poate scrie sub
forma consacrat
{ } 4 y ; 2 x
.
Rezolvarea ecuaiilor parametrice sau a sistemelor cu numar mare de
ecuaii, MATLAB afieaz un cmp S al soluiilor. Extragerea soluiilor din
acest cmp se realizeaz folosind o instruciune simpl:S.(nume_soluie). Pentru
ilustrarea acestor situaii, se studiaz rezolvarea sistemelor:
51
MATLAB n ingineria mecanic

'

+ + + +
+ + + +
0 a x ) 1 a ( ay y
0 a y ) 1 a ( ax x
2
2
;

'

+
+
+
+
1 y 3 ) x u (
1 x 3 ) u z (
1 u 3 ) z y (
1 z 3 ) y x (
2
2
2
2
. Secvena urmtoare rezolv
primul sistem:
syms x y a
S=solve('x^2+a*x+(a+1)*y=-a','y^2+a*y+(a+1)*x=-a')
S =
x: [4x1 sym]
y: [4x1 sym]
Cmpul soluiilor sistemului, S, este o matrice simbolic format din
cele dou linii i o coloan a soluiilor pentru x, respectiv pentru y. Afiarea
desfurat a soluiilor, se poate realiza cu instruciunea, dat n linia de
comand:
Solutiile=[S.x,S.y]
Solutiile =
[ 1/2-1/2*(-3-8*a)^(1/2), 1/2+1/2*(-3-8*a)^(1/2)]
[ 1/2+1/2*(-3-8*a)^(1/2), 1/2-1/2*(-3-8*a)^(1/2)]
[-a-1/2+1/2*(4*a^2+1)^(1/2),-a-1/2+1/2*(4*a^2+1)^(1/2)]
[ -a-1/2-1/2*(4*a^2+1)^(1/2), -a-1/2-1/2*(4*a^2+1)^(1/2)]
Pentru rezolvarea celui de-al doilea sistem se folosete secvena:
syms x y z u
S=solve('(x+y)^2=3*z-1','(y+z)^2=3*u-1','(z+u)^2=3*x-
1','(u+x)^2=3*y-1')
S =
u: [2x1 sym]
x: [2x1 sym]
52
MATLAB n ingineria mecanic
y: [2x1 sym]
z: [2x1 sym]
iar afiarea detaliat a soluiilor este dat cu comanda:
solutii=[S.x,S.y,S.z,S.u]
solutii =
[3/8+1/8*i*7^(1/2), 3/8+1/8*i*7^(1/2), 3/8+1/8*i*7^(1/2), 3/8+1/8*i*7^(1/2)]
[3/8- 1/8*i*7^(1/2), 3/8- 1/8*i*7^(1/2), 3/8- 1/8*i*7^(1/2), 3/8- 1/8*i*7^(1/2)]
REZOLVAREA ECUAIILOR DIFERENIALE
Rezolvarea ecuaiilor difereniale ordinare este posibil n MATLAB,
folosind funcia dedicat dsolve(), n care, parametrii de intrare sunt ecuaia
diferenial, scris simbolic (folosind convenia de scriere a irurilor de caractere),
respectiv condiiile la limit, dac acestea exist. Parametrii de intrare se separ
prin caracterul virgul. Difereniala de ordinul n se specific n ecuaie prin
simbolul Dny, n care, D reprezint simbolizarea diferenialei, n reprezint ordinul
acesteia, iar y este integrala funciei, sau variabila dependent (de exemplu, D2y
reprezint difereniala de ordinul doi a funciei y). Variabila independent
implicit, recunoscut de MATLAB, este t. Aceast variabil poate fi schimbat,
prin adugarea, ca parametru de intrare, n irul parametrilor funciei MATLAB
dsolve(ecuatie,cond_la_lim_1,con_la_lim_2,variabila_indep_noua). De
exemplu, rezolvarea ecuaiilor difereniale: 1 ) 0 ( y , y
t 2 1
9 . 0
y
+

, respectiv
1 ) 0 ( y , y
x 2 1
9 . 0
y
+

, este similar, cu observaia c, n cel de-al doilea
caz, este necesar marcarea ca variabil independent, a variabilei x. Acest lucru se
va observa, n linia de comand, n irul parametrilor de intrare. Secvena
MATLAB, pentru rezolvarea acestor ecuaii difereniale, este:
syms x y t
y1=dsolve('Dy=-y*(0.9/(1+2*t))','y(0)=1')
y1 =
1/(1+2*t)^(9/20)
respectiv, pentru a doua ecuaie:
y2=dsolve('Dy=-y*(0.9/(1+2*x))','y(0)=1','x')
y2 =
53
MATLAB n ingineria mecanic
1/(1+2*x)^(9/20)
Rezolvarea ecuaiei a doua, fr a specifica faptul ca x este variabil
independent, are ca rezultat:
y3=dsolve('Dy=-y*(0.9/(1+2*x))','y(0)=1')
y3 =
exp(-9/10/(1+2*x)*t)
Folosind convenia de scriere comun, soluiile sunt: ( )
45 . 0
1
t 2 1 y

+ ;
( )
45 . 0
2
x 2 1 y

+ respectiv
t
x 2 1
9 . 0
3
e y

+

.
EXEMPLE DE UTILIZARE A OPERATORILOR
I FUNCIILOR MATLAB DE BAZ
1).-Calculul puterii unui numr:
S se calculeze: 3
4
1
5
8 4 3

+
n MATLAB, se folosete algoritmul:
E1=3^5-4^(1/4)+8^(-3)
ceea ce are ca rezultat:
E1 =
241.5877
2).-Calculul expresiilor cu numere iraionale
S se calculeze expresiile:
; 15 E
3
2
; 56 , 43 E
3

8
2
3
4
99 23
9 , 88
2
45 18 E
1
1
]
1

+
n MATLAB, se folosete algoritmul:
E2=15^(1/3) [Enter]
E2 =
54
MATLAB n ingineria mecanic
2.4662
E3=sqrt(43.56) [Enter]
E3 =
6.6000
E4=((18-45*(2/88.9))^(1/3)+sqrt(23))^2-99^(1/8) [Enter]
E4 =
52.4891
3).- Calculul expresiilor exponeniale i logaritmice
S se calculeze :
( )
4
4 8
3
7 6
3 5
5
3 90 log E ;
5
1
13 2002 lg E ;
2
3
9 ln E ; e E

,
_


,
_



1
]
1

4 3
2 1
9
e E
( )
8
4 12
55 _ 8 23 ln 34 14
11
3 12
: 3 2 1 E
3
125 log 3 5
5
10
5

'

1
1
]
1

+ +
n MATLAB, aceste expresii se calculeaz astfel:
E5=exp(5-sqrt(3))
E5 =
26.2574
E6=log(9-3/2)
E6 =
2.0149
E7=log10(2002^(1/3)-13*sqrt(1/5))
E7 =
0.8318
E8=(log(90-3^(1/4)))/(log(4))
E8 =
3.2353
55
MATLAB n ingineria mecanic
Pentru calculul expresiei
1
]
1

4 3
2 1
9
e E
, se procedeaz astfel :
-se introduce, de la tastatur:
x=[1,2;3,4];
-se determin valoarea expresiei, folosind funcia exp
E9=exp(x)
E9 =
2.7183 7.3891
20.0855 54.5982
O alt posibilitate de a calcula aceasta expresie este prin aplicarea direct a
funciei MATLAB exp(), matricei
1
]
1

4 3
2 1
:
E9=exp([1,2;3,4])
De observat c rezultatul este o matrice cu dou linii i dou coloane, exact
ca i exponentul.
Expresia E
10
se calculeaz astfel:
E10=(((1+2+3)/((12-3^5)/11)-(14+(34)^(1/5)
-log(23))^(1/3))*8^((log(125))/(log(5))))-sqrt(55)*(12-4^3)/(8)
E10 =
-1.2985e+003
OBSERVAII:
Pentru calculul expresiilor iraionale (radicali cu indice diferit de 2:
a
b

sau
a c
b
) se folosete algoritmul pentru calculul puterilor cu exponent
raional :
a
1
b
sau
a
c
b
;
Pentru calculul exponenialei (
x
e
) nu se folosete operatorul putere
(^);
Pentru calculul expresiilor logaritmice cu logaritmi n alt baz dect baza
natural ( ln x) sau 10 ( lg x ) se folosete formula de schimbare a bazei
logaritmului :
a log
b log
b log
c
c
a

56
MATLAB n ingineria mecanic
MATLAB dispune de o serie de combinaii, implicite, de taste pentru
crearea comenzilor rapide (conform tabelului):
TASTA COMBINAIA
DE TASTE
SEMNIFICAIA

Ctrl+p Readuce linia anterioar (prin acionarea repetata a tastei sgeat sus se
readuc toate liniile anterioare, n linia curent)

Ctrl+n Readuce linia urmtoare (prin acionarea repetat a tastei sgeat jos se
readuc toate liniile urmtoare, n linia curent)

Ctrl+b Salt la stnga cu un caracter

Ctrl+f Salt la dreapta cu un caracter


Ctrl+
Ctrl+r Salt la dreapta, peste un cuvnt
Ctrl+
Ctrl+l Salt la stnga, peste un cuvnt
Home Ctrl+a Salt la nceputul liniei de comand
End Ctrl+e Salt la sfritul liniei de comand
Esc Ctrl+u terge linia curent
Del Ctrl+d terge caracterul din dreapta cursorului
Backspace Ctrl+h terge caracterul din stnga cursorului
Ctrl+k terge de la cursor pn la sfritul liniei de comand curente.
APLICAII
S se introduc de la tastatur, urmtoarele matrici :
A=
1
]
1

3
4 3
2 1
B=
1
1
1
]
1

6
9 lg
9 18 lg 7 ln 2
5 ln
e
0
C=
1
1
1
]
1

3
2
1
D=
1
1
1
]
1


7 9 ln 3 5
5 6 2 3
1 0 2
3
4

S se scrie numrul :
123,456789012345678901
n formatele: scurt, lung, cu virgul mobil scurt = eng. scurt, cu
virgul mobil lung =eng. lung, raional, cu dou zecimale exacte.
57
MATLAB n ingineria mecanic
Fiind dat matricea :
1
1
1
1
1
1
]
1

,
_

2
1
12 ln
4
e
5
5 4 1 2002 log e
23 e
4
3
2 . 1 123 4 ln 2
A
4 ln
4
3
5 log
3 3
3
s se determine (n MATLAB) matricea format astfel:
A1-din elementele de pe poziiile: (1,5), (2,3), (2,5), (3,1), (3,3),
(3,5), aranjate n toate variantele posibile(2 linii / 3 coloane; 3
linii / 2 coloane; 1 linie / 6 coloane; 6 linii / 1 coloan);
A2-din elementele de pe liniile 1 i 3 coloanele 1, 3, 5;
A3-din elementele de pe diagonalele principale cu 3 elemente;
A4-din elementele de pe diagonalele secundare cu 2 elemente;
Se d matricea (scris conform conveniilor MATLAB):
M=[1,2,3,4,5,6,7,8,9,10;-1,2,3,-4,5,-6,7,-8,9,-10;0,2,0,4,0,6,0,8,0,10;...
-1,2,-3,4,-5,6,-7,8,-9,10;1,2,3,0,0,0,7,8,9,10;10,9,8,7,6,5,4,3,2,1]
se cere s se determine (n MATLAB) matricile formate astfel:
Elementele liniilor 1, 2, 4 i coloanelor 3, 5, 10;
Elementele tuturor liniilor matricei M i coloanele 1, 2, 3, 6, 8, 9,10;
Elementele liniilor 1, 2, 3, 5, 6 i coloanelor 1, 3, 5, 7, 9;
Elementele liniilor 1, 3, 6 i coloanelor 10, 3, 2, 1 (n aceast ordine)
Elementele liniilor 6, 5, 4, 3, 2, 1 i coloanele 10, 9, 8, , 2, 1 (n aceast
ordine)
S se calculeze valoarea expresiei E:
23 lg 23 x ln 2 x
8 3
6 ln 15 e
E
2
6 3
8 lg
+

,
_

, pentru x= ( ) 16 e log
5 ln 3
3
+

.
CAPITOLUL II
58
MATLAB n ingineria mecanic
OPERAIILE ARITMETICE CU MATRICI
n MATLAB operaiile aritmetice cu matrici (considerm matricile date A
i B) au urmtoarea sintax:
A+B -adunare
A - B -scdere
A*B -nmulire
A/B -mprire la dreapta
A\B -mprire la stnga
A^B -ridicare la putere
A' -transpunere
iar, operaiile aritmetice cu tablouri de valori (considerm tablourile de valori A i
B) au urmtoarea sintax:
A.*B -nmulire
A./B -mprire la dreapta
A.\B -mprire la stnga
A.^B -ridicare la putere
A.' -transpunere
Versiunea MATLAB 6 dispune de funcii specifice pentru realizarea
operaiilor aritmetice cu matrici, respectiv, cu tablouri de valori:
a)-Funcii MATLAB specifice operaiilor cu matrici
A+B - plus(A,B)
A - B - minus(A,B)
A*B - mtimes(A,B)
A/B - mrdivide(A,B)
A\B - mldivide(A,B)
A^B - mpower(A,B)
A' - ctranspose(A)
b)- Funcii MATLAB specifice operaiilor cu tablouri de valori
A.*B - times(A,B)
A./B - rdivide(A,B)
A.\B - ldivide(A,B)
59
MATLAB n ingineria mecanic
A.^B - power(A,B)
A.' - transpose(A)
ADUNAREA I SCDEREA MATRICILOR
Aceste operaii se pot realiza dac este respectat condiia ca matricile s
aib aceeai dimensiune (exclus cazul n care se dorete adunarea sau scderea
dintre o matrice i un scalar, unde MATLAB realizeaz operaia n modul urmtor:
scalarul este adunat fiecrui element al matricei, fiind respectat regula de baz, din
algebra elementar, n acest caz).
Ex.:
Fie: a=
1
]
1

4 3
2 1
; b=
1
]
1

8 7
6 5
; c=2.
S se calculeze:a+b; a-b;a+c.
Rezolvare:Cu secvena MATLAB urmtoare, rezult:
a=[1,2;3,4];b=[5,6;7,8];c=2;
a1=a+b [Enter]
a1 =
6 8
10 12
a2=a-b [Enter]
a2 =
-4 -4
-4 -4
a3=a+c [Enter]
a3 =
3 4
5 6
Ex.:
Fie: m=
1
]
1

4 3
2 1
; n=
1
1
]
1

e 1 7 ln e
4 2
8 lg
3
S se calculeze: M=m+n
60
MATLAB n ingineria mecanic
Rezolvare: Cu secvena MATLAB
m=[1,2;3,4];n=[pi,sqrt(2),4^(1/3);exp(log10(8)),log(7),1-exp(1)] ;
M=m+n
Rezultatul afiat de MATLAB este:
??? Error using ==> +
Matrix dimensions must agree.
(Eroare la utilizarea operatorului ==> +
Dimensiunile matricelor trebuie s fie identice)
n MATLAB, versiunea 6 este posibil adunarea unor matrici ale cror
elemente sunt caractere alfanumerice, declarate ca simboluri. De exemplu, fie dou
matrici :
1
1
1
]
1

33 32 31
23 22 21
13 12 11
a a a
a a a
a a a
A i
1
1
1
]
1

33 32 31
23 22 21
13 12 11
b b b
b b b
b b b
B . Pentru a se calcula
suma X=B+A, se declar elementele matricelor, ca simboluri literale:
syms a11 a12 a13 a21 a22 a23 a31 a32 a33 b11 b12 b13 b21
b22 b23 b31 b32 b33;
apoi se declar matricele A, respectiv B:
A = [a11 a12 a13; a21 a22 a23; a31 a32 a33]
A =
[ a11, a12, a13]
[ a21, a22, a23]
[ a31, a32, a33]
B=[b11 b12 b13; b21 b22 b23; b31 b32 b33]
B =
[ b11, b12, b13]
[ b21, b22, b23]
[ b31, b32, b33]
Cu secvena MATLAB urmtoare se determin matricea X:
X=A+B
X =
[ a11+b11, a12+b12, a13+b13]
[ a21+b21, a22+b22, a23+b23]
[ a31+b31, a32+b32, a33+b33]
Not: De observat modul de afiare a matricilor simbolice: fiecare linie
este ncadrat ntre paranteze drepte.
61
MATLAB n ingineria mecanic
PRODUSUL VECTORIAL I
PRODUSUL SCALAR AL DOI VECTORI
Produsul vectorilor (matrici cu o singura linie, respectiv o singur
coloan), este definit diferit dect pentru matrici. Astfel doi vectori (a, b), avnd
aceeai lungime, se pot inmuli n orice ordine : a*b, respectiv b*a. De exemplu,
considernd doi vectori dai prin componente :
a=[1;2;3]
a =
1
2
3
b=[5,6,7]
b =
5 6 7
produsul vectorial al acestora este :
prod_vect=a*b
prod_vect =
5 6 7
10 12 14
15 18 21
iar produsul scalar al celor doi vectori este :
prod_scalar=b*a
prod_scalar =
38
Dac vectorii (a, b) sunt dai simbolic:
syms a11 a21 a31 b11 b12 b13
a_simbolic=[a11 ;a21; a31]
a_simbolic =
[ a11]
[ a21]
[ a31]
b_simbolic=[b11,b12,b13]
b_simbolic =
62
MATLAB n ingineria mecanic
[ b11, b12, b13]
atunci produsul vectorial, respectiv produsul scalar, al celor doi vectori sunt:
prod_vect_simbolic=a_simbolic*b_simbolic
prod_vect_simbolic =
[ a11*b11, a11*b12, a11*b13]
[ a21*b11, a21*b12, a21*b13]
[ a31*b11, a31*b12, a31*b13]
prod_scalar_simbolic=b_simbolic*a_simbolic
prod_scalar_simbolic =
a11*b11+a21*b12+a31*b13
PRODUSUL MATRICILOR
Produsul a dou matrici se simbolizeaz cu caracterul * (tastele Shift
+ 8 de pe tastatura literal, apsate simultan, sau caracterul corespunztor de pe
tastatura numeric).
Pentru ca produsul a dou matrici s se poat realiza este necesar a se
ndeplini urmtoarea condiie esenial: numrul de coloane ale primei matrici s
fie egal cu numrul de linii ale celei de-a doua matrici. Astfel, dac se nmulesc
dou matrici a(m,n) i b(n,p) se obine o matrice c(m,p), aceast regul aplicndu-
se i n cazul nmulirii unei matrici cu un vector-linie sau vector-coloan).
Ex.:
Fie:
1
1
1
1
]
1

i
8 5
4 3
2 1
a
;
1
1
]
1

6 1 0 9 8
7 i 2 1 i 2 3 3
b
; c=2.
S se calculeze produsele : ab; ba; ac; bc.
Rezolvare:Cu secvena MATLAB urmtoare, rezult:
a=[1,2;3,4;5,sqrt(8);i,pi];b=[sqrt(3),-3,2*i,1-2*i,7;8,9,0,1,6];c=2;
a1=a*b [Enter]
a1 =
17.7321 15 2i 3 - 2i 19
37.1962 27 6i 7 - 6i 45
31.2877 10.4558 10i 7.8284 -10i 51.9706
25.1327+1.7321i 28.2743-3i -2 5.1416+i 18.8496+7i
a2=b*a [Enter]
??? Error using
Inner matrix dimensions must agree.
63
MATLAB n ingineria mecanic
Eroare la utilizarea operatorului *
Matricile trebuie s respecte condiia dimensional
a3=a*c [Enter]
a3 =
2.0000 4.0000
6.0000 8.0000
10.0000 5.6569
0 + 2.0000i 6.2832

a4=b*c [Enter]
a4 =
3.4641 -6 4i 2 - 4i 14
16.0000 18 0 2 12

Observaie: n cazul produsului a2=b*a, MATLAB afieaz
mesajul:
??? Error using ==> *
Inner matrix dimensions must agree.
(ntruct dimensiunile matricelor implicate n
produs nu respect condiia impus !
nmulirea a dou matrici simbolice,
1
1
1
]
1

33 32 31
23 22 21
13 12 11
a a a
a a a
a a a
A i
1
1
1
]
1

33 32 31
23 22 21
13 12 11
b b b
b b b
b b b
B ., se realizeaz astfel:
-se declar elementele matricelor, ca simboluri:
syms a11 a12 a13 a21 a22 a23 a31 a32 a33 b11 b12 b13 b21 b22 b23
b31 b32 b33;
se declar matricele A, respectiv B:
A = [a11 a12 a13; a21 a22 a23; a31 a32 a33]
A =
64
MATLAB n ingineria mecanic
[ a11, a12, a13]
[ a21, a22, a23]
[ a31, a32, a33]
B=[b11 b12 b13; b21 b22 b23; b31 b32 b33]
B =
[ b11, b12, b13]
[ b21, b22, b23]
[ b31, b32, b33]
Cu secvena MATLAB urmtoare se determin matricea-produs X=A*B:
X=A*B
X=
[a11*b11+b21*a12+a13*b31,b12*a11+a12*b22+a13*b32,b13*a11+b23*a12+a13*b33]
[a21*b11+b21*a22+a23*b31,b12*a21+a22*b22+a23*b32,b13*a21+b23*a22+a23*b33]
[a31*b11+b21*a32+a33*b31,b12*a31+a32*b22+a33*b32,b13*a31+b23*a32+a33*b33]
MPRIREA LA DREAPTA
mprirea la dreapta este simbolizat cu operatorul / (slash), i este
realizabil numai dac inversa celei de- a doua matrici exist (determinantul
acesteia este nenul) i aceast invers respect condiia impus nmulirii
matricelor. Astfel, dac se mpart dou matrici a(i,j) i b(m,m) este necesar ca b
-1
s existe i dimensiunea acesteia s respecte condiia m==j. mparirea la dreapta, a
dou matrici, const, de fapt, n rezolvarea ecuaiei X*a=b.
Not :Se cunoate faptul c o matrice admite invers numai dac
aceasta este ptratic i determinantul este nenul.
Ex.:
Fie: a=
1
]
1

4 3
2 1
; b=
1
]
1

8 7
6 5
;
S se calculeze:a/b; b/a.
Cu secvena MATLAB urmtoare, rezult:
a=[1,2;3,4];b=[5,6;7,8];
a1=a/b [Enter]
a1 =
3.0000 -2.0000
65
MATLAB n ingineria mecanic
2.0000 -1.0000
a2=b/a [Enter]
a2 =
-1 2
-2 3
Exemplu (produsul matricilor cu dimensiuni ne-adecvate):
Fie: a=
1
]
1

4 3
2 1
; b=
1
1
]
1


6 1 0 9 8
7 i 2 1 i 2 3 3
.
S se calculeze ctul : d=a/b.
Cu secvena MATLAB urmtoare, rezult:
a=[1,2;3,4] ; b=[sqrt(3),-3,2*i,1-2*i,7;8,9,0,1,6] ;
d=a/b [Enter]
MATLAB va afia urmtorul rspuns:
??? Error using ==> /
Matrix dimensions must agree.
???Eroare la utilizarea operatorului /
Dimensiunile matricilor trebuie sa fie adecvate
Pentru mparirea la dreapta, a dou matrici simbolice,
1
]
1

22 21
12 11
a a
a a
A
i
[ ]
2 1
b b B , se procedeaz astfel:
se declar elementele matricelor, ca simboluri literale
syms a11 a12 a21 a22 b1 b2;
se declar matricile A, respectiv B:
A = [a11 a12; a21 a22]
A =
[ a11, a12]
[ a21, a22]
B=[b1 b2]
B =
66
MATLAB n ingineria mecanic
[ b1 b2]
Cu secvena,MATLAB, urmtoare se determin matricea- X=B/A:
X=B/A
X =
[ -(a21*b2-b1*a22)/(a11*a22-a12*a21), (a11*b2-a12*b1)/(a11*a22-a12*a21)]
Soluiile sistemului de ecuaii:

'

+
+
1 22 2 21 1
1 12 2 11 1
b a x a x
b a x a x
se obin cu
urmtoarele comenzi
x1 = X(1)
x1 =
-(a21*b2-b1*a22)/(a11*a22-a12*a21)
x2 = X(2)
x2 =
(a11*b2-a12*b1)/(a11*a22-a12*a21)

MPRIREA LA STNGA
Operaia de mprire la stnga este simbolizat cu operatorul \
(backslash), reprezentnd, n termeni aritmetici, produsul dintre inversa primei
matrici i cea de-a doua matrice. Astfel, condiia necesar (dar nu suficient) pentru
ca o matrice A s se mpart la stnga prin matricea B, este ca matricea A s
admit invers i n plus aceast invers trebuie s ndeplineasc i condiia
necesar ca dou matrici s se poat nmuli. Ca o concluzie, se va ncerca
mprirea la stnga, sau la dreapta, a dou matrici, numai n cazul n care cele dou
matrici sunt ptratice, i dac matricea, la care se mparte, este nesingular,
condiia pentru nmulire s fie ndeplinit (numrul de coloane ale primei matrici
egal cu numrul de linii ale celei de-a doua matrici ).
Ex.6:
Fie: A=
1
]
1

4 3
2 1
; B=
1
]
1

8 7
6 5
;
S se calculeze:A\B; B\A.
Cu secvena MATLAB urmtoare, rezult:
67
MATLAB n ingineria mecanic
A=[1,2;3,4];b=[5,6;7,8];
A1=A\B [Enter]
A1 =
-3.0000 -4.0000
4.0000 5.0000
A2=B\A [Enter]
A2 =
5.0000 4.0000
-4.0000 -3.0000
n MATLAB (versiuni superioare versiunii 5.3) este posibil mprirea
unor matrici ale cror elemente sunt caractere alfanumerice, declarate ca simboluri.
De exemplu, fie dou matrici, A i B, ale cror elemente sunt date simbolic
A
(2x2)
=[a
ij
], B
(2x3)
=[b
ik
]:
1
]
1

22 21
12 11
a a
a a
A
i
1
]
1

23 22 21
13 12 11
b b b
b b b
B
. Se cere
matricea X=B/A.
Cu secvena MATLAB urmtoare se determin matricea X, ca fiind ctul simbolic
al matricilor A i B:
syms a11 a12 a21 a22 b11 b12 b13 b21 b22 b23;
A = [a11 a12; a21 a22];
B = [b11 b12 b13;b21 b22 b23];
X = A\B
PRODUSUL KRONECKER
Produsul Kronecker este cea mai mare matrice format din toate produsele
posibile realizate ntre elementele a dou matrici (nu trebuie confundat Produsul
Kronecker cu simbolul Kronecker sau delta Kronecker, a crei exprimare este
dat de:

'


k i pentru 0
k i pentru 1
ik
). Aceast matrice este utilizat n calculul
tensorial, n teoria deformrii elastice, n teoria deformrii plastice, respectiv n
calculele aferente analizei cu elemente finite a proceselor de deformare plastic i
elasto-vsco-plastic a materialelor. Vectorii spaiali, definii pe spaiul cu trei
68
MATLAB n ingineria mecanic
dimensiuni
3

, reprezint mrimi reale, de exemplu mrimi fizice, care conin


trei informaii (trei scalari). Descrierea unui vector v n baze diferite a
i
i b
i
prin
coordonatele respective, nu schimb valoarea sa intrinsec (v se numete i mrime
invariant):
i
i
b i
i
a
b v a v v
Toate mrimile invariante se numesc tensori (un exemplu de tensor este
tensorul tensiunilor care, dat prin componente, se reprezint prin matricea
componentelor, ntr-un sistem de axe x, y, z:
1
1
1
]
1

z yz xz
yz y xy
xz xy x
T , acesta
caracteriznd starea de eforturi unitare, a unui punct situat pe o suprafa oarecare
a corpului supus aciunii unor fore exterioare). Un scalar este tensor, dac poate fi
scris ca produsul scalar uv a doi vectori:
( )
) vector ( 1 ordinul de tensor g T T
) scalar ( 0 ordinul de tensor v u T
i
i ) 1 (
0


,
unde
i
T
sunt coordonatele tensorului n raport cu baza g
i
.
Alte exemple de tensori i deviatori:
Tensorul sferic al tensiunilor:
[ ]
1
1
1
]
1

m
m
m
0 0
0 0
0 0
S ;
3
z y x
m
+ +
;
Deviatorul tensiunilor:
[ ]
1
1
1
1
]
1

m z y z x z
z y m y x y
z x y x m x
D
;
69
MATLAB n ingineria mecanic
[ ] [ ] [ ]

+ D S T
r
;
Invarianii eforturilor unitare:
z y x 1
+ +


x z
2
z y
2
2
y x x z z y y x 2

2
y x z
2
z x y
2
z y x x z z y y x z y x 3
2 +
care, n funcie de tensiunile normale principale
3 2 1
, ,
, sunt :
3 2 1 3
1 3 3 2 2 1 2
3 2 1 1

+ +
+ +
Tensorul deformaiilor specifice:
[ ]
1
1
1
1
1
1
]
1

z y z x z
z y y x y
z x y x x
2
1
2
1
2
1
2
1
2
1
2
1
T
Tensorul sferic al deformaiilor:
[ ]
1
1
1
]
1

m
m
m
0 0
0 0
0 0
S
;
3
z y x
m
+ +
;
Deviatorul deformaiilor specifice:
70
MATLAB n ingineria mecanic
[ ]
1
1
1
1
1
1
]
1

m z y z x z
z y m y x y
z x y x m x
2
1
2
1
2
1
2
1
2
1
2
1
D ;
Produsul Kronecker se realizeaz cu funcia MATLAB kron(X,Y),
rezultatul fiind obinut dup urmtoarea regul de calcul:
1
1
1
]
1

Y * ) n , m ( X Y * ) 2 , m ( X Y * ) 1 , m ( X
Y * ) n , 1 ( X Y * ) 2 , 1 ( X Y * ) 1 , 1 ( X

De exemplu, produsul Kronecker al dou matrici


1
]
1

6 5 4
3 2 1
X
,
1
]
1

4 3
2 1
Y
este:
X=[1,2,3;4,5,6]; Y=[1,2;3,4];
kron(X,Y)
ans =
1 2 2 4 3 6
3 4 6 8 9 12
4 8 5 10 6 12
12 16 15 20 18 24
kron(Y,X)
ans =
1 2 3 2 4 6
4 5 6 8 10 12
3 6 9 4 8 12
12 15 18 16 20 24
FUNCIA PUTERE ATAAT UNEI MATRICI
71
MATLAB n ingineria mecanic
Operaia de calcul a puterii unei matrici se simbolizeaz cu operatorul ^
(Shift + 6;):
A=b^c,
Puterea unei matrici (b
c
)se calculeaz ca produs repetat de c ori al matricei
b prin ea nsi:
b^c=b*b*b**b
de c ori
Dac b este un scalar iar c este o matrice atunci calculul puterii
c
b
se
realizeaz folosind valorile proprii ale matricei c respectiv ale scalarului b.
Obs. Operaia are sens numai dac matricea b este ptratic iar c
un scalar.
Ex.7:
Fie: a=
1
]
1

4 3
2 1
; b=3;c= - 3. S se calculeze:a^b; b^a; a^c
a=[1,2;3,4];b=3;c= -3;
a1=a^b [Enter]
a1 =
37 54
81 118
a2=b^a [Enter]
a2 =
87.8864 127.1198
190.6797 278.5661
a3=a^c [Enter]
a3 =
-14.7500 6.7500
10.1250 -4.6250
Trebuie observat faptul c a3=a^c, unde c este un scalar negativ, se
execut n urmtoarea ordine: se determin inversa matricei a dup care rezultatul
se ridic la puterea |c| (valoarea absolut a scalarului c).
72
MATLAB n ingineria mecanic
TRANSPUNEREA MATRICILOR
Transpusa unei matrici x(i, j) (i linii i j coloane), este matricea x1(j, i) (j
linii i i coloane), i se determin, n MATLAB, folosind, pentru simbolizarea ope-
raiei, caracterul apostrof : . De exemplu, pentru matricea x :
x=[1,2,3;4,5,6] ;
transpusa x1 este determinat Cu secvena MATLAB urmtoare, rezult:
x1=x [Enter]
x1 =
1 4
2 5
3 6
Determinantul unei matrici
Obs. Numai matricile ptratice permit calculul determinantului, n timp
ce, matricele cu numr de linii diferit de numrul de coloane, tablourile ,
permit doar calculul minorilor .
Calculul determinantului unei matrici se realizeaz cu funcia det( ) i se
apeleaz cu sintaxa:
D = det(X)
Ex:
S se calculeze determinanii urmtoarelor matrici:
1
]
1

4 3
2 1
A
1
1
1
]
1

9 8 7
6 5 4
3 2 1
B
1
1
]
1

6 1 0 9 8
7 i 2 1 i 2 3 3
C
.
Cu secvena MATLAB urmtoare, rezult:
A= [1,2;3,4];B=[1,2,3;4,5,6 ;7,8,9];C=[sqrt(3),-3,2*i,1-2*i,7;8,9,0,1,6];
A1 = det(A)
A1 = -2;
B1 = det(B)
B1 = 0
C1 = det(C)
73
MATLAB n ingineria mecanic
n cazul C1 = det(C), MATLAB returneaz urmtorul mesaj de eroare (datorat
dimensiunii matricei C):
??? Error using ==> det
Matrix must be square.
??? Eroare la utilizarea funciei det ()
Matricea trebuie s fie ptratic
n MATLAB(versiunile superioare versiunii 5.3), este disponibil calculul
determinantului unei matrici ale crei elemente sunt simboluri literale declarate cu
funcia syms. De exemplu, pentru calculul determinantului matricei
1
]
1

d c
b a
D

se poate utiliza urmtoarea secven :
syms a b c d;
D1= det([a, b; c, d])
care returneaz urmtoarea valoare:
D1= a*d - b*c
Similar este cazul matricei
1
]
1

1 1
3 / 1 3 / 2
A
, unde se poate utiliza
urmtoarea secven:
A = sym([2/3 1/3;1 1])
A =
[ 2/3, 1/3]
[ 1, 1]
r = det(A)
r = 1/3
Obs : Determinantul unei matrici este utilizabil n consideraii
teoretice i n anumite tipuri de calcule simbolice, dar este, datorit
scalrii i erorilor de aproximare, mai puin utilizabil n calcule
numerice.
CALCULUL INVERSEI
74
MATLAB n ingineria mecanic
Dac o matrice A este ptratic i nesingular (determinantul matricei este
nenul), ecuaiile AX = I i XA = I (matricea I fiind matricea unitate) au aceeai
soluie, X. Aceast soluie se numete inversa matricei A, se noteaz cu A
-1
i se
calculeaz folosind funcia MATLAB inv(A). Dac matricea A este ptratic i
nesingular, atunci, fr a considera erorile de aproximare, X = inv(A)*B ar trebui
sa fie, cel putin teoretic, identic cu X = A\B iar, Y = B*inv(A) s fie identic cu Y
= B/A. Utilizarea operatorilor aritmetici mprire la stnga i mprire la
dreapta este preferat utilizrii inversei matricei, datorit timpului de calcul mai
redus, a. volumului de memorie cerut i a unor proprieti de detecie a erorilor
mai bune. Prin definiie, inversa unei matrici ptratice A(i,i), este matriea A
-1
, care
satisface relaia:( A)*(A
-1
)=I, unde I este matricea unitate (matricea cu elementele
de pe diagonala principal egale cu unitatea, respectiv celelalte elemente egale cu
zero). Inversa unei matrici se calculeaz cu funcia MATLAB inv (), i se apeleaz
cu sintaxa:
Y = inv(X)
Funcia se utilizeaz frecvent pentru rezolvarea sistemelor de ecuaii liniare
A*X=B, sau X*A=B soluia sistemului este X=inv(A)*B, respectiv X=B*inv(A).
Ex . :
Se cere inversa matricei: A =
1
]
1

1 1
1 2
.
Cu secvena MATLAB urmtoare, rezult:
A = [2, 1 ; -1, 1] ;
B = inv(A)
B=
0.3333 -0.3333
0.3333 0.6667
PSEUDO- INVERSA
Matricile rectangulare (tablourile de valori), nu admit inverse i nici
calculul determinanilor. Pentru acest tip de matrici se poate utiliza pseudo- inversa
Moore-Penrose, care se calculeaz cu funcia pinv(). De exemplu, pentru matricea
1
1
1
]
1

7 6
8 2
4 9
C
se va calcula pseudoinversa cu urmtoarea secven MATLAB :
75
MATLAB n ingineria mecanic
C=[9,4;2,8;6,7] ;
P=pinv(C)
P =
0.1159 -0.0729 0.0171
-0.0534 0.1152 0.0418
Printr-un calcul simplu se poate observa c produsul P*C reprezint
matricea unitate de ordinul doi:
I=P*C
I=
1.0000 0.0000
0.0000 1.0000
n timp ce, produsul C*P este o matrice de ordinul 3x3, dar nu matricea unitate :
Q=C*P
Q=
0.8293 -0.1958 0.3213
-0.1958 0.7754 0.3685
0.3213 0.3685 0.3952
RANGUL MATRICEI
O matrice X (m,n), nenul, are rangul k, dac matricea X are un
determinant minor , de ordin k, nenul, iar toi minorii de ordin mai mare dect k
(dac exist) sunt nuli. Rangul unei matrici este, prin urmare, un scalar 1 k
min(m,n).Rangul unei matrici reprezint numrul de linii sau coloane liniar
independente, i se determin cu funcia rank( ). Se apeleaz cu una dintre
sintaxele:
r = rank (X) r = rank (X, tol)
Funcia rank, apelat cu sintaxa r = rank (X, tol), returneaz numrul de
valori singulare ale lui X, mai mari dect parametrul opional tol.
Ex. :
76
MATLAB n ingineria mecanic
S se determine rangul matricei A =
1
1
1
]
1

11 13 5 3
3 3 1 3
4 5 2 3
.
Din algebra elementar se cunoate c ntruct toi minorii de ordinul al
treilea ai matricei A sunt nuli:
13 5 3
3 1 3
5 2 3

=
11 13 3
3 3 3
4 5 3

=
11 5 3
3 1 3
4 2 3

=
11 13 5
3 3 1
4 5 2

= 0
i, deoarece, exist minori de ordinul al doilea nenuli, de exemplu
1 3
2 3

=-
90, rezult c rangul matricei A este: rang A = 2
Acest rezultat se obine Cu secvena MATLAB urmtoare, rezult:
A = [3,2,-5,4;3,-1,3,-3;3,5,-13,11];
k = rank(A)
k =
2
CONDIIONAREA UNEI MATRICI
Importana cunoaterii condiionrii unei matrici decurge din faptul c
rezultatele obinute prin calcul numeric corespund ntotdeauna unei probleme
perturbate, aceasta datorndu-se, n special erorilor de rotunjire, a calculelor cu
precizie ridicat, respectiv, se datoreaz sensibilitii preciziei de calcul n timpul
rezolvrii sistemelor liniare. Determinarea condiionrii are la baz teoria
matematic a perturbaiilor. Se spune c o funcie f(x) este ru- condiionat dac
pentru un x
1
"apropiat" de x, funcia f(x
1
) difer "mult" de f(x). Altfel, o funcie se
spune c este bine condiionat dac pentru un x
1
"apropiat" de x, funcia f(x
1
) este
"apropiat" de f(x). Trebuie remarcat c termenii "apropiat" i "mult" sunt vagi,
motiv pentru care este necesar utilizarea numerelor de condiionare.
Numrul de condiionare indic sensibilitatea soluiei unui sistem de
ecuaii liniare fa de perturbaiile generate de calculele cu coeficienii ecuaiilor
(calculul inversei matricei coeficienilor necunoscutelor, de exemplu), i d
indicaii asupra preciziei rezultatelor la inversarea matricelor i rezolvarea
77
MATLAB n ingineria mecanic
ecuaiilor liniare. O matrice bine-condiionat este o matrice relativ insensibil la
mici perturbaii.
Pentru un sistem de ecuaii liniare Ax=B, dac matricea A este cunoscut i
nu este afectat de erori, dar vectorul B, este afectat, atunci, considernd o
perturbare a acestuia evaluat la mrimea B (vectorul perturbaiilor), vectorul
soluie x devine x x + , iar sistemul perturbat este :
( ) B B x x A + +
, sau
B A x
1


, deci
B A x
1


Egalitatea din ultima relaie, se obine numai pentru anumii vectori B . Aplicnd
norma ambilor membri ai egalitii Ax=B, se obine :
x A B
,
i, folosind cteva calcule simple de nmulire i identificare, se obine
(presupunnd c 0 B ) :
B
B
A A
x
x
1 -

n care A
-1
este matricea invers a lui A, obinut prin calcule (afectate de erori de
rotunjire, adic
I AA
-1

). Astfel, pentru o matrice nesingular A, pozitiv


definit, se definete numrul de condiionare calculat ca raportul dintre cea mai
mare i cea mai mic valoare proprie a acesteia :
1 A A ) A .( cond
2
1 1 -


n aceste condiii, relaia de estimare a erorii soluiei devine :
B
B
) A .( cond
x
x

n care
B
B
msoar incertitudinea relativ existent n vectorul B (de exemplu,
dac elementele vectorului B sunt date cu trei cifre semnificative, atunci
B
B

78
MATLAB n ingineria mecanic
este de ordinul 10
-3
sau 10
-4
), iar
x
x
reprezint incertitudinea relativ existent
n vectorul x, i este determinat de incertitudinea existent n vectorul B.
Dac, att matricea A ct i vectorul B sunt afectati de erori, atunci
sistemul se scrie sub forma :
( )( ) B B x x A A + + +
( ) ( ) Ax B A A x
1
+

Dac vectorul termenilor liberi este determinat exact i neafectat de erori,
iar matricea A are coeficieni perturbai de erori, atunci sistemul Ax=B devine :
( )( ) B x x A A + +
,
de unde rezult :
( ) ( ) B A A x x
1
+ + sau ( ) [ ]B A A A x
1 1
+
Ultima relaie, aranjat, devine :
( )( ) x x A A x
1
+

,
pentru care, dac se aplic norma, se obine :
x x A A x
-1
+
sau
( )
A
A
A cond.
x x
x

Din aceast relaie se observ c incertitudinea din vectorul soluie x,


relativ la x x + , este mrginit de incertitudinea relativ a matricei A, nmulit
cu numrul de condiionare al matricei A.
n concluzie, dac numrul de condiionare cond(A) este mare, atunci
perturbaiile mici introduse de A i/sau B pot introduce perturbaii mari n x
(problema liniar este slab condiionat, adic soluiile sistemului de ecuaii sunt
foarte evident influenate de erorile de calcul ale matricei A, respectiv de datele
masurate, adic elementele vectorului B). Dac numrul de condiionare cond(A)
este mic, atunci perturbaii reduse introduse de A i/sau B pot induce perturbaii
mici n vectorul soluiei x (problema liniar este bine condiionat, adic soluiile
sistemului de ecuaii sunt neinfluenate de erorile de calcul ale matricei A). Aceste
elemente servesc la corectarea soluiei obinute din calcul, la alegerea metodei de
calcul (innd seama de numrul i ordinea operaiilor de executat), la modul de
reprezentare a informaiei numerice n calculator (n virgul mobil, virgul fix
79
MATLAB n ingineria mecanic
sau zecimal), la tipul de aritmetic cerut n programul de calcul, precum i la
precizia impus calculelor.

Numrul de condiionare se determin, n MATLAB, cu funcia cond() i
se apeleaz cu sintaxa:
cond(X)
O funcie mai performant care permite calculul numrului de condiionare
este rcond() i se apeleaz cu sintaxa:
rcond(X)
Funcia MATLAB rcond(X) returneaz estimarea numrului de
condiionare al unei matrici X, determinat prin subrutinele LAPACK- Linear
Algebra PACKage (exemple de subrutine de tip LAPACK : DLANGE, DGETRF,
DGECON, dac matricea este real, respectiv ZLANGE, ZGETRF, ZGECON,
dac matricea este complex), care reprezint o bibliotec de subrutine FORTRAN,
utilizate de MATLAB pentru rezolvarea problemelor de algebr linear. n
completare la LAPACK, MATLAB utilizeaz i subrutinele BLAS- Basic Linear
Algebra Subroutines, care au i rolul de a amplifica viteza de calcul i manevrare a
matricilor mari, respectiv ale subrutinelor LAPACK. Funciile LAPACK sau
BLAS pot fi apelate prin fiiere MEX ale utilizatorului.
Dac matricea X este bine condiionat, rcond are valoarea aproximativ
1.0, iar dac este slab condiionat, atunci rcond este aproximativ 0,0.
Estimarea celui mai mic numr de condiionare se face cu funcia
condest(), i se apeleaz cu sintaxa:
condest(X)
Ex.:
Calculai numerele de condiionare pentru sistemul iniial de ecuaii:
i pentru sistemul "perturbat":
80
MATLAB n ingineria mecanic
n MATLAB:
-matricea sistemului iniial:
A1=[6 6.917;1 1.152];
matricea sistemului perturbat :
A2=[6 6.912;1 1.152];
-numerele de condiionare :
C1=cond(A1); c2=cond(A2)
C1=1.7234e+004 c2=inf
D1=condest(A1); d2=condest(A2)
D1=2,0845e+004 d2=2.7129e+017
R1=rcond(A1); r2=rcond(A2);
R1=5.4453e-005 r2=4.1842-018
De aici, rezult c sistemul este slab condiionat. Acest lucru se
verific i prin rezolvarea celor dou sisteme, cu valori "apropiate" ale
coeficienilor (pentru care exist diferen la a patra cifr) :
A1=[6 6.917;1 1.152];
A2=[6 6.912;1 1.152];
B=[6.543; 1.095];
X1=A1\B
X1=[ 7.3158 -5.4000]
X2=A2\B
X2=[-8.1041 7.0348]*1.0e+013
Condiionarea slab a matricei se reflect n diferenele foarte mari ale
soluiilor: de exemplu, prima soluie, pentru sistemul ne-perturbat, este x
1
=7,3158,
n timp ce pentru sistemulperturbat, soluia x
1
= - 8,1041 10
13
.
Ex.:
Se vor determina numerele de condiionare pentru sistemul iniial de ecuaii:
81
MATLAB n ingineria mecanic

'

+
+
45 , 3 x 15 x
34 , 2 x 123 , 23 x 45
2 1
2 1
respectiv pentru sistemul "perturbat":

'

+
+
45 , 3 x 15 x
34 , 2 x 124 , 23 x 45
2 1
2 1
n Matlab, problema se rezolv cu urmtoarea secven:
a=[45,23.123;1,15]; a1=[45,23.124;1,15];
d=condest(a)
d =
4.8071
d1=condest(a1)
d1 =
4.8072
r1=rcond(a)
r1 =
0.2435
r2=rcond(a1)
r2 =
0.2434
Se poate, observa c sistemul este bine condiionat, rezistent la
perturbaii, iar numerele de condiionare reflect acest lucru, prin valorile
apropiate, pn la cifra zecimal de ordinul patru. Rezolvnd sistemul de ecuaii, n
cele dou variante, se obin vectorii x1, respectiv x2:
b=[2.34;3.45];
x1=a\b
x1 =
-0.0685
0.2346
x2=a1\b
x2 =
-0.0685
82
MATLAB n ingineria mecanic
0.2346
Dup rezolvarea sistemelor de ecuaii (iniial i perturbat), s-a obinut, practic,
aceeai soluie.
FACTORIZAREA MATRICILOR
Factorizarea reprezint operaia de trecere de la o mulime la mulimea
claselor de echivalen, n raport cu o relaie de echivalen dat. Factorizarea se
aplic, la rezolvarea sistemelor de ecuaii liniare. In esen, factorizarea este o
procedur de transformare a unei matrici, n general ptratice, ntr-o matrice
superior triunghiular (elementele superioare diagonalei principale sunt diferite de
zero, n timp ce, elementele inferioare acesteia sunt toate egale cu zero) sau una
inferior triunghiular (elementele inferioare diagonalei principale sunt diferite de
zero, n timp ce, elementele superioare acesteia sunt toate egale cu zero). Metodele
directe pentru rezolvarea sistemelor (de forma Ax=B), cele mai utilizate, sunt
metodele bazate pe procesul de eliminare sau descompunerea matricei
coeficienilor (matricea A). Astfel, pentru un sistem Ax=B:

'

+ + +
+ + +
+ + +
n n nn 2 2 n 1 1 n
2 n n 2 2 22 1 21
1 n n 1 2 12 1 11
b x a x a x a
b x a x a x a
b x a x a x a

, n care
1
1
1
1
]
1

nn 2 n 1 n
n 2 22 21
n 1 12 11
a a a
a a a
a a a
A

, este
matricea coeficienilor;
1
1
1
1
]
1

n
2
1
x
x
x
x

este vectorul necunoscutelor;


1
1
1
1
]
1

n
2
1
b
b
b
B

este
vectorul termenilor liberi, ai sistemului, metoda general de transformare ntr-un
sistem echivalent, Metoda de eliminare a lui Gauss, se prezint n continuare.
Prima transformare aplicat sistemului Ax=B, are ca efect eliminarea
necunoscutei x
1
din celelalte n-1 ecuaii, adunnd prima ecuaie la urmtoarele n-1,
83
MATLAB n ingineria mecanic
nmulit cu
( )
( )

,
_


1
11
1
1 i
a
a
, obinndu-se un nou sistem de ecuaii:
( ) ( ) 1 1
B x A
. n a
doua transformare, se folosete a doua ecuaie, din sistemul
( ) ( ) 1 1
B x A
, nmulit
cu
( )
( )

,
_


2
22
2
2 i
a
a
, pentru eliminarea necunoscutei x
2
din ultimele n-2 ecuaii ale acestui
sistem, obinndu-se un nou sistem:
( ) ( ) 2 2
B x A
. Se observ c nainte de
eliminarea necunoscutei x
k
, sistemul echivalent, obinut dup eliminarea
necunoscutelor x
1
, x
2
, , x
k-1
, poate fi scris sub forma:
( ) ( ) k k
B x A
, k=1,2, , n
a crui descriere analitic este:
( ) ( )
( )
k k
j , i
a A
,
( )
( )
( )
( )
1
1
1
1
1
]
1

k
n
k
2
k
1
k
b
b
b
B

, iar elementele matricei


( ) k
A
sunt:
( )
( )
( )
( )
( )
( )

'

k j k, i , a
a
a
a
1 - k j k, i , 0
1 k i , a
a
1 k
j , 1 k
1 k
1 k , 1 k
1 k
1 k , i 1 k
j , i
1 k
j , i
k
j , i
, respectiv, elementele
vectorului
( ) k
B
, se calculeaz cu relaiile:
( )
( )
( )
( )
( )
( )

'

k i , b
a
a
b
1 k i , b
b
1 k
1 k
1 k
1 k , 1 k
1 k
1 k , i
1 k
i
1 k
i
k
i
Pentru k=n, sistemul nou obinut este:
84
MATLAB n ingineria mecanic
( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( )
( ) ( )

'

+ +
+ + + +
+ + + + +
n
n n
n
nn
k
k n
k
kn k
k
kk
2
2 n
2
n 2 k
2
k 2 2
2
22
1
1 n
1
n 1 k
1
k 1 2
1
12 1
1
11
b x a

b x a x a

b x a x a x a
b x a x a x a x a



Aceast metod presupune realizarea unui numr mare de operaii de
nmulire, respectiv de mprire sau pentru aflarea necunoscutelor, dar nu este
folosit o mare parte a memoriei calculatorului pentru aceste calcule.
Se cunoate c o matrice
nxn
A
poate fi scris sub forma uni produs
LU de dou matrice, unde matricea L este inferior triunghiular i U superior
triunghiular, dac
[ ] [ ] 0 A det , , 0
a a
a a
det , 0 a det
22 21
12 11
11

1
]
1


.
Descompunerea este unic dac elementele matricei L sau U, de pe diagonala
principal sunt specificate astfel:
1
1
1
1
1
1
]
1

1
1
1
1
1
1
]
1

1
1
1
1
]
1


nn
n 3 33
n 2 23 22
n 1 13 12 11
1 n , n 2 n 1 n
32 31
21
nn 2 n 1 n
n 2 22 21
n 1 12 11
u 0 0 0 0
u u 0 0
u u u 0
u u u u

1 l l l
0 0 1 l l
0 0 0 1 l
0 0 0 0 1
a a a
a a a
a a a
LU A

Dac se relizeaz produsul dintre cele dou matrici L i U i se face


identificarea termenilor, se obin n
2
ecuaii neliniare cu n
2
necunoscute. Se observ
c :
n 1 1n 12 12 11 11
a u , , a u , a u
iar, dac se determin elementele primei coloane de sub diagonala principal, se
obin ecuaiile:
85
MATLAB n ingineria mecanic
1 n 11 n1 21 11 31 21 11 21
a s l , , a s l ; a s l
Forma general a ecuaiilor din care rezult elementele liniei k, din
matricea U, este:

+ + +

+ + +

+
+
+
1 k
1 j
jn kj kn kn
1 k
1 j
1 k , j kj 1 k , k 1 k , k
1 k
1 j
jk kj k , k k , k
1 k
1 j
kn kn jn kj
1 k
1 j
1 k , k 1 k , k 1 k , j kj
1 k
1 j
kk 1 k , k k , j kj
u l a u
u l a u
u l a u

a u u l
a u u l
a u u l

Elementele coloanei k a matricei L (inferioare diagonalei principale), sunt
date de ecuaiile:

,
_

,
_

,
_

+
+
+

+ + +

+ + +

+ + +

+ + +
1 k
1 j
jk j , n k , n
k , k
k , n
1 k
1 j
jk j , 2 k k , 2 k
k , k
k , 2 k
1 k
1 j
jk j , 1 k k , 1 k
k , k
k , 1 k
1 k
1 j
k , n k , k k , n k , j j , n
1 k
1 j
k , 2 k k , k k , 2 k k , j j , 2 k
1 k
1 j
k , 1 k k , k k , 1 k k , j j , 1 k
u l a
u
1
l
u l a
u
1
l
u l a
u
1
l

a u l u l
a u l u l
a u l u l

MATLAB folosete trei metode de baz, pentru factorizarea matricilor:


Factorizarea Cholesky-pentru matrici simetrice, pozitiv definite
Factorizarea Lower Upper (LU)-eliminarea Gauss, pentru matrici ptratice
Factorizarea ortogonal (QR)- pentru matrici rectangulare
Toate aceste metode de factorizare se apeleaz, n MATLAB, utiliznd
funciile specifice: chol(), lu() respectiv qr(). Caracteristica, valabil n toate
metodele, o constituie utilizarea matricei triunghiulare ale carei elemente, situate
86
MATLAB n ingineria mecanic
deasupra sau sub diagonala principal, sunt toate egale cu zero. Toate sistemele de
ecuaii liniare, care permit utilizarea matricilor triunghiulare (factorizri), se
rezolv uor folosind pre- sau post-substituia.
FACTORIZAREA CHOLESKY
Factorizarea Cholesky este o metod utilizat pentru rezolvarea unui
sistem de ecuaii liniare de forma: SX=B, unde S este o matrice pozitiv definit (o
matrice este pozitiv definit dac elementele diagonalei principale sunt toate
pozitive, iar celelalte elemente componente ale matricei nu sunt prea mari).
Reprezentarea schematic, a factorizrii Cholesky, este prezentat n figura
alturat, cu ajutorul blocurilor de calcul DSP (Digital Signal Processing),
proiectate, special pentru procesarea semnalelor digitale, pentru a fi folosite n
mediile de simulare dinamic n SIMULINK (versiunea MATLAB superioar
versiunii 5.3):
Prin factorizare Cholesky, o matrice S, simetric i pozitiv definit, se
exprim ca produsul dintre o matrice superior triunghiular, L (elementele
superioare diagonalei principale, sunt diferite cu zero), i transpusa acesteia, L:
S=L*L
Factorizarea Cholesky se realizeaz cu funcia MATLAB chol(), care se
apeleaz cu una din sintaxele :
87
MATLAB n ingineria mecanic
L=chol(S)
[L,P]=chol(S)
Pentru exemplificare, se va folosi ca matrice de intrare, matricea pascal
de ordinul 7:
S=pascal(7)
S =
1 1 1 1 1 1 1
1 2 3 4 5 6 7
1 3 6 10 15 21 28
1 4 10 20 35 56 84
1 5 15 35 70 126 210
1 6 21 56 126 252 462
1 7 28 84 210 462 924
L=chol(S)
L =
1 1 1 1 1 1 1
0 1 2 3 4 5 6
0 0 1 3 6 10 15
0 0 0 1 4 10 20
0 0 0 0 1 5 15
0 0 0 0 0 1 6
0 0 0 0 0 0 1
Condiiile pentru factorizarea Cholesky sunt:
i. Matricea S s fie pozitiv definit
II. S= (L
t
)* (L) i det(S)>0 (A
t
este notaia pentru
matricea transpus matricei A);
iii. Exist o matrice unic L, superior triunghiular,
nesingular, care satisface relaia:S=L
t
*L
Un sistem de ecuaii lineare SX=B devine:
R
t
RX=B
iar soluia acestuia presupune rezolvarea succesiv a sistemelor:

88
MATLAB n ingineria mecanic
R
t
Y=B i RX=Y.
ntruct, operatorul MATLAB mprire la stnga (backslash)
recunoate ca operanzi matricile triunghiulare, rezolvarea sistemelor de ecuaii
lineare se poate realiza folosind:
X=R\(R\B)
Ex.:
Fie sistemul de ecuaii:

'

+
+
+
1 x 7 x 5 x 2
2 x 5 x 8 x
1 x 2 x x 9
3 2 1
3 2 1
3 2 1
Soluiile acestui sistem, folosind factorizarea Cholesky, se gsesc prin
urmtoarea secven:
A=[9,-1,2;-1,8,-5;2,-5,7]; B=[1;-2;-1];
L=chol(A);
X=L\(L\B)
X =
0.1846
-0.6308
-0.6462
n Matlab (versiuni superioare versiunii 5.3) este posibil rezolvarea
sistemelor simetrice, prin metoda Cholesky, folosind Solver-ul Cholesky din
pachetul de programe DSP Blockset Simulink. De exemplu, pentru rezolvarea
sistemeului de ecuaii liniare dat prin:

'

+
+
+
1 x 7 x 5 x 2
2 x 5 x 8 x
1 x 2 x x 9
3 2 1
3 2 1
3 2 1
, se folosete
urmtorul model de rezolvare (solver):
89
MATLAB n ingineria mecanic
Ex.: Se cere factorul Cholesky al matricei:
1
1
1
1
]
1

9 1 1 0
1 9 0 1
1 0 9 1
0 1 1 9
A
Cu secvena MATLAB urmtoare, rezult:
A=[9,1,-1,0;1,9,0,-1;-1,0,9,-1;0,-1,1,9];
[r,p]=chol(A)
9618 , 2 0 0 0
3396 , 0 9812 , 2 0 0
3354 , 0 0373 , 0 9814 , 2 0
0 3333 , 0 3333 , 0 0000 , 3
r

p=0 (matrice pozitiv definit)


Soluie dat folosind pachetul de programe DSP Blockset din Simulink:
90
MATLAB n ingineria mecanic
Tem:S se rezolve sistemul:

'

+ + +
+ + +
+ + +
+ + +
4 t 3 z 2 y 7 x 2
1 t z y x
2 t 3 z 3 y x 2
1 t z y 2 x
prin factorizare Choleski.
Soluia sistemului, folosind pachetul de programe DSP Blockset din
Simulink:
Solverul Cholesky va realiza, n acest caz o rezolvare a sistemului de
ecuaii, dar activarea simulrii va avea ca rezultat afiarea n linia de comand a
MATLAB, a mesajului Warning: Input matrix to block 'Model de
rezolvare/Solverul Cholesky /Cholesky Factorization' is not positive definite..
Acest mesaj avertizeaz utilizatorul asupra faptului c matricea de intrare, din
fiierul model Model de rezolvare, nu este pozitiv definit. n acest caz soluia
dat prin Solverul Cholesky este eronat, ntruct matricea coeficienilor nu este
91
MATLAB n ingineria mecanic
pozitiv definit. Totui, rdcinile verific prima ecuaie, cu eroare la a patra
zecimal.
Rezolvarea sistemului prin determinarea matricei inverse (matricea
coeficienilor fiind nesingular, iar rangul matricei extinse este egal cu rangul
matricei coeficienilor, aadar sistemul admite soluie unic), are ca rezultat
vectorul soluie: X=[ -5; 2; 6; -4;]. Aceast soluie verific toate ecuaiile
sistemului.
Not:-Dac se ncearc determinarea factorului Cholesky, prin funcia MATLAB
chol([1,2,1,1;2,1,3,3;1,1,1,1;2,7,2,3]), va fi afiat un mesaj de eroare:
(??? Error using ==> chol
Matrix must be positive definite.)
??? Eroare la utilizarea operatorului chol
Matricea trebuie s fie pozitiv definit
ntruct matricea de la argumentul funciei chol() are elemente cu mult diferite.
FACTORIZAREA LOWER-UPPER (LU)
Prin factorizarea lower-upper (lu), o matrice ptratic este descompus
sub forma produsului a dou matrici triunghiulare: una inferior triunghiular
(lower), permutat (o matrice permutat, dup o anumit regul este o matrice n
care liniile sunt pivotate ntre ele), cu elementele, de pe diagonala principal, egale
cu unitatea (matricea L) i cealalt, o matrice superior triunghiular (upper),
(matricea U). n MATLAB, factorizarea lu este utilizat pentru obinerea inversei
unei matrici cu funcia inv() (inversa unei matrici A, se calculeaz ca produsul
dintre inversa matricei inferior triunghiular L, calculat prin eliminare Gauss, i
inversa matricei superior triunghiular U, calculat prin aceeai metod), respectiv
pentru calculul determinantului matricelor cu funcia det() (ca produs dintre
determinanul matricei inferior triunghiular L i determinanul matricei superior
triunghiular U). Este, totodat, baza rezolvrii ecuaiilor liniare prin "mprirea
matricelor" obinut cu operatorii \ i / .
Permutarea liniilor sau coloanelor unei matrici se poate exemplifica foarte
sugestiv printr-o schem cu blocuri DSP. Presupunem ca se dorete permutarea
liniilor unei matrici
1
1
1
]
1

0 8 7
6 5 4
3 2 1
A
dup urmtorul index: P=[2,1,3,3,2,2,],
92
MATLAB n ingineria mecanic
respectiv permutarea coloanelor, dup urmtoarea regul:Q=[2,1,3,2,2]. Atunci,
schema bloc este urmtoarea:
Factorizarea lower-upper se realizeaz dup urmtoarea schem generalizat:

Factorizarea unei matrici, prin metoda lower-upper, se realizeaz cu
funcia lu() i se apeleaz cu una dintre sintaxele:
1. [LU]=lu(S) - cu un singur parametru de ieire, matricea [LU]
93
MATLAB n ingineria mecanic
2. [L,U]=lu(S) returneaz o matrice superior triunghiular, U, i o
matrice inferior triunghiular permutat, L, astfel nct S=L*U
3. [L,U,P]=lu(X) returneaz o matrice superior triunghiular n U,
inferior triunghiular n L i permutarea matriceal n P, astfel nct
L*P=P*S
Ex.:
S se factorizeze matricea
1
1
1
]
1

0 8 7
6 5 4
3 2 1
A
prin metoda lower-upper.
Cu secvena MATLAB
A=[1,2,3;4,5,6;7,8,0];
[L]=lu(A)
L=
7.0000 8.0000 0
0.1429 0.8571 3.0000
0.5714 0.5000 4.5000
[L,U]=lu(A)
0 0 0000 , 1
0000 , 1 5000 , 0 5714 , 0
0 0000 , 1 1429 , 0
L

5000 , 4 0 0
0000 , 3 8571 , 0 0
0 0000 , 8 0000 , 7
U
unde, matricea L, este o permutare a matricei inferior triunghiulare, iar U este o
matrice superior triunghiular.
Apelarea funciei lu() cu trei parametri de ieire, are ca rezultat:
[L,U,P]=lu(A)
L =
1.0000 0 0
0.1429 1.0000 0
0.5714 0.5000 1.0000
94
Matricea
triunghiular
permutat
Matricea
superior
triunghiular
MATLAB n ingineria mecanic
U =
7.0000 8.0000 0
0 0.8571 3.0000
0 0 4.5000
P =
0 0 1
1 0 0
0 1 0
n Matlab (versiuni superioare versiunii 5.3) este posibil factorizarea
matricilor ptratice prin metoda lower-upper folosind pachetul de programe DSP
Blockset din Simulink. De exemplu, pentru matricea
1
1
1
]
1

3 1 2
6 0 4
3 2 1
A
, folosind
pachetul DSP Blockset se obine matricea compus din matricea L, inferior
triunghiular, i matricea superior triunghiular:
Matricea A
p
, (linia 2 pivotat, astfel nct aceasta devine linia 1 ) este
1
1
1
]
1


3 1 2
3 2 1
6 0 4
A
p
, iar matricile triunghiulare L (nepivotat) respectiv matricea
U
sunt:
1
1
1
]
1

1 5 . 0 5 . 0
0 1 25 . 0
0 0 1
L
, respectiv
1
1
1
]
1


75 . 0 0 0
5 . 1 2 0
6 0 4
U
95
MATLAB n ingineria mecanic
Pentru a observa modul n care sunt determinate matricile L i U, se va
apela funcia MATLAB lu(A) n toate cele trei variante posibile:
A=[1,-2,3;4,0,6;2,-1,3];
[L]=lu(A)
L =
4.0000 0 6.0000
0.2500 -2.0000 1.5000
0.5000 0.5000 -0.7500
[L,U]=lu(A)
L =
0.2500 1.0000 0
1.0000 0 0
0.5000 0.5000 1.0000
U =
4.0000 0 6.0000
0 -2.0000 1.5000
0 0 -0.7500
[L,U,P]=lu(A)
L =
1.0000 0 0
0.2500 1.0000 0
0.5000 0.5000 1.0000
U =
4.0000 0 6.0000
0 -2.0000 1.5000
0 0 -0.7500
P =
0 1 0
1 0 0
0 0 1
Rezolvarea sistemelor de ecuaii AX=B prin factorizarea lower upper
presupune urmtoarele etape:
i. determinarea matricelor L i U cu funcia MATLAB
96
MATLAB n ingineria mecanic
[L,U]=lu(A);
ii. determinarea vectorilor Y i X (obligatoriu n aceast
ordine):
Y=L\B i X=U\Y ;
Etapa ii., poate fi realizat i compact cu instruiunea: X=U\ (L\B)
De exemplu, pentru sistemul de 3 ecuaii i 3 necunoscute

'

+
+
+
1 z 3 y x 2
2 z 6 x 4
1 z 3 y 2 x
, se folosete urmtoarea secven MATLAB:
A=[1,-2,3;4,0,6;2,-1,3];B=[1;-2;-1];
[L,U]=lu(A);X=U\(L\B)
obinndu-se soluia sistemului :
X =
-2
0
1
Dac factorizarea se realizeaz prin apelarea cu trei parametri de ieire,
atunci se obin rdcinile permutate ale sistemului dat :
[L,U,P]=lu(C); X=U\(L\B)
X =
-0.5000
1.5000
0.5000
n MATLAB 6 este posibil rezolvarea sistemelor liniare cu n ecuaii i n
necunoscute prin metoda lower-upper folosind pachetul de programe DSP
97
MATLAB n ingineria mecanic
Blockset din Simulink. De exemplu, pentru rezolvarea sistemului 3x3

'

+
+
+
1 z 3 y x 2
2 z 6 x 4
1 z 3 y 2 x
, se folosete urmtorul model Simulink :
FACTORIZAREA q-r
Prin factorizare Q-R, o matrice se exprim ca produs ntre o matrice
ortogonal, Q, i o matrice superior triunghiular, R.
Matricea ortogonal, sau matricea cu coloane ortonormale, este acea
matrice real care are toate coloanele de lungime unitar, i sunt perpendiculare.
Dac o matrice Q este ortogonal, atunci :
Q*Q=1
Dac matricea este complex, atunci termenul corespunztor este matrice unitar.
Matricea ortogonal i matricea unitar sunt uor de utilizat, n plus, nu introduc i
nu amplific erorile de calcul. Din acest motiv, aceste matrici sunt utilizate in
calcule specifice analizei numerice.
Factorizarea Q-R, se realizeaz dup urmatoarea schem generalizat :
98
MATLAB n ingineria mecanic
n linia de comand, factorizarea Q-R se apeleaz n urmtoarele variante :
[Q,R] = qr(A) (matrice complet definit, sau matricea dispersiilor)
[Q,R] = qr(A,0) ( matrice complet definit, sau matricea dispersiilor)
[Q,R,E] = qr(A) (matrice complet definit)
[Q,R,E] = qr(A,0) (matrice complet definit)
X = qr(A) (matrice complet definit)
R = qr(A) (matricea dispersiilor)
[C,R] = qr(A,B) (matricea dispersiilor)
R = qr(A,0) (matricea dispersiilor)
[C,R] = qr(A,B,0) (matricea dispersiilor)
n MATLAB (versiuni superioare versiunii 5.3) este posibil factorizarea
matricilor ptratice prin metoda q-r, folosind pachetul de programe DSP Blockset
din Simulink. De exemplu, pentru matricea
1
1
1
]
1

7 5 2
5 8 1
2 1 1
A
, folosind
pachetul DSP Blockset se obine:
99
MATLAB n ingineria mecanic
Ex.:
S se determine descompunerea qr a matricei
1
1
1
]
1

0 8 7
6 5 4
3 2 1
A
Cu secvena MATLAB urmtoare, rezult:
A=[1,2,3;4,5,6;7,8,0];
[Q,R]=qr(A)
Q =
-0.1231 0.9045 0.4082
-0.4924 0.3015 -0.8165
-0.8616 -0.3015 0.4082
R =
-8.1240 -9.6011 -3.3235
0 0.9045 4.5227
0 0 -3.6742
Factorizarea q-r se utilizeaz pentru rezolvarea sistemelor de ecuaii liniare
cu mai multe ecuaii dect necunoscute (sisteme supra-determinate). Cea mai bun
soluie a unor astfel de sisteme, n sensul celor mai mici ptrate, este calculat cu
instruciunea: X=A\B, care utilizeaz aceast factorizare. Prin utilizarea factorizrii
q-r, soluia x este calculat n dou etape:
1. Y=(Q
-1
)*B
100
MATLAB n ingineria mecanic
2. X=R\Y
Aceeai soluie se obine folosind urmtoarea secven MATLAB, scris compact:
[Q,R]=qr(A); X=R\(inv(Q)*B)
De exemplu, soluia sistemului liniar

'

+

+

11 y x 2
7 y x 3
3 y 2 x
2 y 2 x
, se obine, folosind
urmtoarea secven:
A=[1,-2;1,2;3,-1;2,1]; B=[-2;3;7;11]; [Q,R]=qr(A);
X=R\(inv(Q)*B)
X =
3.0470
1.7047
Folosind pachetul DSP Blockset, din Simulink, se obine:
Folosind o secven MATLAB, similar, soluia sistemului

'

+ + +
+ +
+
+
0 t 8 z 2 y 7 x 2
7 t z y x
6 t 3 z 3 y x 2
1 t z y 2 x
se obine prin factorizare q-r:
A=[1,-2,1,-1;2,-1,3,-3;1,1,1,-1;2,7,2,8]; B=[1;6;7;0];
[Q,R]=qr(A);
X=R\(inv(Q)*B)
X =
7.0000
2.0000
101
MATLAB n ingineria mecanic
-4.4000
-2.4000
Vectorul X conine rdcinile sistemului: X={x,y,z,t}, x=7; y=2; z=-4,4;
t=-2,4.
Folosind pachetul DSP Blockset, din Simulink, se obine:
VALORI I VECTORI PROPRII
n general, n aplicaiile inginereti, exist un interes deosebit pentru
determinarea valorilor proprii reale i complexe ale unei matrici reale. Analiza
metodelor de calcul ale valorilor proprii pentru matricile reale poate fi extins la
matricile cu elemente complexe. Asemntor rezolvrii sistemelor de ecuaii, i n
cazul determinrii valorilor i vectorilor proprii exist dou tipuri de metode:
metode directe i metode indirecte. Folosirea metodelor directe sau indirecte
depinde mai mult de natura soluiei cerute dect de forma matricei.
Exist aplicaii n care se pot cere n valori proprii i n vectori proprii ai
unei matrici de ordinul n i alte aplicaii n care se cere doar un numr k<n de
valori i vectori proprii, precum i aplicaii la care se cere valoarea proprie maxim
(minim) n valoare absolut. n cazul n care se cere o valoare proprie, sau un
numr redus de valori proprii k<n, se pot aplica metodele indirecte (iterative), iar
n cazul n care se cer toate, sau aproape toate valorile propii, este preferabil s se
foloseasc metodele directe care implic transformrile similare ce reduc matricea
iniial A la o matrice similar B de o form particular (reducndu-se astfel
algoritmul de calcul propriu-zis).
Problema valorilor i vectorilor proprii apare ntr-o mare varietate de
aplicaii i se scrie sub forma Ax=x, sau, n general, Ax=Bx : vibraiile
corpurilor elastice, difuzia masic, sisteme oscilatorii.
n studiul sistemelor fizice este, adesea, necesar rezolvarea unor
sisteme de ecuaii liniare avnd forma algebric general :
102
MATLAB n ingineria mecanic
0
x
x
x
x

a a a a
a a a a
a a a a
a a a a
n
3
2
1
nn 3 n 2 n 1 n
n 3 33 32 31
n 2 23 22 21
n 1 13 12 11

1
1
1
1
1
1
]
1

1
1
1
1
1
1
]
1

unde A este o matrice simetric real, x este vectorul variabilelor independente iar
un parametru scalar denumit valoare caracteristic sau valoare proprie.
Problema rezolvrii sistemului const n determinarea parametrului i a
vectorului x corespunztor, vector cunoscut sub denumirea de vector caracteristic
sau vector propriu.
n determinarea soluiilor nebanale ale sistemului de ecuaii :AX=X, unde :
A este matrice ptratic de ordinul n,
X este vector coloan de ordinul n,
- este un scalar,
valorile X, respectiv , care satisfac ecuaia de mai sus se numesc vectori proprii,
respectiv valori proprii.
Pentru a evidenia semnificaia fizic a valorilor i vectorilor proprii se
consider urmtoarele exemple.
A. Presupunnd necesar studiul vibraiilor libere ale unui sistem constnd
din trei corpuri solide de mas, 2m, 4m, 6m, respectiv, fixate pe o bar elastic, la
distan egal, l, unul de altul, respectiv de reazemele de ncastrare ale barei, acesta
conduce la scrierea ecuaiilor micrii i la formularea unei probleme de valori
proprii:
103
MATLAB n ingineria mecanic
0
x
x
x
m 6 k 2 k 0
k m 4 k 2 k
0 k m 2 k 2
3
2
1
2
2
2
unde reprezint frecvena, x vectorul deplasare i k=s/l (s- tensiunea n bar, 4l-
lungimea barei). Dac se realizeaz substituia
k / m
2

, sistemul de ecuaii ale
micrii, devine:
104
MATLAB n ingineria mecanic
3
2
1
3
2
1
x
x
x
6 0 0
0 4 0
0 0 2
x
x
x
2 1 0
1 2 1
0 1 2

B. Un sistem fizic format din dou corpuri solide de mase m
1
, respectiv
m
2
, legate ntre ele prin trei arcuri elastice elicoidale, avnd coeficienii de
elasticitate
3 2 1
k , k , k
, este descris matematic prin sistemul de ecuaii difereniale
ordinare:


+
2 3 1 2 2
2
2
2
2
1 2 2 1 1
2
2
1
1
x k ) x x ( k
dt
dx
m
) x x ( k x k
dt
dx
m
unde
2 1
x , x sunt deplasrile pe orizontal fa de starea de echilibru, iar t este
timpul.
Pentru oscilaiile naturale sistemul va oscila la o frecven unic
n
,
obinndu-se oscilaii sinusoidale de amplitudine y i unghi de defazaj . n acest
caz expresiile celor dou deplasri sunt:
105
MATLAB n ingineria mecanic
) t sin( y x ), t sin( y x
n 2 2 n 1 1

Dac se nlocuiesc aceste expresii ale deplasrilor, n sistemul ecuaiilor de
micare, dup ordonare, rezult sistemul

+
+
0 y k y k y k y m
0 y k y k y k y m
1 2 2 3 2 2 2
2
n 2
2 2 1 2 1 1 1
2
n 1
Pentru k k k k , m m m
3 2 1 2 1
i frecvena adimensional k / m
2
n
,
sistemul devine:

+

0 y ) 2 ( y
0 y y ) 2 (
2 1
2 1

Sistemul omogen, n necunoscutele
2 1
y , y , are soluia banal
0 y y
2 1

, pentru orice valoare , fapt neinteresant din punct de vedere fizic.
Astfel se impune condiia ca det 0 A (A fiind matricea sistemului), rezultnd
ecuaia polinomial n :
3 , 1 ; 0 3 4
2 1
1 2
det ) ( P
2 1
2
2
+
1
]
1




Gradul polinomului caracteristic ) ( P
2
reprezint numrul gradelor de libertate
ale sistemului fizic, precum i numrul valorilor proprii. Fiecrei valori proprii i
corespunde cel puin un vector propriu, n cazul de fa existnd doi vectori proprii:
106
MATLAB n ingineria mecanic
2
2
2
2
1
) 2 (
1
1
2
1
1
) 1 (
y
y
y ,
y
y
y
Din punct de vedere fizic,
1
y i
2
y reprezint frecvene naturale n
forma adimensional pentru sistemul considerat:
m / k 3 , 3
k
m
m / k , 1
k
m
2
2
2
2
1
2
1
1


Dac se rezolv sistemul omogen n
1
1
y i
1
2
y pentru 1
1
i n
2
2
2
1
y , y pentru 3 , rezult vectorii proprii
) 1 (
y i
) 2 (
y :
107
MATLAB n ingineria mecanic
2
2
2
1
2
) 2 (
1
1
2
1
1
) 1 (
1
1
y
y
y ;
1
1
y
y
y
Se observ c
1
este frecvena cea mai joas iar
2
este frecvena cea
mai nalt pentru sistemul considerat, respectiv, faptul c la frecvena
1
cele
dou corpuri se deplaseaz la fel i n aceeai direcie, iar la frecvena
2

cele
dou mase se deplaseaz cu aceeai mrime dar n sensuri opuse. Cele dou
exemple prezentate au menirea s evidenieze faptul c valorile proprii i vectorii
108
MATLAB n ingineria mecanic
proprii descriu modul de comportare al unui sistem fizic, reprezentnd o serie de
mrimi ce descriu comportarea sistemului.
Valorile i vectorii proprii ai unei matrici ptratice se calculeaz, n
MATLAB, cu funcia eig() i se apeleaz cu una din sitaxele:
V=eig(A)
V=eig(A,B)
[V,D]=eig(A)
[V,D]=eig(A,B)
[V,D]=eig(A,'nobalance')
Prin apelarea funciei MATLAB eig(), n aceste variante, se obin
urmtoarele rezultate
V=eig(A) returneaz un vector care conine valorile proprii ale matricei
A;
[V,D]=eig(A) returneaz o matrice V ale crei coloane sunt vectorii
proprii corespunztori valorilor proprii i, o matrice diagonal D care conine
valorile proprii ale matricei A astfel nct: A*V=V*D
[V,D]=eig(A,'nobalance') returneaz valorile i vectorii proprii fr a
executa n prealabil o echilibrare (aproximare). Dac matricea conine
elemente mici, comparabile cu erorile de rotunjire, balansarea se scaleaz,
fcndu-le la fel de semnificative ca celelalte elemente ale matricei originale.
Acest lucru conduce n final la vectori proprii incoreci. n astfel de situaii se
utilizeaz noiunea de "nobalance".
Dac matricea are valori proprii de ordinul nti (valorile proprii sunt
distincte), atunci vectorii proprii sunt independeni. Dac vectorii proprii nu sunt
independeni, atunci matricea original nu este neregulat. Chiar dac o matrice
este neregulat, soluia funciei eig() satisface ecuaia:
A*X=X*D
Valorile i vectorii proprii generalizai determin soluiile nebanale ale ecuaiei:
AX=BX
unde A i B sunt matrici ptratice de ordinul n, iar este un scalar. Valorile lui
care satisfac ecuaia se numesc valori proprii generalizate i valorile X
109
MATLAB n ingineria mecanic
corespunztoare sunt vectorii proprii generalizai. Dac B este o matrice
nesingular (det(B)0, adic matricea este inversabil), problema calculului
valorilor i vectorilor proprii se reduce la o problem standard cu valori proprii prin
nlocuirea lui A cu B
-1
A, ntruct ecuaia este echivalent cu:
B
-1
AX=X
Calculul vectorilor i valorilor proprii generalizate se realizeaz cu funcia
MATLAB eig() i se apeleaz cu una dintre sintaxele:
V=eig(A,B)
returneaz un vector care conine valorile proprii generalizate, dac A i B
sunt matrici ptratice ;
[V,D]=eig(A,B)
returneaz o matrice V ale crei coloane sunt vectorii proprii corespunztori
i, o matrice diagonal D ce conine valorile proprii generalizate, astfel
nct: A*V=B*V*D
Ex.:
S se determine valorile i vectorii proprii ai matricei
1
1
1
]
1

2 1 0
1 2 1
0 1 2
A
Cu secvena MATLAB :
A=[-2 1 0; 1 -2 1; 0 1 -2]
[V,D]=eig(A)
V =
0.5000 -0.7071 -0.5000
-0.7071 0.0000 -0.7071
0.5000 0.7071 -0.5000
D =
-3.4142 0 0
0 -2.0000 0
0 0 - 0.5858
Aplicnd funcia MATLAB eig(), sistemelor de ecuaii ale micrii, pentru
cele dou sisteme fizice, tratate teoretic, la nceputul acestui paragraf, se obin
urmtoarele rezultate :
110
MATLAB n ingineria mecanic
A.- pentru primul sistem:
A=[2,-1,0;-1,2,-1;0,-1,2]
[V,D]=eig(A)
V =
0.5000 -0.7071 -0.5000
0.7071 0.0000 0.7071
0.5000 0.7071 -0.5000
D =
0.5858 0 0
0 2.0000 0
0 0 3.4142
V=eig(A)
V =
0.5858
2.0000
3.4142
B. pentru cel de-al doilea sistem :
A=[2,-1;-1,2];
[V,D]=eig(A)
V =
-0.7071 -0.7071
-0.7071 0.7071
D =
1 0
0 3
V=eig(A)
V =
1
3
CALCULUL VALORILOR SINGULARE
O valoare singular corespunztoare unei matrici rectangulare este
valoarea scalarului , iar vectorii singulari corespunztori aceleiai matrici sunt
111
MATLAB n ingineria mecanic
vectorii u i v, care respect relaia de interdependen : u v A , v u A
T

(aici, notaia V
T
reprezint transpusa matricei V). Calculul acestor valori este un
mijloc sigur pentru determinarea rangului unei matrici de form general.
Dac, valorile singulare , sunt folosite pentru a forma o matrice
diagonal , iar cu elementele vectorilor singulari, corespunztori, se formeaz
matricile ortogonale U i V, se poate scrie :
U V A
V U A
T
Dac U i V sunt ortogonale (U
T
* U =1, V
T
* V=1), atunci acestea reprezint
rezultatul descompunerii n valori singulare a matricei A :
T
V U A
Descompunerea complet, n valori singulare, a unei matrici de tipul A
mxn
,
are ca rezultat o matrice U
mxm
, una
mxn
, respectiv o matrice V
nxn
(adic matricile
U i V sunt patratice, n timp ce are ordinul matricei A). Dac matricea A are
numrul de linii mai mare dect numrul de coloane, atunci descompunerea n
valori singulare va avea ca rezultat o matrice U de dimensiuni mari, dar ultimele
m-n coloane sunt nmulite cu zero, n matricea . n aceast situaie,
economia n mrimea descompunerii, are efecte n timpul de calcul i n spaiul de
memorie necesar stocrii rezultatelor, prin renunarea la calculul acelor elemente
care, oricum sunt eliminate prin nmulirea cu zero, i eliminarea acelor coloane din
reprezentarea matricei U. n acest mod, va fi determinat i afiat o matrice U cu
dimensiunea mxn, o matrice , de ordinul nxn respectiv, matricea V, de aceeai
dimensiune . Dac matricea A este ptratic, simetric i pozitiv definit, atunci
descompunerea n valori i vectori proprii este identic descompunerii n valori
singulare. De remarcat c rezultatele descompunerii n valori singulare a unei
matrici reale sunt ntotdeauna reale, n timp ce, descompunerea n valori i vectori
proprii, a unei matrici reale, poate fi complex.
Descompunerea n valori singulare a matricei A, se poate face, n
MATLAB, folosind funcia specific svd(). Funcia svd() se apeleaz cu una din
sintaxele:
D=svd(A) returneaz un vector care conine valorile singulare
[U,S,V]=svd(A) returneaz o matrice diagonal S cu aceleai dimensiuni
ca A, avnd elementele diagonale nenegative (care sunt i valori singulare)
n ordine descresctoare i matricele U i V care satisfac relaia: X=U*S*V
[U,S,V]=svd(X,0) efectueaz un calcul mai rapid al valorilor singulare,
112
MATLAB n ingineria mecanic
Ex. :
S se descompun, n valori singulare, matricea
1
]
1

3 4
5 1
A
Rezolvare : Cu secvena MATLAB
A=[1 5; 4 3];
D=svd(A)
D =
6.6713
2.5482
[U,S,V]=svd(A)
U =
-0.7163 -0.6977
-0.6977 0.7163
S =
6.6713 0
0 2.5482
V =
-0.5257 0.8507
-0.8507 -0.5257
Ex. :
S se descompun matricea
1
1
1
1
]
1

9 4
1 8
3 5
7 1
A
, n valori singulare, folosind toate
variantele de apelare ale funciei MATLAB svd().
Rezolvarea este imediat, cu urmtoarea secven:
A=[1,7;5,3;8,1;4,9]
D=svd(A)
D =
13.8259
7.4058
[U,S,V]=svd(A)
U =
-0.4445 0.4723 -0.0336 -0.7604
-0.3930 -0.2855 -0.8693 0.0909
-0.4116 -0.7711 0.4125 -0.2566
-0.6917 0.3176 0.2701 0.5897
S =
113
MATLAB n ingineria mecanic
13.8259 0
0 7.4058
0 0
0 0
V =
-0.6126 -0.7904
-0.7904 0.6126
[U,S,V]=svd(A,0)
U =
-0.4445 0.4723
-0.3930 -0.2855
-0.4116 -0.7711
-0.6917 0.3176
S =
13.8259 0
0 7.4058
V =
-0.6126 -0.7904
-0.7904 0.6126
APLICAII
1:
Fie: a=
1
1
]
1

4 lg e 3
2 e
5 4
8 lg 4
; b=
1
1
]
1

3
7
8 7 lg
6 ln 5
; c=2.
S se calculeze:a+b; a-b;a+c.
2:
Fie: m=
1
1
]
1

5 log
3
3
e 3 arctg
20 sin 21
; n=
1
1
1
]
1

7 log 8 log
3 3
6
5 6
e 1 7 ln e
4 2 5
3
sin
S se calculeze: M=m+n
114
MATLAB n ingineria mecanic
3:
Fie: a=
1
1
1
1
]
1

6 log
3
7 4
4
3 61 sin
8 5
45 3
2 1
;b=
1
1
]
1


6 log 1 0 9 82
e 7 i 2 1 i 2 35 3
5
4
4
8 log
5
6
;
c=2.
S se calculeze produsele : ab; ba; ac; bc.
4:
Fie: a=
1
]
1

9 log
5
e 4 3 lg
2 ln 1
; b=
1
]
1

8 ln 7 log
6 tg 5 sin
5
;
S se calculeze:a/b; b/a.
5:
Fie: a=
1
]
1

4 lg 3 ln
e 2 1
; c=
1
1
]
1


6 log 1 0 9 8
e 7 i 2 1 i 2 3 3 6
4
3
4 5
7 5
.
S se calculeze ctul : d=a/b.
6:
Fie: a=
1
1
]
1

e 4 3
2 1
3
7 log
6
; b=
1
1
]
1


8 7
6 log 5 3
4
5
;
S se calculeze:a\b; b\a.
7:
Fie: a=
1
1
]
1

4 ln 3
e 2 1
5
6 ln
; b=3;c= - 3
S se calculeze:a^b; b^a; a^c
8: Calculai determinanii urmtoarelor matrici:
115
MATLAB n ingineria mecanic
1
]
1

6 lg 3 5 lg
e 4 3
e 2 e
A
1
1
1
]
1

9
5 7
4
e 84 e 7
6 ln e 4
5 ln 3 2 1
B
1
1
]
1

6 1 0 9 8
7 i 2 1 i 2 3 3
C
.
9 :
Calculai inversa matricei: A =
1
1
]
1

9 log 12 e 11
4 ln 10 e 2
6
3
9 log
8
5
.
10 :
S se determine rangul matricei A =
1
1
1
]
1

11 13 5 13
3 23 1 63
4 5 2 3
5
3
6 5
.
11 :
S se descompun, prin factorizare Choleski, Lower-Upper, respectiv,
QR, matricile:
1
]
1

6 lg 3 5 lg
e 4 3
e 2 e
A
1
1
1
]
1

9
5 7
4
e 84 e 7
6 ln e 4
5 ln 3 2 1
B

1
1
]
1

6 1 0 9 8
7 i 2 1 i 2 3 3
C
12 :
S se rezolve, folosind metodele de factorizare Choleski, Lower-Upper,
respectiv, QR, urmtoarele sisteme de ecuaii lineare:
116
MATLAB n ingineria mecanic

'


+ +
+
1 z y x
5 z 2 y 3 x
10 z y 2 x 3
;

'

+ + +
+ + +
+
+ +
0 u 2 t 8 z 2 y 7 x 2
7 u 3 t z y x
6 u t 3 z 3 y x 2
1 u 2 t z y 2 x

13 :
S se rezolve, folosind metodele de factorizare Choleski, Lower-Upper,
respectiv, QR, urmtoarele sisteme de ecuaii lineare:

'

+ + +
+ +
+
+
10 t 4 z 2 y x 2
8 t 2 z 3 y 7 x 5
11 t 3 z y 3 x 2
21 t 3 z y 2 x 6

'

+
+
+
1 x 7 x 5 x 2
2 x 5 x 8 x
1 x 2 x x 9
3 2 1
3 2 1
3 2 1
14 :
S se gseasc valorile i vectorii proprii ai matricelor
1
1
1
]
1

7 5 2
5 8 1
2 1 1
A

1
1
1
]
1

0 8 7
6 5 4
3 2 1
B

1
1
1
1
]
1

9 1 1 0
1 9 0 1
1 0 9 1
0 1 1 9
C
CAPITOLUL III
117
MATLAB n ingineria mecanic
STRUCTURI I TABLOURI DE VALORI
Structurile, sau tablourile de valori, sunt extensii ale matricilor bi-
dimensionale. Structurile sunt utile pentru construirea tabelelor de valori. De
exemplu, considernd vectorul:
n = (0:9)';
atunci, cu secvenele urmtoare, se pot genera dou tabele de valori:
tabel_puteri = [n n.^2 2.^n] <Enter>
tabel_puteri =
0 0 1
1 1 2
2 4 4
3 9 8
4 16 16
5 25 32
6 36 64
7 49 128
8 64 256
9 81 512
x = (1:0.1:2)'; logaritmi_si_exponentiale = [x log10(x) log(x) exp(x)]
logaritmi_si_exponentiale =
1.0000 0 0 2.7183
1.1000 0.0414 0.0953 3.0042
1.2000 0.0792 0.1823 3.3201
1.3000 0.1139 0.2624 3.6693
1.4000 0.1461 0.3365 4.0552
1.5000 0.1761 0.4055 4.4817
1.6000 0.2041 0.4700 4.9530
1.7000 0.2304 0.5306 5.4739
1.8000 0.2553 0.5878 6.0496
1.9000 0.2788 0.6419 6.6859
2.0000 0.3010 0.6931 7.3891
STRUCTURI MULTIDIMENSIONALE
118
MATLAB n ingineria mecanic
Structurile multidimensionale se deosebesc de matrici i tablouri de
valori prin numrul de dimensiuni. In timp ce matricile i tablourile de
valori sunt caracterizate prin dou dimensiuni (linii i coloane), structurile
multidimensionale dimensiuni suplimentare: paginile. De exemplu, cu
secvena urmtoare genereaz o reea cu 3 linii, 4 coloane i 5 pagini:
R = randn(3,4,5)
R(:,:,1) =
0.0000 -1.8740 0.7310 0.6771
-0.3179 0.4282 0.5779 0.5689
1.0950 0.8956 0.0403 -0.2556
R(:,:,2) =
-0.3775 -0.2340 1.4435 0.7990
-0.2959 0.1184 -0.3510 0.9409
-1.4751 0.3148 0.6232 -0.9921
R(:,:,3) =
0.2120 -0.7420 0.3899 -0.5596
0.2379 1.0823 0.0880 0.4437
-1.0078 -0.1315 -0.6355 -0.9499
R(:,:,4) =
0.7812 -0.2656 0.9863 0.2341
0.5690 -1.1878 -0.5186 0.0215
-0.8217 -2.2023 0.3274 -1.0039
R(:,:,5) =
-0.9471 -1.0559 -1.2173 -1.3493
-0.3744 1.4725 -0.0412 -0.2611
-1.1859 0.0557 -1.1283 0.9535
iar cu secvena:
p = perms(1:4); A = magic(4); M = zeros(4,4,24);
for k = 1:24
M(:,:,k) = A(:,p(k,:))
End
se genereaz o reea cu 4 linii, 4 coloane i 24 pagini. Aceast reea este
reprezentat succint n figura urmtoare (la rularea secvenei anterioare se vor afia
toate paginile structurii M, pentru fiecare valoare a indexului k):
119
MATLAB n ingineria mecanic
OPERAIILE ARITMETICE
CU TABLOURI DE VALORI
Tablourile sunt seturi de valori ordonate, dup sistemul matricial:linii i
coloane. MATLAB opereaz n mod diferit cu tablourile fa de matrici,
deosebirile evidente se observ la nmulire i mprire, iar condiia esenial
pentru realizarea unei operaii cu tablouri de valori este aceea c tablourile trebuie
s fie de aceeai dimensiune.
Operaiile cu tablouri sunt operaii aritmetice (nmulire, mprire, ridicare
la putere, etc.) ntre elementele situate n aceeai poziie a tablourilor, cunoscute
sub numele de operaii element cu element.
Dac, n loc de unul dintre operanzi este un scalar, acesta opereaz cu
fiecare element al tabloului.
Pentru a preciza c operaiile de nmulire, mprire, ridicare la putere
(exclus adunarea i scderea) se efectueaz element cu element ntre componentele
a dou tablouri de valori (matrici, seturi ordonate de valori, etc.) de aceleai
dimensiuni, se utilizeaz operatorul pentru operaia dorit, precedat de caracterul
punct (exclus cazul adunrii i scderii, care sunt similare celor pentru matrici):
pentru nmulire- .*
pentru mprire ./ sau .\
pentru ridicare la putere .^
ADUNAREA I SCDEREA
TABLOURILOR DE VALORI
120
MATLAB n ingineria mecanic
Pentru ca adunarea i scderea s se poat efectua este necesar
ndeplinirea condiiei de identitate a dimensiunilor tablourilor care opereaz.
Ex.11:
Fie :
1
]
1

6 5 4
3 2 1
a
, b=
1
]
1


3 5 9
8 1
, c=10, d=
1
1
1
]
1

6
8 3 ln
e
e 7
2
3
.
S se calculeze: a-b; a-c; c-a; c-b; a+d
Cu secvena MATLAB urmtoare, rezult:
a=[1,2,3;4,5,6];b=[-1,8,pi;9,sqrt(5),3];c=10;
d=[7^(1/3),exp(1);exp(2)/(log(3)-8),6]
A=a-b [Enter]
A =
2.0000 -6.0000 -0.1416
-5.0000 2.7639 3.0000
B=a-c [Enter]
B =
-9 -8 -7
-6 -5 -4
C=c-a [Enter]
C =
9 8 7
6 5 4
D=c-b [Enter]
D =
11.0000 2.0000 6.8584
1.0000 7.7639 7.0000
E=a+d Enter]
n cazul E=a+d, MATLAB returneaz un mesaj de eroare, ntruct nu este
ndeplinit condiia de coresponden a dimensiunilor celor doi operanzi:
121
MATLAB n ingineria mecanic
E= a+d
??? Error using ==> +
Matrix dimensions must agree..
??? Eroare la utilizarea operatorului +
Matricile trebuie s aib aceleai dimensiuni
NMULIREA TABLOURILOR DE VALORI
Pentru ca nmulirea a dou tablouri de valori s se poat realiza, este
obligatorie condiia ca acestea s fie strict de aceeai dimensiune :
Ex.:
Fie :
1
]
1

6 5 4
3 2 1
a
,
1
]
1

3 5 9
8 1
b
, c=10,
1
1
1
]
1

6
8 3 ln
e
e 7
d
2
3
.
S se calculeze: produsele:ab;ac;ca;cb; ad
Cu secvena MATLAB urmtoare, rezult:
a=[1,2,3;4,5,6];b=[-1,8,pi;9,sqrt(5),3];c=10;
d=[7^(1/3),exp(1);exp(2)/(log(3)-8),6];
A=a.*b [Enter]
A =
-1.0000 16.0000 9.4248
36.0000 11.1803 18.0000
B=a.*c [Enter]
B =
10 20 30
40 50 60
C=c.*a [Enter]
C =
122
MATLAB n ingineria mecanic
10 20 30
40 50 60
D=c.*b [Enter]
D =
-10.0000 80.0000 31.4159
90.0000 22.3607 30.0000
n cazul E=a.*d, MATLAB returneaz un mesaj de eroare, ntruct cele
dou tablouri au dimensiuni diferite:
E=a.*d
??? Error using ==> .*
Matrix dimensions must agree.
??? Eroare la utilizarea operatorului +
Matricele trebuie s aib aceleai dimensiuni
MPRIREA LA DREAPTA A
TABLOURILOR DE VALORI
mprirea la dreapta, a dou tablouri, este simbolizat prin caracterul
combinat ./ (punct + slash):
Ex.:
Fie :
1
]
1

6 5 4
3 2 1
a
, b=
1
]
1


3 5 9
8 1
, c=10.
S se calculeze: a:b;a:c;c:a;c:b.
Rezolvare:
Cu secvena MATLAB urmtoare, rezult:
a=[1,2,3;4,5,6]; b=[-1,8,pi;9,sqrt(5),3]; c=10;
d=a./b [Enter]
d =
-1.0000 0.2500 0.9549
0.4444 2.2361 2.0000
e=a./c[Enter]
e =
0.1000 0.2000 0.3000
123
MATLAB n ingineria mecanic
0.4000 0.5000 0.6000
f=c./a [Enter]
f =
10.0000 5.0000 3.3333
2.5000 2.0000 1.6667
g=c./b [Enter]
g =
-10.0000 1.2500 3.1831
1.1111 4.4721 3.3333
MPRIREA LA STNGA
Operaia de mprire la stnga, ntre dou tablouri, avnd aceleai
dimensiuni, este simbolizat cu operatorul .\ (punct + backslash): x=y.\z, i
reprezint ctul dintre elementul z(i,j) i elementul y(i,j), adic: x=y.\z z./y.
Ex.:
Fie :
1
]
1

6 5 4
3 2 1
a
, b=
1
]
1


3 5 9
8 1
, c=10.
S se calculeze:a.\b;a.\c;c.\a;c.\b.
Soluie :
Cu secvena MATLAB urmtoare, rezult:
a=[1,2,3;4,5,6]; b=[-1,8,pi;9,sqrt(5),3]; c=10;
d=a.\b [Enter]
d =
-1.0000 4.0000 1.0472
2.2500 0.4472 0.5000
e=a.\c [Enter]
e =
10.0000 5.0000 3.3333
2.5000 2.0000 1.6667
f=c.\a [Enter]
f =
124
MATLAB n ingineria mecanic
0.1000 0.2000 0.3000
0.4000 0.5000 0.6000
g=c.\b [Enter]
g =
-0.1000 0.8000 0.3142
0.9000 0.2236 0.3000
RIDICAREA LA PUTERE A
TABLOURILOR DE VALORI
Operaia de ridicare la putere a tablourilor de valori este simbolizat prin
caracterul combinat ( .^ ). Astfel, instruciunea A=B.^C, reprezint calculul
puterii unui element al matricei B, unde exponentul este elementul de pe poziia
corespunztoare din matricea C: adic elementul A(i,j) este obinut prin ridicarea la
puterea C(i,j) a elementului B(i,j).
Ex.:
Fie :
1
]
1

6 5 4
3 2 1
a
, b=
1
]
1


3 5 9
8 1
, c=10.
S se calculeze : a
b
; a
c
; c
a
; c
b
.
Rezolvare:
Cu secvena MATLAB urmtoare, rezult:
a=[1,2,3;4,5,6]; b=[-1,8,pi;9,sqrt(5),3]; c=10;
d=a.^b [Enter]
d =
1.0000e+000 2.5600e+002 3.1544e+001
2.6214e+005 3.6555e+001 2.1600e+002
e=a.^c [Enter]
e =
1 1024 59049
1048576 9765625 60466176
f=c.^a [Enter]
f =
10 100 1000
125
MATLAB n ingineria mecanic
10000 100000 1000000
g=c.^b [Enter]
g =

0.0000 0.1000 0.0000
1.0000 0.0000 0.0000
Not: Afiarea expresiei numerice 1.0e+009 *
(numrul 10
9
) n faa unei matrici, are semnificaia
urmtoare: elementele matricei sunt nmulite cu acel
numr. Aceasta este o metod practic de a scurta
formatul unui numr.
TRANSPUNEREA TABLOURILOR DE VALORI
Operaia de transpunere a unui tablou este simbolizat de operatorul
combinat . (punct-apostrof). n acest mod liniile tabloului devin coloane i
invers.
Ex.:
S se determine transpusa tabloului
1
1
]
1

9 7 11 1 i 2 3 i
0 6 3 1
a
.
Cu secvena MATLAB urmtoare, rezult:
a=[1, sqrt(3),pi,-6,0;I,3-2*I,1+sqrt(11),7,9]; [Enter]
a1=a. [Enter]
a1 =
1.0000 0 + 1.0000i
1.7321 3.0000 - 2.0000i
3.1416 4.3166
-6.0000 7.0000
0 9.0000
IRURI DE CARACTERE;
MATRICI DIN IRURI DE CARACTERE
126
MATLAB n ingineria mecanic
Un tip, aparte, de date utilizate de MATLAB l constituie irurile de
caractere. Acestea pot fi manipulate ca oricare alt tip de date stocate de orice
limbaj de programare. Figura urmtoare prezint tipurile de date utilizate de
MATLAB.
CREAREA MATRICIOR CU
IRURI DE CARACTERE
irurile de caractere sunt stocate n MATLAB ca tablouri de valori,
reprezentate prin coduri numerice (codul numeric ASCII). Datele de tip ir de
caractere sunt introduse prin plasarea caracterelor respective ntre dou caractere
apostrof ( caractere ). Codurile ASCII sunt afiate cu funcia MATLAB
double() :
coduri_ASCII_litere_mici=double('abcdefghijklmnopqrstuvwxz')
coduri_ASCII_litere_mici =
Columns 1 through 11
97 98 99 100 101 102 103 104 105 106 107
Columns 12 through 22
108 109 110 111 112 113 114 115 116 117 118
Columns 23 through 25
119 120 122
coduri_ASCII_majuscule=double('ABCDEFGHIJKLMNOPQRSTU
VWXZ')
coduri_ASCII_ majuscule =
127
MATLAB n ingineria mecanic
Columns 1 through 11
65 66 67 68 69 70 71 72 73 74 75
Columns 12 through 22
76 77 78 79 80 81 82 83 84 85 86
Columns 23 through 25
87 88 90
De exemplu, urmatoarea secven MATLAB introduce tabloul nume,
avnd dimensiunea 1x17 i matricea functia cu dimensiunea 1x24:
nume='Popescu J. Eduard'
nume =
Popescu J. Eduard
functia='Director General Adjunct'
functia =
Director General Adjunct
Caracteristicile matricei nume, se listeaz cu funcia whos:
whos nume
Name Size Bytes Class
nume 1x17 34 char array
adica : matricea nume are dimensiunea 1x17, se stocheaz n memorie ocupnd 34
bii i este din classa char array (tablou de caractere).
Matricile de caractere se pot concatena pentru crearea unei noi matrici,
folosind funcia MATLAB strcat() sau operatorul MATLAB de concatenare [ ].
De exemplu, pentru concatenarea celor dou tablouri de mai sus, se folosete
secvena MATLAB :
Nume_si_Functia=strcat(nume,',',functia)
Nume_si_Functia =
Popescu J. Eduard,Director General Adjunct
whos Nume_si_Functia
Name Size Bytes Class
ans 1x42 84 char array
128
MATLAB n ingineria mecanic
Grand total is 42 elements using 84 bytes
Concatenarea a dou tablouri pentru transformarea ntr-o matrice cu dou
linii, folosete algoritmul de introducere a datelor ca matrice (paranteze drepte):
numele_si_functia=['Popescu J. Eduard ';'Director
General Adjunct']
numele_si_functia =
Popescu J. Eduard
Director General Adjunct
whos numele_si_functia
Name Size Bytes Class
numele_si_functia 2x24 96 char array
Grand total is 48 elements using 96 bytes
Se observ diferena fa de cazul afirii textului intr-o singur
linie:matricea nou avnd dimensiunea 2x24, fa de o linie cu 42 elemente, la
prima variant, iar pentru stocare sunt ocupai 96 bii de memorie, fa de 84 n
prima variant, classa este aceeai char array.
CONVERSIA IRURILOR DE CARACTERE
N CODURI NUMERICE
Matricile cu iruri de caractere stocheaz fiecare caracter n coduri
numerice pe 16 bii. Codurile ASCII ale caracterelor alfanumerice sunt prezentate
n tabelul urmtor :
Cod Caracter Cod Caracter Cod Caracter Cod Caracter Cod Caracter
0. (zero) 27. 54. 4 81. N 108. h
1. 28. 55. 5 82. O 109. i
2. 29. 56. 6 83. P 110. j
3. 30. 57. 7 84. Q 111. k
4. 31. 58. 85. 112.
5. 32. 59. 8 86. R 113. l
6. 33. 60. 9 87. S 114. m
7. 34. (blank) 61. : 88. T 115. n
8. 35. ! 62. ; 89. U 116. o
9. 36. " 63. < 90. V 117. p
10. 37. # 64. = 91. W 118. q
129
MATLAB n ingineria mecanic
11. 38. $ 65. > 92. X 119. r
12. 39. % 66. ? 93. Y 120. s
13. 40. & 67. @ 94. Z 121. t
14. 41. ' 68. A 95. [ 122. u
15. 42. ( 69. B 96. \ 123. v
16. 43. ) 70. C 97. ] 124. w
17. 44. * 71. D 98. ^ 125. x
18. 45. + 72. E 99. _ 126. y
19. 46. , 73. F 100. ` 127. z
20. 47. - 74. G 101. a 128. {
21. 48. . 75. H 102. b 129. |
22. 49. / 76. I 103. c 130. }
23. 50. 0 77. J 104. d 131. ~
24. 51. 1 78. K 105. e 132.
25. 52. 2 79. L 106. f
26. 53. 3 80. M 107. g
MATLAB utilizeaz funcia double() pentru convertirea irului de
caractere n codurile numerice ale acestora, respectiv funcia char() pentru
reprezentarea acestor valori n ir de caractere:
nume_si_functia_numeric=double(nume_si_functia)
nume_si_functia_numeric =
Columns 1 through 12
80 111 112 101 115 99 117 32 74 46 32 69
68 105 114 101 99 116 111 114 32 71 101 110
Columns 13 through 24
100 117 97 114 100 32 32 32 32 32 32 32
101 114 97 108 32 65 100 106 117 110 99 116
Se observ c matricea nume_si_functia (cu 2 linii i 24 coloane) a
fost convertit ntr-o matrice cu aceleai dimensiuni dar n reprezentare numeric,
nume_si_functia_numeric. De exemplu, pentru verificare, se poate folosi
urmtoarea secven:
valoarea_numerica_a_literei_P=double('P')
valoarea_numerica_a_literei_P =
80
valoarea_numerica_a_literei_o=double('o')
valoarea_numerica_a_literei_o =
111
Pentru revenirea la forma anterioar (matrice cu caractere) se folosete
secvena:
nume_si_functia=char(nume_si_functia_numeric)
nume_si_functia =
130
MATLAB n ingineria mecanic
Popescu J. Eduard
Director General Adjunct
Codurile ASCII, sunt convertite n caractere folosind funcia MATLAB
char() :
char(65:75)
ans =
ABCDEFGHIJK
Se pot folosi funciile char() i double() pentru a genera iruri identice de
caractere, adica:
char(ones(4,20)*double('#'))
ans =
####################
####################
####################
####################
Aceast instruciune se execut astfel :
-funcia ones(4,20) genereaz patru linii i 20 de coloane n care elementele
sunt cifrele 1;
-multiplicnd prin double('#') aceast matrice, elementele 1 sunt nlocuite
cu codul ASCII al unui caracter oarecare (n acest caz este codul
caracterului #), iar funcia char() convertete aceste coduri n caractere
(caracterul #).
Dac o variabil- caracter este implicat ntr-o operaie aritmetic,
MATLAB utilizeaz codul ASCII al caracterului, pentru efectuarea calculelor.
Astfel, dac :
p=m;
atunci expresia:
p+2
returneaz rezultatul:
ans =
111
131
MATLAB n ingineria mecanic
Operaiile cu matrici i tablouri de valori pot fi extinse la irurile de
caractere. De exemplu, dac p este un ir de caractere (n cazul de fa m), atunci
expresia char(p+1) returneaz litera urmtoare din alfabet:
char(p+1)
ans =
n
Relaia dintre caractere i codurile ASCII, ale acestora, permite efectuarea
operaiilor aritmetice cu acestea. De exemplu, instruciunea urmtoare va realiza
mprirea numrului reprezentnd codul ASCII al caracterului < (cod 60), la
numrul reprezentnd codul ASCII al caracterului x (120) :
double('<')/double('x')
ans =
0.5000
irurile de caractere pot fi afiate folosind funcia MATLAB fprintf(), cu
specificatorul de format %s , fiind posibil, de asemenea, aranjarea la
dreapta , la stnga sau egal distanat ( justified ), respectiv
trunchiat . Cu instruciunile urmtoare se afieaz cuvintele IMPARATUL
NAPOLEON I , n diferite variante :
fprintf('%40s I\n','IMPARATUL NAPOLEON')
IMPARATUL NAPOLEON I
fprintf('%-40s I\n','IMPARATUL NAPOLEON')
IMPARATUL NAPOLEON I
fprintf('%20s I\n','IMPARATUL NAPOLEON')
IMPARATUL NAPOLEON I
fprintf('%-20s I\n','IMPARATUL NAPOLEON')
IMPARATUL NAPOLEON I
COMPARAREA IRURILOR DE CARACTERE
irurile de caractere se compar prin codurile ASCII. Astfel, irurile
ann i ban , se compar folosind operatorii relaionali (<, <=, >, >=, ==,
132
MATLAB n ingineria mecanic
~=), similar matricilor, fiind afiat rezultatul 1, dac rezultatul comparrii este
adevarat, respectiv, rezultatul zero, dac rezultatul comparrii este fals:
s1='ann'; s2='ban';
s1<s2
ans =
1 0 0
n acest exemplu, caracterul de pe prima poziie, din irul s1 are valoare
mai mic dect caracterul corespunztor din irul s2, rezultatul afiat fiind, n
consecin 1, n timp ce, celelalte elemente ale irului s1 sunt mai mari sau
egale dect valorile caracterelor de pe poziiile corespunztoare ale irului s2,
rezultatul afiat fiind 0, ntruct rezultatul comparrii este fals.
Dac irurile nu au aceeai dimensiune (acelai numr de caractere),
folosirea operatorilor relaionali este improprie, MATLAB afind un mesaj de
eroare :
s3='anna'; s2='ban';
s3>s2
??? Error using ==> >
Array dimensions must match for binary array op.
??? Eroare la utilizarea operatorului >
Dimensiunile structurilor trebuie sa corespund
pentru efectuarea operaiilor binare
Compararea irurilor cu dimensiuni diferite se realizeaz cu funcia
MATLAB strcmp(si,sj), care va afia valoarea logic 1, dac cele dou iruri sunt
identice, respectiv, valoarea logic 0, dac cele dou iruri au valori diferite ale
codurilor ASCII:
strcmp(s2,s3)
ans =
0
Funciile specifice operaiilor i operaiunilor cu iruri de caractere sunt
prezentate folosind : help matlab\strfun.
IRURI DE CARACTERE BIDIMENSIONALE

irurile de caractere bi-dimensionale se pot crea exact ca i matricile, cu
excepia faptului c fiecare linie trebuie s aib acelai numr de caractere (acelai
numr de coloane), n caz contrar se va afia un mesaj de eroare care avertizeaz
133
MATLAB n ingineria mecanic
utilizatorul asupra acestui aspect (rezolvarea problemei este simpl dac se
introduce un numr necesar de spaii libere, blank-uri) :
nume_si_adresa=['Albert Durrer ';'21 Bruxelles Ave';'New
York ']
nume_si_adresa =
Albert Durrer
21 Bruxelles Ave
New York
numesiadresa=['Albert Durrer';'21 Bruxelles Ave';'New
York']
??? Error using ==> vertcat
All rows in the bracketed expression must have the same
number of columns.
??? Eroare la utilizarea vertcat(concatenarea vertical)
Toate liniile, din parantezele drepte, trebuie sa aib acelai
numr de coloane
O metod simpl pentru realizarea structurilor bi-dimensionale, cu iruri de
caractere, este aceea folosind funcia MATLAB char(), care seteaz automat
numrul de coloane necesare pe fiecare linie:
nume_si_adresa=char('Albert Durrer','21 Bruxelles Ave','New
York')
nume_si_adresa =
Albert Durrer
21 Bruxelles Ave
New York
De observat c dac structura nume_si_adresa se apeleaz cu subscript,
pentru extragerea elementelor, acestea sunt afiate n ordinea clasic a vectorilor
liniari (vectori coloan), elementele fiind citite pe coloan ncepnd cu primul
element al coloanei nti :
numesiadresa=['Albert Durrer ';'21 Bruxelles Ave';'New
York ']
numesiadresa =
Albert Durrer
21 Bruxelles Ave
134
MATLAB n ingineria mecanic
New York
numesiadresa(1:3)
ans =
A2N
numesiadresa(1:4)
ans =
A2Nl
numesiadresa(1:20)
ans =
A2Nl1eb weB rrYtuo x
EVALUAREA IRURILOR DE CARACTERE
Dac o expresie MATLAB este codat ca ir de caractere de variabil
t , de exemplu, atunci funcia eval(t) va genera evaluarea expresiei n t
(adic, irul de caractere va fi interpretat). Aceast facilitate se numete text
macro. De exemplu, instruciunea urmtoare :
s='x=-b/(2*a)';b=8;a=7;
eval(s)
x =
-0.5714
Utilizarea funciei eval() este foarte practic n situaii n care sunt
solicitate date de intrare, cum ar fi cazul unor reprezentri grafice :
x=0:0.01:10;
f=input('Introduceti functia de variabila x pentru reprezentare
grafica:','s')
Introduceti functia de variabila x pentru reprezentare grafica:
exp(-0.5*x).*sin(x);
plot(x,eval(f)),grid
135
MATLAB n ingineria mecanic
Dup introducerea funciei MATLAB input() apare linia de comand de
ateptare , prin care utilizatorul este invitat s introduc expresia funciei de
variabil x :
Introduceti functia de variabila x pentru reprezentare grafica:
Dac utilizatorul introduce o expresie n care nu exist date care pot fi
evaluate, MATLAB afieaz un mesaj de eroare, altfel este evaluat expresia n
variabil x , i reprezentat grafic pentru valorile date :
Structurile definite, pn acum, n MATLAB, au avut elementele date ori
numai ca numere, ori numai ca iruri de caractere. MATLAB permite definirea
structurilor de date prin introducerea diferitelor tipuri de date n diferite cmpuri.
De exemplu, se poate crea o structur, numit student (de exemplu), cu un
cmp alocat numelui :
student.nume=Juan Antonio Cajigal;
un alt cmp pentru seria i numrul de legitimaie:
student.legitimatie='JUANCA0123';
respectiv, un cmp pentru calificativele primite :
136
MATLAB n ingineria mecanic
student.calificative=[7 9 6 5];
Pentru a vedea ntreaga structur, se introduce, de la tastatur, n linia de
comand, numele acesteia:
student
student =
nume: 'Juan Antonio Cajigal'
legitimatie: 'JUANCA0123'
calificative: [7 9 6 5]
Apelarea unui element al structurii se realizeaz folosind aceeai
metodologie ca i n cazul matricilor i tablourilor de valori. De exemplu, afiarea
celei de-a doua note, respectiv a celei de-a patra, este realizabil prin introducerea
de la tastatur, n linia de comand, a numelui cmpului, i ca subscript (n
paranteze, pentru stabilirea poziiei n matricea linie), poziia acesteia n matricea
respectiv, student.calificative(i):
student.calificative(2)
ans =
9
student.calificative(4)
ans =
5
De notat c folosirea caracterului ., pentru separarea numelui unei
structuri, la crearea sau apelarea acesteia, este esenial.
Pentru adugarea unor elemente suplimentare la structura creat, se vor
folosi indici de subscriere, dup numele structurii:
student(2).nume='Luis Jimenez';
student(2).legitimatie='LUJIM0012';
student(2).calificative=[7 5];
n structura cu numelestudent cmpurile alocate primului nume, vor
putea fi accesate folosind indicele de subscriere 1, dup numele structurii
student:
student(1)
ans =
137
MATLAB n ingineria mecanic
nume: 'Juan Antonio Cajigal'
legitimatie: 'JUANCA0123'
calificative: [7 9 6 5]
Este de observat c nu este necesar ca o structur s aib dimensiunile
cmpurilor identice: cmpul calificative are dimensiunea 4 la student(1), n
timp ce, la student(2) cmpul are dimensiunea 2.
Structura cu numele student, are acum dimensiunea 1x2:are dou
elemente (student(1) i student(2)), fiecare dintre acestea avnd cte 3
cmpuri. Dac o structur are definite mai multe elemente, MATLAB nu afieaz
coninutul fiecrui cmp, atunci cnd aceasta este apelat cu numele simplu. Astfel,
dac structura student se apeleaz n linia de comand, simplu, fr subscript,
atunci se va afia un sumar exhaustiv:
student
student =
1x2 struct array with fields:
nume
legitimatie
calificative
Un sumar asemntor este afiat dac se apeleaz funcia MATLAB
fieldnames():
fieldnames(student)
ans =
'nume'
'legitimatie'
'calificative'
Pre-alocarea cmpurilor i definirea unei structuri se poate realiza folosind
i funcia MATLAB struct().
Cmpul unei structuri poate conine orice tip de date, chiar i o alt
structur. De exemplu, se poate crea o structur, fie numele acesteia cursuri,
care s conin date privind cursurile susinute de studeni, n care un cmp va fi
alocat titlului cursului, i alt cmp va conine structura student, creat anterior:
cursuri.titlu='Metode numerice';
cursuri.grupa=student;
cursuri
cursuri =
titlu: 'Metode numerice'
138
MATLAB n ingineria mecanic
grupa: [1x2 struct]
Se poate aloca un al doilea element structurii cursuri, s presupunem,
pentru un alt curs:
cursuri(2).titlu='Metode numerice IMT';
cursuri(2).grupa=student;
Pentru a afia titlurile cursurilor se folosete instruciunea:
cursuri(1:2).titlu
ans =
Metode numerice
ans =
Metode numerice IMT
Pentru a se afia numele studenilor participani la cursuri, se folosete
instruciunea:
cursuri(1).grupa(1:2).nume
ans =
Juan Antonio Cajigal
ans =
Luis Jimenez
MATLAB permite generarea unei liste cu variabile separate prin virgul,
prin extragerea acestora din cmpurile structurii, folosind funcia specific deal().
De exemplu, pentru crearea unei liste coninnd numele studenilor participani la
cursuri, se folosete instruciunea:
[nume1,nume2]=deal(cursuri(1).grupa(1:2).nume)
nume1 =
Juan Antonio Cajigal
nume2 =
Luis Jimenez
Pentru tergerea sau anularea unor cmpuri ale structurii create se folosete
funcia MATLAB rmfield().
STRUCTURI CELULARE
Celula este entitatea cea mai comun n MATLAB. Celula poate fi
asimilat cu un conteiner de date care poate conine orice tip de date:tablouri de
valori numerice, sau iruri de caractere, structuri sau celule.
139
MATLAB n ingineria mecanic
Definirea celulelor
Indexare:
Considernd c structura student, creat n paragraful anterior, exist
stocat n memoria calculatorului, se poate defini o structur celular (2x2) prin
atribuirea datelor din celulele specificate:
c(1,1)={rand(3)};
c(1,2)={char('Bonzai','Makay')};
c(2,1)={13};
c(2,2)={student};
c
c =
[ 3x3 double ] [ 2x6 char ]
[ 13] [ 1x2 struct ]
n aceast grupare de instruciuni, parantezele rotunde din partea stng a
semnului de atribuire (=), au acelai rol ca i n cazul tablourilor de valori, sau al
matricilor, avnd semnificaia de referire la un anumit element al structurii
celulare. Ceea ce difereniaz structurile celulare de tablourile de valori, este
utilizarea parantezelor acolade ({ }), n partea dreapt a semnului de atribuire.
Aceste caractere ({ }), folosite numai n partea dreapt a semnului de atribuire,
arat coninutul unei celule, avnd rol de constructori ai structurii celulare. Dac
aceste caractere ({ }), sunt folosite n alte situaii, atunci acestea se refer la
elementul specificat n interiorul parantezelor. De exemplu, instruciunea:
cellplot(c)
afieaz, ntr-o figur separat, structura celular c:
140
MATLAB n ingineria mecanic
iar instruciunea:
celldisp(c)
afieaz, n fereastra de comand, structura celular c:
c{1,1} =
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
c{2,1} =
13
c{1,2} =
Bonzai
Makay
c{2,2} =
1x2 struct array with fields:
nume
legitimatie
calificative
Apelarea, n linia de comand, a elementelor structurii celulare, se
realizeaz folosind parantezele acolade, n combinaii cu parantezele rotunde, sau
drepte. Astfel, apelarea celulei de pe poziia 1, respectiv afiarea coninutului
acestei celule, se realizeaz cu instruciunea:
141
MATLAB n ingineria mecanic
c{1}
ans =
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
Elementul de pe poziia (2,3), al celulei 1, se apeleaz cu instruciunea:
c{1}(2,3)
ans =
0.0185
n mod similar, sunt afiate celelalte celule ale structurii celulare c:
c{2}
ans =
13
c{3}
ans =
Bonzai
Makay
c{4}
ans =
1x2 struct array with fields:
nume
legitimatie
calificative
De observat c elementele unei structuri celulare sunt citite pe coloan.
STRUCTURI CELULARE MULTIDIMENSIONALE
Structurile celulare multidimensionale, n MATLAB, sunt extensii normale
ale matricilor bi-dimensionale.
142
MATLAB n ingineria mecanic
Trebuie reamintit faptul c matricile sunt caracterizate prin cele dou
dimensiuni:numrul de linii i numrul de coloane. Astfel, n figura de mai jos
se poate vedea c, dac fiecare locaie a grilei reprezint un element al matricei,
atunci, un element al matricei poate fi accesat prin apelarea sa cu doi indici
reprezentnd numrul liniei, respectiv al coloanei pe care acesta se regsete n
matricea dat. Structurile multidimensionale utilizeaz indici suplimentari pentru
apelarea unui element. Astfel, o structur tri-dimensional utilizeaz trei indici de
apel:
Primul indice reprezint linia;
Al doilea indice reprezint coloana;
Al treilea indice reprezint pagina.
Reprezentarea schematic a unei structuri multidimensionale se regsete n figura
urmtoare:
Dimensiunile structurii multidimensionale
De exemplu, pentru apelarea
unui element de pe linia 2, coloana 3
i pagina 2 (schema alturat ), se vor
folosi trei indici de acces (2,3,2).
Dac se adaug dimensiuni
suplimentare unei structuri, atunci i
elementele vor fi accesate prin indici
suplimentari. De exemplu, pentru o
reea cu patru dimensiuni se vor folosi
patru indici:primii doi pentru perechea
linie-coloan i ultimii doi pentru a
treia i a patra dimensiune.
CREAREA STRUCTURILOR
143
MATLAB n ingineria mecanic
CELULARE MULTIDIMENSIONALE
Pentru crearea structurilor celulare multidimensionale se folosesc, n
principiu, tehnici similare celor pentru generarea matricilor bi-dimensionale. n
plus, specific structurilor multidimensionale, MATLAB dispune de funcii
speciale de concatenare. Generarea structurilor celulare multidimensionale este
posibil prin:
A). Utilizarea indexrii ;
B). Utilizarea funciilor MATLAB ;
C). Utilizarea funciei cat().
A). Generarea structurilor celulare multidimensionale prin indexare
O cale, simpl, pentru crearea structurilor multidimensionale, este de a
genera o matrice bidimensional i apoi aceasta sa fie extins. De exemplu, pentru
a suplimenta, dimensiunile unei matrici, cu o pagin nou, se procedeaz astfel:
Considernd matricea
1
1
1
]
1

6 3 4
9 1 0
8 7 5
A
cu dimensiunea 3x3,
1. se introduce de la tastatur matricea A:
A = [5 7 8; 0 1 9; 4 3 6];
2. se suplimenteaz dimensiunea matricei A, adugnd o
pagin:
A(:,:,2)= [1 0 4; 3 5 6; 9 8 7]
A(:,:,1) =
5 7 8
0 1 9
4 3 6
A(:,:,2) =
1 0 4
3 5 6
9 8 7
B). Generarea structurilor multidimensionale prin funcii MATLAB
Se pot foslosi funciile MATLAB, cum ar fi randn(), zeros(), ones(),
pentru generarea structurilor multidimensionale, exact ca n cazul matricilor bi-
144
MATLAB n ingineria mecanic
dimensionale:
retea_arbitrara = randn(6,5,2)
retea_arbitrara(:,:,1) =
-0.1199 -0.0793 0.0359 0.1326 -1.0246
-0.0653 1.5352 -0.6275 1.5929 -1.2344
0.4853 -0.6065 0.5354 1.0184 0.2888
-0.5955 -1.3474 0.5529 -1.5804 -0.4293
-0.1497 0.4694 -0.2037 -0.0787 0.0558
-0.4348 -0.9036 -2.0543 -0.6817 -0.3679
retea_arbitrara(:,:,2) =
-0.4650 1.0378 1.9574 1.1902 0.0860
0.3710 -0.3898 0.5045 -1.1162 -2.0046
0.7283 -1.3813 1.8645 0.6353 -0.4931
2.1122 0.3155 -0.3398 -0.6014 0.4620
-1.3573 1.5532 -1.1398 0.5512 -0.3210
-1.0226 0.7079 -0.2111 -1.0998 1.2366
C). Generarea structurilor multidimensionale
cu funcia MATLAB cat()
O metod simpl pentru generarea structurilor celulare multidimensionale
o constituie utilizarea funciei cat(), care concateneaz o list de alte structuri pe
mai multe dimensiuni. Forma general a funciei este: B = cat(dim,A1,A2...), n
care A1,A2..., reprezint lista de structuri celulare multidimensionale, iar dim, este
dimensiunea:
B = cat(3,[2 8 4 9;1 0 5 3],[1 3 3 5 ; 4 7 9 7])
B(:,:,1) =
2 8 4 9
1 0 5 3
B(:,:,2) =
1 3 3 5
4 7 9 7
a = magic(3); b = pascal(3); c = cat(2,a,b)
c =
8 1 6 1 1 1
3 5 7 1 2 3
4 9 2 1 3 6
a = magic(3); b = pascal(3); c = cat(5,a,b)
145
MATLAB n ingineria mecanic
c(:,:,1,1,1) =
8 1 6
3 5 7
4 9 2
c(:,:,1,1,2) =
1 1 1
1 2 3
1 3 6
MODIFICAREA FORMEI STRUCTURILOR
CELULARE MULTIDIMENSIONALE
Dac nu se solicit schimbarea formei sau dimensiunilor, o reea
multidimensional i pstreaz caracteristicile specificate atunci cnd a fost creat.
Dimensiunile structurii se pot modifica prin tergerea sau adugarea unor elemente,
iar forma structurii se poate schimba prin specificarea unui numr diferit de linii,
coloane sau pagini. Forma general a funciei MATLAB pentru modificarea formei
unei structuri este:
R=reshape(A,[s1,s2,s3,]),
n care A este structura a crei form urmeaz a fi schimbat, iar s1,s2,s3,,
reprezint noile dimensiuni ale structurii cu forma schimbat. Schema de lucru a
funciei reshape() este reprezentat n schiele de mai jos: (functia reshape() se
foloseste i pentru tablouri mxn-dimensionale, respectiv n cazul Sistemelor de
Control sau ca bloc surs pentru crearea schemelor Simulink).
Schimbarea formei structurilor
146
MATLAB n ingineria mecanic
ORGANIZAREA DATELOR N STRUCTURILE
CELULARE MULTIDIMENSIONALE
Structurile multidimensionale pot fi utilizate pentru stocarea i
reprezentarea datelor n dou moduri:
Ca plane sau pagini cu date bi-dimensionale. Acestea pot fi tratate ca
matrici bi-dimensionale;
Ca date multivariabile sau multidimensionale. De exemplu, se pot
reprezenta structuri 4-dimensionale n care fiecare element corespunde
temperaturii sau presiunii aerului msurate ntr-un set de puncte ale unei
incinte.
De exemplu, dac se consider o imagine RGB, a crei matrice de culoare
poate fi reprezentat ca n figura de mai jos:
sau mulimea temperaturilor msurate ntr-un numr egal de puncte:
APLICAII
147
MATLAB n ingineria mecanic
[1]:
Fie:
1
1
]
1

5 lg 4
2
e 6 5 6 4
5 ln 3 e 2 e
a
,
1
1
]
1

6 5
4
e
3 5 7 log 9
2 8 1
b ,c=2
1
1
1
]
1

6
8 3 ln
e
e 7
d
2
3
S se calculeze: a-b; a-c; c-a; c-b; a+d
[2]:
Fie:
1
1
]
1

4 ln 6 5 4
5 3 2 1 , 0
a
5
,
1
1
]
1

e 3 5 9
3 5 8 1
b
7 log 7 lg
4
,
c=10, d=
1
1
1
]
1

6
8 3 ln
e
e 7
2
3
.
S se calculeze: produsele:ab;ac;ca;cb; ad
[3]:
Fie :
1
]
1

6 5 4
3 2 1
a
, b=
1
]
1


3 5 9
8 1
, c=10.
S se calculeze: a:b;a:c;c:a;c:b.
148
MATLAB n ingineria mecanic
[4]:
Fie :
1
]
1

6 5 4
3 2 1
a
, b=
1
]
1


3 5 9
8 1
, c=10.
S se calculeze:a.\b;a.\c;c.\a;c.\b.
[5]:
Fie :
1
]
1

6 5 4
3 2 1
a
, b=
1
]
1


3 5 9
8 1
, c=10.
S se calculeze : a
b
; a
c
; c
a
; c
b
.
[6]:
S se determine transpusa tabloului
1
1
]
1

9 7 11 1 i 2 3 i
0 6 3 1
a
.
149
matricele sau expresiile matriceale care se compar ;
MATLAB n ingineria mecanic
CAPITOLUL IV
UTILIZAREA OPERATORILOR RELAIONALI
Mediul de programare MATLAB utilizeaz, pentru compararea a dou
matrici cu dimensiuni identice, element cu element, ase operatori relaionali:
Operatori relaionali Semnificaia
< Mai mic dect
<= Mai mic sau egal cu
> Mai mare dect
>= Mai mare sau egal cu
== Identic cu
~= Diferit de
Dup executarea operaiei, MATLAB afieaz o matrice, identic
dimensional cu cele comparate, avnd ca elemente simbolurile 1(unu) respectiv
0(zero), dup cum relaia dintre elementele comparate este ADEVRAT
(TRUE) respectiv FALS (FALSE). Forma general a sintaxei este:
Rezultat=expresie_1 operator relaional expresie_2
n care :
-Rezultat- este o matrice cu elementele 0 i 1, obinut prin
compararea celor dou expresii;
-expresie_1
-expresie_2-
-operator relaional- operatorii relaionali definii n tabelul anterior.
Ex.:
S se compare elementele matricei

,
_

9 8 7
6 5 4
3 2 1
A
cu scalarul 5 log e B
3
2
.
150
MATLAB n ingineria mecanic
Folosind secvana MATLAB urmtoare:
A=[1,2,3;4,5,6;7,8,9]; B=exp(2)-log(5)/log(3);
A<=B
ans =
1 1 1
1 1 0
0 0 0
A>=B
ans =
0 0 0
0 0 1
1 1 1
A==B
ans =
0 0 0
0 0 0
0 0 0
A~=B
ans =
1 1 1
1 1 1
1 1 1
Ex.:
S se compare matricele
1
1
1
]
1

3 1 2
5 0 3
4 2 1
A
i
1
1
1
]
1

1 4 5
2 2 3
3 1 2
B
.
Cu secvena MATLAB urmtoare, rezult:
A=[-1,2,4;3,0,5;2,1,3];B=[2,-1,3;3,-2,2;5,-4,1];
se obin rezultatele:
A<B
ans =
1 0 0
0 0 0
1 0 0
A<=B
151
MATLAB n ingineria mecanic
ans =
1 0 0
1 0 0
1 0 0
A>B
ans =
0 1 1
0 1 1
0 1 1
A>=B
ans =
0 1 1
1 1 1
0 1 1
A==B
ans =
0 0 0
1 0 0
0 0 0
A~=B
ans =
1 1 1
0 1 1
1 1 1
OPERATORI LOGICI
MATLAB utilizeaz trei operatori logici principali i unul auxiliar:
Operatori logici Simbolizare Semnificaie Prioritate
NU ~ NOT 1
I & AND 2
SAU | OR 3
SAU, exclus I XOR 4
152
MATLAB n ingineria mecanic
Aceti operatori lucreaz ca i cei relaionali, element cu element, dar
numai cu matrici sau tablouri avnd elemente logice: 0 sau 1. Dac elementele unei
matrici sunt zero i 1 sau valori diferite de zero, atunci cele diferite de zero se
seteaz, automat, la valoarea logic 1.
Obs: Operatorii logici nu pot fi folosii n
combinarea a dou expresii simbolice (syms).
PRECEDENA OPERATORILOR
Precedena operatorilor determin ordinea n care MATLAB realizeaz
evaluarea expresiilor. Ordinea n care sunt executate operaiile i prioritatea
operatorilor, n MATLAB, este caracterizat de urmtoarele nivele, ordonate
dinspre nivelul superior spre nivelul inferior:
1. Parantezele ( )
2. Transpunerea (.), puterea (.^), transpunerea conjugat
complex (), puterea matricilor (^);
3. Adunarea unar (+), scderea unar (-), negarea logic (~);
4. nmulirea (.*), mprirea la dreapta (./), mprirea la stnga
(.\), nmulirea matricilor (*), mprirea la dreapta a
matricilor (./), mprirea la stnga a matricilor (.\);
5. Adunarea (+), scderea (-);
6. Operatorul columnar (:);
7. Operatorii relaionali: mai mic dect (<), mai mic sau egal
dect (<=), mai mare dect (>),mai mare sau egal dect (>=),
egal cu (==), diferit de (~=);
8. Operatorul logic I (&);
9. Operatorul logic SAU (|);
Prioritatea maxim o are operatorul NU, ceilali operatori logici avnd
prioritate egal, execuia acestora fiind dat de regula de la stnga la dreapta.
Prioritatea de la stnga la dreapta genereaz echivalena ntre dou expresii
relaionale. Astfel, expresia a|b&c este echivalent cu (a|b)&c. Oricum, n cele
mai multe dintre limbaje, expresia a|b&c este echivalent cu a|(b&c), ceea ce
denot, de altfel, prioritatea operatorului & fa de |. Pentru a exista
compatibilitatea cu viitoarele versiuni MATLAB este indicat ca utilizatorul sa
foloseasc paranteze pentru a se specifica prioritatea de execuie a operatorilor &
respectiv |. Urmtoarele dou expresii ilustreaz prioritatea operatorilor:
153
MATLAB n ingineria mecanic
1 | 0 & 0 = 0
0 & 0 | 1 = 1
Tabelul de adevr al acestor operatori este:
Date de intrare and Or xor not
A B A&B A|B xor(A,B) ~A ~B
0 0 0 0 0 1 1
0 1 0 1 1 1 0
1 0 0 1 1 0 1
1 1 1 1 0 0 0
CUVINTE CHEIE
MATLAB rezerv o list de cuvinte cheie, list care poate fi afiat, pentru
evitarea erorilor de evaluare i de redactare a expresiilor logice, cu funcia
iskeyword, n linia de comand MATLAB:
[Cuvinte_cheie]=iskeyword
Cuvinte_cheie =
'break'
'case'
'catch'
'continue'
'else'
'elseif'
'end'
'for'
'function'
'global'
'if'
'otherwise'
'persistent'
'return'
'switch'
'try'
'while'
154
MATLAB n ingineria mecanic
INSTRUCIUNILE if , else , elseif
Instruciunea if (dac) poate fi implementat n format simplu sau
n asociere cu clauzele else (altfel) respectiv elseif (altfel dac).
Aciunea instruciunii if trebuie sa se finalizeze, ntotdeauna, cu instruciunea
end (sfrit). Forma general a sintaxei este:
a) if expresie_logic
grup_de_instruciuni
end
b) if expresie_logic_1
grup_de_instruciuni_A
else
grup_de_instruciuni_B
end
c) if expresie_logic_1
grup_de_instruciuni_A
elseif expresie_logic_2
grup_de_instruciuni_B
end
d) if expresie_logic_1
grup_de_instruciuni_A
elseif expresie_logic_2
grup_de_instruciuni_B
else
grup_de_instruciuni_C
end
Diferena dintre else i elseif se poate vedea n exemplul urmtor :
Instruciunea if- else Instruciunea if- elseif
if A if A
x = a x = a
else elseif B
if B x = b
x = b elseif C
else x = c
if C else
x = c x = d
else end
155
MATLAB n ingineria mecanic
x = d
end
end
end
Ex.: S se calculeze valoarea expresiei :

'

<
+

,
_

+ + +
<

15 x 10 dac
5 e 456 , 0
3
10 x 4 dac 3 x 2 x log
4 x 6 dac 4 e
f
4 x
5
3 4 2
5
3 x
2
, pentru valorile ntregi ale
variabilei x.
Se va folosi urmtoarea secven MATLAB (pentru simplificare se va utiliza
funcia length(x) i o bucl repetitiv for, care va fi prezentat n seciunea
urmtoare):
x=-6:15;
for k=1:length(x)
if x(k)<-4
f(k)=exp(x(k)-3)-4
elseif (x(k)>=-4)&(x(k)<=10)
f(k)=(log(x(k)^2+(2+sqrt(x(k)^4+3))^(1/3)))
else
f(k)=det([pi,3^(1/5);0.456,exp(x(k)^2-4)])
end
end
Rezultatul afiat de MATLAB este urmtorul

:
f =
1.0e+096 *
Columns 1 through 7
-0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
INSTRUCIUNEA DE CICLARE for

se prezint aici numai valoarea final a expresiei f, valorile intermediare fiind omise,
pentru acurateea prezentrii
156
MATLAB n ingineria mecanic
Sintaxa pentru forma general este:
for index=expresie
grup_de_instruciuni
end
n care :
index reprezint contorul de iterare
expresie- este o matrice, un scalar sau, de cele mai multe ori, o
expresie de forma :
n= valoare iniial : pas : valoare final
Regulile specifice buclei for sunt:
1) dac expresia atribuit indexului este un scalar, bucla se execut o
singur dat, valoarea indexului fiind valoarea scalarului
2) dac expresia indexului este un vector linie, bucla se execut de
n ori, unde n reprezint dimensiunea vectorului ;
3) dac expresia este o matrice, indexul va lua toate valorile
matricei pe coloan ;
4) dac expresia este de forma : valoare iniial : pas :
valoare final , iar pasul are valoare pozitiv, atunci valoarea
iniial trebuie sa fie mai mic dect valoarea final ;
5) dac expresia este de forma : valoare iniial : pas :
valoare final , iar pasul are valoare negativ, atunci valoarea
iniial trebuie sa fie mai mare dect valoarea final ;
6) dac expresia este de forma : valoare iniial : valoare
final , atunci pasul de indexare este, implicit, 1 (unu).
Un exemplu foarte simplu pentru utilitatea instruciunii de ciclare for, ar fi
calculul factorialului unui numr natural. Dac se cere calculul numrului de
permutri (factorialul), aferente lui n=10, se folosete urmtoarea secven de
instruciuni:
n = 10;
fact = 1;
for k = 1:n
157
De la Pn la
MATLAB n ingineria mecanic
fact = k * fact;
disp( [k fact] )
end
% FINAL PROGRAM
Rezultatul afiat n fereastra de comand, la apsarea tastei ENTER, este:
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
8 40320
9 362880
10 3628800
Multe probleme n inginerie presupun dezvoltarea unui model matematic
pentru caracterizarea unui proces, n care variabila principal este actualizat ciclic
de-a lungul unei perioade de timp. Aceast operaie se numete actualizare. Pentru
a exemplifica, se consider un proces de actualizare a temperaturii unui corp, a
crui temperatur iniial este 25
o
C, amplasat ntr-un mediu a crui temperatur
este 10
o
C, dup un interval de meninere la temperatura mediului, de 100 minute.
Modul de abordare a acestui tip de probleme este o cale standard:
se divide intervalul de timp n sub-intervale egale (pai), de lungime dt;
dac temperatura de start este T
i
, atunci se va folosi urmtorul model
matematic, pentru calculul temperaturii la un moment i+1, T
i+1
:
( )
f i i 1 i
T T dt K T T
+
n care, K este un coeficient (valoarea K=0,05) care ine seama de
imperfeciunile mediului, iar T
f
este temperatura final (T
f
=10
o
C). Fiierul script
realizat pentru rezolvarea problemei de actualizare, stabilete valoarea iniial a
intervalului de timp (a=0), respectiv final (b=100 minute). Dac intervalul de
afiare nu este un multiplu de pasul de calcul, se va afia un mesaj de eroare
Intervalul de afisare nu este un multiplu de dt !:
K = 0.05;
Tf = 10; %temperatura finala
a = 0; % momentul initial
158
MATLAB n ingineria mecanic
b = 100; % intervalul de timp
Timp_initial = a; % initializarea intervalului de timp
T = 25; % initializarea temperaturii
dt = input( 'dt: ' ); % intervalul de calcul (pasul)
Intervalul_de_afisare = input('Afisarea rezultatelor la interval de
(minute):' );
if Intervalul_de_afisare/dt ~= fix(Intervalul_de_afisare/dt)
disp( 'Intervalul de afisare nu este un multiplu de dt !' );
end
format bank
disp( ' Timp Temperatura' );
disp( [Timp_initial T] ) % afiseaza momentul actualizarii si temperatura
for Timp_actualizare = a+dt : dt : b
T = T - K * dt * (T - Tf);
if abs(rem(Timp_actualizare, Intervalul_de_afisare)) < 1e-6
disp( [Timp_actualizare T] )
end
end
%FINAL PROGRAM
Dup ultima linie de instruciuni, end, (la apsarea tastei ENTER), se
afieaz, n linia de comand un mesaj prin care se cere utilizatorului s introduc
pasul dt, apoi se cere stabilirea intervalului de afiare a rezultatelor, dup un
interval de timp: Afisarea rezultatelor la interval de (minute):. Pentru
exemplificare, se va rula, acest fiier, n dou variante (dt=0.2 i
Intervalul_de_afisare=5, respectiv dt=0.3 i Intervalul_de_afisare=1.33),
rezultatele fiind:
Varianta I ( dt=0.2 i Intervalul_de_afisare=5 )
dt: .2
Afisarea rezultatelor la interval de (minute): 5
Timp Temperatura
0 25.00
5.00 21.67
10.00 19.08
15.00 17.06
20.00 15.49
25.00 14.27
30.00 13.32
35.00 12.58
40.00 12.01
159
MATLAB n ingineria mecanic
45.00 11.56
50.00 11.22
55.00 10.95
60.00 10.74
65.00 10.57
70.00 10.45
75.00 10.35
80.00 10.27
85.00 10.21
90.00 10.16
95.00 10.13
100.00 10.10

Varianta II ( dt=0.3 i Intervalul_de_afisare=1.33 )
dt: .3
Afisarea rezultatelor la interval de (minute): 1.33
Intervalul de afisare nu este un multiplu de dt !
Timp Temperatura
0 25.00
39.90 12.01
79.80 10.27
Ex. : S se calculeze i s se reprezinte grafic funciile :
a) x sin f dac [ ] 2 , 2 x , cu pasul de indexare de 0,1;
b)
[ ]
( ]
( ) ( ]

'

+

+

25 , 8 m daca 19 5 m log
8 , 2 m daca 2
2 , 10 m daca 2 e
g
7 2
3
m
cu pasul de indexare de 0,3.
a) Cu sintaxa Matlab :
x=-2*pi:0.1:2*pi;
f=sin(x);
plot(x,f)
160
MATLAB n ingineria mecanic
se obin valorile funciei f, care vor fi afiate dac se tasteaz, n linia de comand,
numele acesteia, i, ntr-o fereastr grafic Figure 1 reprezentarea funciei f :
b) Pentru funcia g se folosete secventa de program:
m=25:-0.3:-10;
for k=1:length(m)
if (m(k)>=-10)&(m(k)<=2)
g(k)=exp(m(k))+2
elseif (m(k)>2)&(m(k)<=8)
g(k)=-2
elseif (m(k)>8)&(m(k)<=25)
g(k)=(log(m(k)^2-5^(1/7))
+19)/log(3)
end
end
plot(m,g)
Se obin valorile indexate ale funciei g

i graficul din figura alturat :


Ex.: Un fiier script care genereaz petale :
theta = -pi:0.01:pi;
rho(1,:) = 2*sin(5*theta).^2;
rho(2,:) = cos(10*theta).^3;
rho(3,:) = sin(theta).^2;
rho(4,:) = 5*cos(3.5*theta).^3;
for i = 1:4
polar(theta,rho(i,:))
pause
end

nu s-au prezentat aici valorile funciei, pentru acurateea lucrrii


161
-8 -6 -4 -2 0 2 4 6 8
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
-10 -5 0 5 10 15 20 25
-5
0
5
10
15
20
25
MATLAB n ingineria mecanic
Ex.: O secven de instruciuni care
genereaz zone de culoare cu
intensiti diferite :
[x,y,z] = peaks;
contour(x,y,z,20,'k')
hold on
pcolor(x,y,z)
shading interp
hold off
Ex. 7 O secven de instruciuni care mparte o figur n mai multe pri:
t = 0:pi/10:2*pi;
[X,Y,Z] = cylinder(4*cos(t));
subplot(2,2,1); mesh(X)
subplot(2,2,2); mesh(Y)
subplot(2,2,3); mesh(Z)
subplot(2,2,4); mesh(X,Y,Z)
Ex.: O secven de instruciuni care genereaz o matrice:
m=4;n=3;
for i = 1:m
for j = 1:n
A(i,j) = 1/(i + j - 1);
end
end
A =
Columns 1 through 8
1.0000 0.5000 0.3333 0.2500 0.2000 0.1667 0.1429 0.1250
0.5000 0.3333 0.2500 0.2000 0.1667 0.1429 0.1250 0.1111
0.3333 0.2500 0.2000 0.1667 0.1429 0.1250 0.1111 0.1000
162
MATLAB n ingineria mecanic
0.2500 0.2000 0.1667 0.1429 0.1250 0.1111 0.1000 0.0909
0.2000 0.1667 0.1429 0.1250 0.1111 0.1000 0.0909 0.0833
Ex.: Un fiier care genereaz o matrice (s-au introdus, aici, i linii de help,
folosind modul de scriere MATLAB, linia de text, care conine informaia, este
precedat de caracterul %):
for i = 1:10
A(i,i) = 1; % se introduce cifra 1, pe diagonala principal
if (i > 1)
A(i,i-1) = 2; % se introduce cifra 2, n faa diagonalei principale, dar numai pe
ultimele 9 linii,
end
if (i < 10)
A(i,i+1) = 5; % se introduce cifra 5, n dreapta diagonalei principale, dar numai
pe primele 9 linii,
end
end
Dac se tasteaz numele matricei (A), se afieaz urmtorul rezultat:
A =
1 5 0 0 0 0 0 0 0 0
2 1 5 0 0 0 0 0 0 0
0 2 1 5 0 0 0 0 0 0
0 0 2 1 5 0 0 0 0 0
0 0 0 2 1 5 0 0 0 0
0 0 0 0 2 1 5 0 0 0
0 0 0 0 0 2 1 5 0 0
0 0 0 0 0 0 2 1 5 0
0 0 0 0 0 0 0 2 1 5
0 0 0 0 0 0 0 0 2 1
Ex. : Un fiier script de operare cu matrici:
m1=[-4 1 0; 1 -4 1; 0 1 -4]
m2=eye(3)
m3=zeros(3,3)
a=[m1 m2 m3; m2 m1 m2; m3 m2 m1]
b=[-100; -100; -100; 0; 0; 0; 0; 0; 0]
a\b
163
b = ans =
-100 42.8571
-100 52.6786
-100 42.8571
0 18.7500
0 25.0000
0 18.7500
0 7.1429
0 9.8214
0 7.1429
MATLAB n ingineria mecanic
a =
-4 1 0 1 0 0 0 0 0
1 -4 1 0 1 0 0 0 0
0 1 -4 0 0 1 0 0 0
1 0 0 -4 1 0 1 0 0
0 1 0 1 -4 1 0 1 0
0 0 1 0 1 -4 0 0 1
0 0 0 1 0 0 -4 1 0
0 0 0 0 1 0 1 -4 1
0 0 0 0 0 1 0 1 -4
Ex. : Un fiier script de operare cu matrici:
k(1)=1.5;
k(2)=1;
k(3)=1.5;
k(4)=2;
l(1)=0.3;
l(2)=0.1;
l(3)=0.2;
l(4)=0.2;
b=zeros(4,1);
for i=1:3
b(i)=k(i)*l(i)-k(i+1)*l(i+1);
end
b(4)=1;
m=zeros(4,4);
for i=1:3
m(i,i)=k(i)+k(i+1);
m(i+1,i)=-k(i+1);
m(i,i+1)=-k(i+1);
end
m(4,4)=1;
m(4,3)=0;
b
m
x=m\b
164
MATLAB n ingineria mecanic
Rezultatele sunt :
Ex.: Un fiier script de operare cu matrici:
coord(1,1)=-0.6;
coord(1,2)=0;
coord(2,1)=-0.9;
coord(2,2)=1.5;
coord(3,1)=-1.6;
coord(3,2)=1.8;
coord(4,1)=0;
coord(4,2)=2.7;
coord(5,1)=1.6;
coord(5,2)=1.8;
coord(6,1)=0.9;
coord(6,2)=1.5;
coord(7,1)=0.6;
coord(7,2)=0;
c(1,1)=1;
c(1,2)=2;
c(2,1)=2;
c(2,2)=3;
c(3,1)=3;
c(3,2)=4;
c(4,1)=4;
c(4,2)=5;
c(5,1)=5;
c(5,2)=6;
c(6,1)=6;
165
b =
0.3500
-0.2000
-0.1000
1.0000
m =
2.5000 -1.0000 0 0
-1.0000 2.5000 -1.5000 0
0 -1.5000 3.5000 -2.0000
0 0 0 1.0000
x =
0.3471
0.5176
0.7647
1.0000
MATLAB n ingineria mecanic
c(6,2)=7;
c(7,1)=7;
c(7,2)=8;
m=zeros(7,7);
for i=1:7
if c(i,1)~=1
if c(i,1)==8
dist=((coord(c(i,1),1)-coord(c(i,2),1))^2+(coord(c(i,1),2)-
coord(c(i,2),2))^2)^0.5;
elseif c(i,1)==7
dist=((coord(c(i,1),1)-coord(c(i,2),1))^2+(coord(c(i,1),2)-
coord(c(i,2),2))^2)^0.5;
m(11,i)=(coord(c(i,1),1)-coord(c(i,2),1))/dist;
else
dist=((coord(c(i,1),1)-coord(c(i,2),1))^2+(coord(c(i,1),2)-
coord(c(i,2),2))^2)^0.5;
m(2*c(i,1)-3,i)=(coord(c(i,1),1)-coord(c(i,2),1))/dist;
m(2*c(i,1)-2,i)=(coord(c(i,1),2)-coord(c(i,2),2))/dist;
end
end
if c(i,2)~=1
if c(i,2)==8
dist=((coord(c(i,1),1)-coord(c(i,2),1))^2+(coord(c(i,1),2)-
coord(c(i,2),2))^2)^0.5;
elseif c(i,2)==7
dist=((coord(c(i,1),1)-coord(c(i,2),1))^2+(coord(c(i,1),2)-
coord(c(i,2),2))^2)^0.5;
m(11,i)=(coord(c(i,2),1)-coord(c(i,1),1))/dist;
else
dist=((coord(c(i,1),1)-coord(c(i,2),1))^2+(coord(c(i,1),2)-
coord(c(i,2),2))^2)^0.5;
m(2*c(i,2)-3,i)=(coord(c(i,2),1)-coord(c(i,1),1))/dist;
m(2*c(i,2)-2,i)=(coord(c(i,2),2)-coord(c(i,1),2))/dist;
end
end
end
m
b=zeros(11,1);
b(4,1)=-10;
b
166
MATLAB n ingineria mecanic
d=m\b
% FINAL PROGRAM
Acest fiier script, rulat n MATLAB, la apsarea tastei ENTER, va avea
ca efect afiarea urmtoarelor rezultate:
m =
-0.1961 0.9191 0 0 0 0 0
0.9806 -0.3939 0 0 0 0 0
0 -0.9191 -0.8716 0 0 0 0
0 0.3939 -0.4903 0 0 0 0
0 0 0.8716 -0.8716 0 0 0
0 0 0.4903 0.4903 0 0 0
0 0 0 0.8716 0.9191 0 0
0 0 0 -0.4903 0.3939 0 0
0 0 0 0 -0.9191 0.1961 0
0 0 0 0 -0.3939 0.9806 0
0 0 0 0 0 -0.1961 0.3714
b =
0
0
0
-10
0
0
0
0
0
0
0
d =
-2.1265
-3.7535
3.8868
1.1340
-0.4106
-0.2326
-0.1228
167
MATLAB n ingineria mecanic
Ex.:
Un fiier pentru calculul elementelor traiectoriei unui proiectil (vitez,
inlime, distan) lansat sub un anumit unghi fa de orizontal, sub aciunea
gravitaiei:
dt = 0.1;
g = 9.8;
u = 60;
Alfa = input( 'Introduceti unghiul de lansare al proiectilului: ' );
Radian = Alfa * pi / 180; % conversia in radiani
x_initial = zeros(1); y_initial = zeros(1); % initializare
y = 0; t = 0;
i = 1; % initial vector subscript
while y >= 0
t = t + dt;
i = i + 1;
y = u * sin(Radian) * t - g * t^2 / 2;
if y >= 0
Distanta_pe_x(i) = u * cos(Radian) * t;
Inaltimea_pe_y(i) = y;
end
end

plot(Distanta_pe_x, Inaltimea_pe_y,'k'), grid on; hold on
Dup rularea fiierului se afieaz invitaia adresat operatorului de a
introduce datele de iniializare (unghiul de lansare), i realizarea calculelor
necesare reprezentrii grafice a traiectoriei proiectilului:
Pentru cinci unghiuri de lansare diferite, rezult graficul din figur.
168
MATLAB n ingineria mecanic
APLICAII
[1]:
S se compare elementele matricei
1
1
1
]
1

3 1 2
5 0 3
4 2 1
A
cu scalarul B=

;
[2]:
S se compare elementele matricei
1
1
1
]
1

1 4 5
2 2 3
3 1 2
C
cu elementele
matricei
1
1
1
]
1

3 1 2
5 0 3
4 2 1
A
;
[3]:
S se compare elementele matricelor
1
]
1



1
]
1

7 4
13 8
E ;
8 3
2 1
D
;
[4]:
S se compare elementele matricelor
1
1
1
]
1

1
1
1
]
1

1 4 5
2 2 3
3 1 2
Y ;
2
3
4
X

cu scalarul 7 log x
4
3
;
169
MATLAB n ingineria mecanic
[5]:
S se realizeze un fiier script pentru afiarea unei matrici cu dimensiunea
3x4 n care elementele primei linii s difere printr-o constant, numr natural,
elementele celei de-a doua linii s difere prin constanta e
2
, iar elementele ultimei
linii sa difere prin ln8.
[6]:
S se actualizeze fiierul de mai jos astfel nct s se afieze nc dou
butoane la alegere :
k=0;
while k~=3
k=menu('Faceti clic pe una dintre optiuni','Fa asta','Fa alta',
'Iesire');
if k==1
disp('Fa asta...Apasa orice cheie pentru a continua...')
pause
elseif k==2
disp('Fa alta...Apasa orice cheie pentru a
continua...')
pause
end
end
[7]:
S se actualizeze fiierul de mai jos astfel nct s se afieze nc dou
subgrafice, cu titlurile (c) i (d):
170
MATLAB n ingineria mecanic
subplot(2,2,1)
plot(rand(1, 20)),title('(a)')
subplot(2,2,2)
axis([0 4 0 4])
plot([0 4], [0 0], [1 1 2 3 3], [0 2 3 2 0]),title('(b)')
[8]:
S se actualizeze fiierul de mai jos astfel nct s se afieze 8, 12, 24 de
petale:
x = 0:pi/40:2*pi;
polar(x, sin(2*x)),grid
171
MATLAB n ingineria mecanic
[9]:
S se actualizeze fiierul de mai jos astfel nct s se solicite
utilizatorului s introduc diametrul desenului:
n=1:200;
d = 137.51;
th = pi*d*n/180;
r = sqrt(n);
plot(r.*cos(th), r.*sin(th), '*')
axis square
172
MATLAB n ingineria mecanic
[10]:
S se actualizeze fiierul de mai jos astfel nct pasul de desenare s fie
mai mic, respectiv, n alt variant, s fie mai mare:
x = 0;
y = 0;
dx = pi/100;
p = plot(x, y, 'o', 'EraseMode', 'none'); % 'xor' afieaz numai
punctele curente
% ' none' afieaz toate punctele
axis([0 20*pi -2 2])
for x = dx:dx:20*pi;
x = x + dx;
y = sin(x);
set(p, 'XData', x, 'YData', y)
pause(0.05)
end
173
MATLAB n ingineria mecanic
[11]:
S se actualizeze fiierul de mai jos astfel nct sombrero-ul s fie
nclinat spre stnga sau spre dreapta, i lumina s cad din dreapta :
[x y ] = meshgrid(-8 : 0.5 : 8);
r = sqrt(x.^2 + y.^2) + eps;
z = sin(r) ./ r;
surf(x,y,z,'facecolor','interp','edgecolor','none', ...
'facelighting','phong')
colormap jet
174
MATLAB n ingineria mecanic
daspect([10 5 1])
axis tight
view(-50, 30)
camlight right
[12]:
S se actualizeze fiierul de mai jos astfel nct imaginea reprezentrii
grafice s fie amplasat pe o matrice grafic de 3 linii i 3 coloane (ca n figur):
subplot(3,3,1)
x = 0:pi/20:pi;
bar(x,sin(x),'w'), shading faceted,
subplot(3,3,2)
x = 0:pi/20:pi;
bar(x,sin(x),'w'), shading faceted,
subplot(3,3,3)
x = 0:pi/20:pi;
bar(x,sin(x),'w'), shading faceted
subplot(3,3,4)
x = 0:pi/20:pi;
bar(x,sin(x),'w'), shading faceted
subplot(3,3,5)
x = 0:pi/20:pi;
bar(x,sin(x),'w'), shading faceted
175
MATLAB n ingineria mecanic
subplot(3,3,6)
x = 0:pi/20:pi;
bar(x,sin(x),'w'), shading faceted
subplot(3,3,7)
x = 0:pi/20:pi;
bar(x,sin(x),'w'), shading faceted
subplot(3,3,8)
x = 0:pi/20:pi;
bar(x,sin(x),'w'), shading faceted
subplot(3,3,9)
x = 0:pi/20:pi;
bar(x,sin(x),'w'), shading faceted
[13]:
S se actualizeze fiierul de mai jos astfel nct utilizatorul s fie solicitat
s introduc viteza iniial i timpul total al micrii
g = 9.8;
v0 = 60;
t = 0 : 0.1 : 12.3;
s = v0 * t - g / 2 * t .^ 2;
plot(t, s), title( 'Miscarea pe verticala sub actiunea gravitatiei' )
xlabel( 'Timpul' ), ylabel( 'Inaltimea' ), grid
disp( [t' s'] )
176
MATLAB n ingineria mecanic
CAPITOLUL V
CALCULE NUMERICE CU POLINOAME
Pentru operarea cu polinoame, MATLAB utilizeaz funciile standard din
tabelul urmtor:
Funcia Descriere
conv(p,q) -produsul polinoamelor p i q
[C,R]=deconv(p,q) -Ctul, C, i restul R al mpririi
polinoamelor p i q
1. poly(r)
2. poly(A)
1. -determin polinoamele cu rdcini
date n vectorul coloan r
2. -determin coeficienii polinomului
caracteristic ai matricei ptratice A
1. polyder(p)
2. polyder(p,q)
3. [A,B]=polyder(p,q)
1. -derivata polinomului p
2. -derivata produsului polinoamelor p
i q
3. -derivata fraciei raionale p/q
1. polyfit(x,y,n)
2. [p,S]=polyfit(x,y,n)
3. [p,S,miu]=polyfit(x,y,
n)
1. aproximeaz un set de date x i y cu
un polinom de gradul n
2. aproximeaz un set de date x i y cu
un polinom de gradul n
3. aproximeaz un set de date x i y cu
un polinom de gradul n
1. polyval(p,x)
2. polyval(p,q)
1. evaluarea polinomului p n punctul
x, sau pe intervalul x
2. evaluarea polinomului p n punctele
vectorului q
polyvalm(A) -evaluarea polinomului n elementele matricei
ptratice A
[r,p,k]=residue(a,b) -descompunerea raportului a dou polinoame
a i b n fracii simple, avnd ca rezultat
vectorul coloan al reziduurilor, r, vectorul
coloan al polilor, p, i k - vectorul linie al
polinomului ct (A/B)
roots(p) -calculeaz rdcinile unui polinom p
177
MATLAB n ingineria mecanic
REPREZENTAREA POLINOAMELOR
Polinoamele sunt reprezentate, in MATLAB, ca vectori linie, coninnd
coeficienii ordonai dup puterile descresctoare ale variabilei. Forma general a
polinoamelor, n scrierea algebric:
f(x) = a
n
x
n
+a
n-1
x
n-1
+.....+a
2
x
2
+a
1
x+a
0
iar reprezentarea acestuia, n MATLAB, este dat prin vectorul linie f=[a_n,a-
_n_1,...,a2,a1,a0], n care elementele sunt reprezentate de coeficienii polinomului
de grad n. De exemplu, polinomul p(x)=x
4
+7x
3
+x-8 se introduce astfel:
p=[1,7,0,1,-8]
Ex. Fie polinoamele: f(x) = x
3
+2x
2
+0,5x-6,5 ; h(x)=x
5
+2x
2
-6
3
5
Aceste polinoame se scriu, n MATLAB:
f = [1,2, 0.5, -6.5];
h=[1,0,0,2,0,-6*(5^(1/3))];
Obs.: n polinomul h(x) coeficienii lui x
4
, x
3
respectiv x, care lipsesc, sunt
nlocuii cu valoarea 0 (zero). Altfel, MATLAB va introduce un polinom de grad
inferior celui real (de exemplu, dac h(x) ar fi introdus de la tastatur numai cu
coeficienii h=[1,2,-6*(5^(1/3))] acesta reprezint polinomul h(x)=x
2
+2x--6
3
5 )
PRODUSUL POLINOAMELOR
Produsul a dou polinoame se realizeaz, n MATLAB, folosind funcia
conv() :
c = conv(a, b)
unde :
a, b - vectorii coeficienilor polinoamelor care se nmulesc
Ex.:
S se calculeze produsul : g(x) = (x
2
+x-2)(x+1)
-n MATLAB:
g1 = [1 1 -2];g2 = [1 1];
g = conv(g1, g2)
g = [1 2 -1 -2]
178
MATLAB n ingineria mecanic
care n form algebric uzual se scrie : g(x) = x
3
+2x
2
-x-2
MPRIREA POLINOAMELOR
Pentru realizarea mpririi a dou polinoame se folosete funcia
MATLAB deconv() :
[c, r] = deconv(a, b)
n care :
c - vectorul coeficienilor polinomului ct
r - vectorul coeficienilor polinomului rest
Polinoamele c(x) i r(x) respect teorema mpririi cu rest (p(x)=d(x)*c(x)
+r(x), n care p(x) este polinomul- demprit, d(x) reprezint polinomul-
mpritor :
) x ( d
) x ( r
) x ( c
) x ( d
) x ( p
+
)
Ex.:
S se calculeze ctul i restul mpririi polinoamelor h
1
(x)= x
3
+2x
2
-2 i
h
2
(x)= x
2
+x, folosind o funcie MATLAB.
-n MATLAB:
h1 = [1 2 0 -2];
h2 = [1 1 0];
[c, r] = deconv(h1, h2)
c =
1 1
r =
0 0 -1 -2
n format algebric uzual ctul mpririi este: c(x)=x+1, iar restul r(x)= -x-2 .
Determinarea rdcinilor unui polinom
Determinarea rdcinilor unui polinom, se realizeaz folosind funcia
MATLAB roots() :
r = roots(a)
179
MATLAB n ingineria mecanic
n care:
a - vector linie al coeficienilor polinomului
Ex.:
Fie polinomul f(x) = x
3
-2x
2
-3x+10. S se determine rdcinile ecuaiei
f(x)=0.
-n MATLAB
f = [1 -2 -3 10]
r=roots(f)
se obine vectorul coloan al rdcinilor
r =
2+i
2-i
-2
DETERMINAREA COEFICIENTILOR POLINOAMELOR
DAC SE CUNOSC RDCINILE
Determinarea unui polinom, dac se cunosc rdcinile acestuia, se
utilizeaz funcia MATLAB poly():
p = poly(z)
n care:
z vectorul- coloan al rdcinilor
Ex.:
Fie rdcinile unui polinom : x
1
=2; x
2
=3; x
3
=4. S se determine polinomul
cu rdcinile x
1
; x
2
; x
3
.
Problema se va rezolva prin dou metode:
a)-algebric-clasic:folosind sumele Vite
b)-n MATLAB: folosind funcia poly()
a) Soluia algebric:
180
MATLAB n ingineria mecanic
Folosind relaiile Vite, se obin sumele:
S
1
= x
1
+x
2
+x
3
S
1
= 9
S
2
= x
1
x
2
+x
1
x
3
+x
2
x
3
S
2
=26
S
3
= x
1
x
2
x
3
S
3
= 24
Polinomul cu rdcinile x
1
; x
2
; x
3
se scrie, folosind forma general a unui
polinom (pentru care se cunosc sumele Vite p(x)=x
n
-S
1
x
n-1
+S
2
x
n-2
-......-S
n
)
devine: p(x) = x
3
-9x
2
+26x-24.
b) Rezolvare cu funcia poly():
Folosind funcia MATLAB poly(), rezolvarea este imediat:
b=[2;3;4];
p=poly(b)
p =
1 -9 26 -24
Polinomul p(x), n format algebric, uzual, se scrie p(x) = x
3
-9x
2
+26x-24 .
Cu funcia poly(), se determin i coeficienii polinomului caracteristic al
unei matrici ptratice. De exemplu, cu secvena urmtoare, se determin polinomul
ale carui rdcini (se mai numesc i rdcini caracteristice) sunt valorile proprii
ale matricei (valorile proprii ale matricei se determin cu funcia MATLAB eig()):
A = [1.2 3 -0.9; 5 1.75 6; 9 0 1];
p=poly(A)
p =
1.0000 -3.9500 -1.8500 -163.2750
radacini=roots(p)
radacini =
7.2826
-1.6663 + 4.4321i
-1.6663 - 4.4321i
valorile_proprii=eig(A)
valorile_proprii =
7.2826
-1.6663 + 4.4321i
-1.6663 - 4.4321i
EVALUAREA NUMERIC A UNUI POLINOM
181
MATLAB n ingineria mecanic
1) Evaluarea simpl:
Se folosete n cazul n care polinomul are o expresie simpl i valoarea
atribuit variabilei este un scalar.
Ex.:
S se calculeze valoarea polinomului f(x) = 3x
4
-5x
3
+3x-1 n punctul x =
2.
n MATLAB, se declar, mai nti, valoarea variabilei, apoi se introduce
polinomul de evaluat, folosind regulile standard:
x = 2;
f = 3*(x^4)-5*(x^3)+3*x-1
f =
13
2) Evaluarea numeric element cu element
Cnd variabila n care se evalueaz polinomul este un vector sau o matrice
problema se rezolv respectnd regulile de calcul cu matrici i tablouri de valori:
a)- dac variabila este un vector (linie sau coloan), calculul valorii
polinomului se poate realiza numai dac expresia polinomului este
introdus de la tastatur utiliznd regulile pentru calculul cu
tablouri de valori (variabila este considerat de MATLAB un
tablou de valori, deci se va folosi caracterul . punct, pentru
operaiile n care este implicat variabila) altfel, MATLAB
afieaz un mesaj de eroare:
??? Error using ==> ^
Matrix must be square.
??? Eroare la utilizarea ^
Matricile trebuie sa fie ptratice
Ex.
1)- variabila este un vector linie:
x= [1 2 0];
f = 3*x.^4-5*x.^3+3*x-1
182
MATLAB n ingineria mecanic
f =
0 13 -1
Obs.:Dac polinomul este introdus fr caracterul punct . n
faa operatorului pentru ridicare la putere:
f = 3*x^4-5*x^3+3*x-1
MATLAB afieaz mesajul:
??? Error using ==> ^
Matrix must be square.
Ex.
2)- variabila este un vector coloan :
x=[1;2;0];
f = 3*x.^4-5*x.^3+3*x-1
f =
0
13
-1
b)- dac variabila este o matrice ptrat, iar expresia ce urmeaz a
fi evaluat este introdus de la tastatur neinnd cont de modul de
lucru cu tablouri de valori, expresia este calculat astfel: se
determin puterile matricei dup care sunt nmulite cu
coeficienii, rezultatele acestor nmuliri fiind, apoi, nsumate
algebric, soluia fiind, evident, o matrice de aceeai dimensiune ca
i variabila. n acest caz, polinomul f(x) devine f(X), iar termenul
liber a
0
devine a
0
*I (unde I este matricea unitate de ordin egal cu
ordinul matricei X):
Ex.:
x=[1,2;3,4];
f = 3*x^4-5*x^3+3*x-1
f =
414 605
908 1323
c)- dac variabila este un tablou de valori (numrul de linii diferit
de numrul de coloane), expresia de evaluat trebuie introdus de la
183
MATLAB n ingineria mecanic
tastatur folosind regulile de calcul specifice tablourilor de valori
(operatorii: .^ sau .* ) altfel MATLAB afieaz un mesaj de
eroare:
Ex.:
x=[1,2,3;4,5,6];
f = 3*x.^4-5*x.^3+3*x-1
f =
0 13 116
459 1264 2825
Obs.: Dac expresia f(x) se introduce:
f = 3*x^4-5*x^3+3*x-1
MATLAB afieaz mesajul :
??? Error using ==> ^
Matrix must be square.
EVALUAREA POLINOAMELOR CU
FUNCIA MATLAB POLYVAL(P, Q)
Evaluarea expresiilor polinomiale, n MATLAB, se poate realiza folosind
funcia polyval():
f = polyval(p, q)
sau
f=polyvalm(p,q)
n care:
p - vectorul linie al coeficienilor polinomului;
q vectorul , respectiv, matricea n care se evalueaz polinomul p.
Ex.:
S se determine valoarea polinomului p(x)=3x
4
+x
3
+2x
2
-1 n punctele
vectorului q=[1,2,3,4,0], respectiv ale matricelor Q = [1 2 ; 3 4] i R = [1 2 3 ;
3 4 5].
n MATLAB:
p = [3 1 2 0 -1];
184
MATLAB n ingineria mecanic
q = [1 2 3 4 0]; Q = [1 2 ; 3 4]; R = [1 2 3 ; 3 4 5];
f1=polyval(p,q)
f 1=
5 63 287 863 -1
f2=polyval(p,Q)
f2 =
5 63
287 863
f3=polyvalm(p,Q)
f3 =
647 944
1416 2063
f4=polyval(p,R)
f4 =
5 63 287
287 863 2049
f5=polyvalm(p,R)
??? Error using ==> polyvalm
Matrix must be square.
EVALUAREA PE INTERVALE
Dac se cere evaluarea unui polinom pe un interval n n puncte:
- se mparte intervalul n n puncte, dup o regul prestabilit;
- se evalueaz polinomul folosind funcia MATLAB polyval().
Ex.:
S se determine valoarea polinomului p(x)=3x
4
+x
3
+2x
2
-1, pentru valorile x
[0,5] n punctele fixe distanate la 0,2 uniti.
n MATLAB:
x = 0:0.2:5;
p = [3 1 2 0 -1];
f = polyval(p, x)
f =
1.0e+003 *
Columns 1 through 10
185
MATLAB n ingineria mecanic
-0.0010 -0.0009 -0.0005 0.0003 0.0020 0.0050 0.0098 0.0172 0.0279 0.0428
Columns 11 through 20
0.0630 0.0896 0.1239 0.1672 0.2210 0.2870 0.3668 0.4623 0.5755 0.7083
Columns 21 through 26
0.8630 1.0419 1.2473 1.4819 1.7482 2.0490
CALCULUL DERIVATEI
Derivata polinomului
Derivata polinomului se calculeaz folosind funcia MATLAB polyder():
D = polyder(c)
n care:
c - vectorul linie al coeficienilor
Ex.:
S se calculeze derivata polinomului A(x) = x
3
+2x
2
-x+2
A = [1 2 -1 2]
D = polyder(A)
D =
3 4 -1
DERIVATA PRODUSULUI A DOU POLINOAME
Prin definiie, derivata produsului a dou polinoame este tot un polinom,
obinut prin relaia:
( A(x) B(x) )
'
= A
'
(x) B(x) + A(x) B
'
(x). Aadar, calculul acestei derivate
implic folosirea aceleiai funcii MATLAB polyder(), n care, argumentul de
intrare (nscris, ntotdeauna, ntre paranteze rotunde), este format din vectorii linie
ai coeficienilor celor dou polinoame:
D = polyder(A, B)
Ex.:
S se determine derivata produsului (x
3
+2x
2
-x+2) (x-1).
n MATLAB:
A = [1 2 -1 2]; B = [1 -1];
186
MATLAB n ingineria mecanic
D_prod = polyder(A, B)
D_prod =
4 3 -6 3
DERIVATA CTULUI A DOU POLINOAME
Se cunoate faptul c derivata ctului a dou polinoame este o expresie
raional. n consecin, funcia MATLAB, pentru calculul derivatei ctului a dou
polinoame se introduce cu parametri de ieire (parametrii de ieire, n acest caz
numrtorul respectiv numitorul expresiei raionale rezultai ca urmare a
calculului derivatei, se introduc n linia de comand ntre paranteze drepte, n
partea stng a semnului de atribuire, = ). Pentru calculul derivatei ctului a
dou polinoame se folosete funcia MATLAB polyder():
[M, N] = polyder(A, B)
n care:
-M i N sunt polinoamele de la numrtorul respectiv numitorul expresiei
derivate;
-A i B sunt polinoamele de la numrtorul respectiv numitorul expresiei
ce urmeaz a fi derivat.
Ex.:
S se determine derivata expresiei raionale:
1 x
2 x x 2 x
2 3

+ +
.
n MATLAB:
A = [1 2 -1 2]; B = [1 -1];
[M, N] = polyder(A, B)
M =
2 -1 -4 -1
N =
1 -2 1
n format algebric uzual, rezultatul se scrie:
( )
2
2 3
1 x
1 x 4 x x 2


ADUNAREA I SCDEREA POLINOAMELOR
187
MATLAB n ingineria mecanic
Aceste operaii se pot executa numai dac polinoamele au acelai grad, prin
urmare polinoamele trebuie transformate, prin extindere spre stnga, astfel nct
acestea s fie de acelai grad. Dup uniformizarea gradului, adunarea algebric a
polinoamelor se realizeaz, n MATLAB, ca o nsumare a doi vectori de aceeai
dimensiune.
Ex.:
S se calculeze suma i diferena polinoamelor: g(x) = x
4
-5x
2
+6x-1 i h(x)
= x
3
+3x-2.
n MATLAB, ntruct polinomul h(x) are gradul III, acesta va fi adus la
gradul IV corespunztor polinomului g(x) prin impunerea unui coeficient fals
(zero):
Astfel:
g = [1 0 -5 6 -1]; h = [0 1 0 3 -2];
suma = g+h
suma =
1 1 -5 9 -3
dif = g-h
dif =
1 -1 -5 3 1
DESCOMPUNEREA N FRACII SIMPLE
Orice expresie raional,
) x ( B
) x ( A
se poate descompune n fracii simple,
dup rdcinile polinomului de la numitor (soluiile numitorului se numesc poli):
( )
( )
) x ( k
p x
r
...
p x
r
p x
r
p x
r
x B
x A
n
n
3
3
2
2
1
1
+

+ +

Obs.: Dac polul p


j
are ordinul m de multiplicitate expresia se scrie:
188
MATLAB n ingineria mecanic
( )
( ) ( )
( ) ( ) ( )
m
j
1 m j
3
j
2 j
2
j
1 j
j
j
p x
r
...
p x
r
p x
r
p x
r
x B
x A

+ +

+ + +
ntruct descompunerea n fracii simple are ca rezultat trei vectori, funcia
MATLAB residue(), se introduce cu parametri de ieire. Funcia MATLAB pentru
descompunerea n fracii simple este:
[r, p, k] = residue(A, B)
n care:
r - vectorul coloan al reziduurilor;
p - vectorul coloan al polilor;
k - vectorul linie al polinomului ct (A/B)
Ex.:
S se descompun n fracii simple expresia:
( )
( )
20 x 9 x
6 x 11 x 6 x
x B
x A
2
2 3
+
+
.
n MATLAB (se vor calcula, pentru comparaie, ctul polinoamelor A(x),
B(x); ctul respectiv restul mpririi polinoamelor A(x), B(x) i apoi, se va
descompune n fracii simple expresia A(x)/ B(x)) :
A = [1 -6 11 -6]; B = [1 -9 20];
[Catul,Restul]=deconv(A,B)
Catul =
1 3
Restul =
0 0 18 -66
[reziduuri_partiale, polii_fractiei, coeficientii_catului] = residue(A,B)
reziduuri_partiale =
24
-6
189
MATLAB n ingineria mecanic
polii_fractiei =
5
4
coeficientii_catului =
1 3
Acest rezultat poate fi transcris, n format algebric, astfel:
( )
( ) 3 x
4 x
6
5 x
24
20 x 9 x
6 x 11 x 6 x
2
2 3
+ +

+
+
190
MATLAB n ingineria mecanic
CAPITOLUL VI
CUTAREA DATELOR N TABELE
a.) CUTAREA DATELOR N TABELE UNIDIMENSIONALE
Cutarea datelor n tabele este o operaiune util n situaiile n care sunt
necesare verificri ale elementelor unei matrici sau unei serii de elemente ordonate
cresctor n prima coloan. Versiunile anterioare versiunii MATLAB 5.3 dispun de
o funcie specific de cutare n tabele, funcia table1(tabel, xi), n timp ce,
versiunile recente ale MATLAB dispun funcii specifice care realizeaz aceast
operaiune (de cutare n tablouri de date) prin interpolare. Tabelul de date trebuie
s fie organizat ca o matrice astfel nct n prima coloan se gsesc valorile lui x
(abscisa ordonat cresctor) iar n celelalte coloane sunt valorile y corespunztoare,
printre care pot fi cutate valori intermediare.
Obs.:
Dac x se gsete ntre dou valori din tabel funcia
table1() returneaz o valoare interpolat liniar;
Funcia MATLAB table1() este nlocuit n versiunile
superioare ale MATLAB(ulterioare versiunii 5.3) cu
funciile interp1(),interp2(), interp3(), interpft(),
interplat(), interplon(), interpm(), interpn().
Ex.:
Fiind date perechile de numere (x,y) : (-2,6); (-1,2); (0,3); (2,1); (4,7) ,se
cere s se gseasc valorile y corespunztoare pentru x
1
= -1; x
2
= 3; x
3
= 3.5; x
4
=
0.5; x
5
= 3.75; x
6
= -0.573.
Soluie:
-se organizeaz perechile de numere (x,y) ca matrice cu 2 coloane, apoi se
folosete funcia table1(), pentru a gsi valorile cerute:
tablou_original =[-2,6; -1,2; 0,3; 2,1; 4,7];
y1= table1(tablou_original,-1)
y1 = 2
y2=table1(tablou_original,3)
191
MATLAB n ingineria mecanic
y2 = 4
y3=table1(tablou_original,3.5)
y3 = 5.5
y4=table1(tablou_original,0.5)
y4 = 2.5
y5=table1(tablou_original,3.75)
y5 = 6.25
y6=table1(tablou_original,-0.573)
y6 = 2.427
Atenie !
Coloana I trebuie s fie monoton (elementele trebuie s fie
ordonate cresctor) !
Valorile cutate trebuie s se ncadreze ntre cea mai mic i cea
mai mare valoare a lui x, altfel, se afieaz un mesaj de eroare.
Astfel, dac se cere s se gseasc valoarea corespunztoare lui y
atunci cnd x=5, MATLAB afieaz urmtorul mesaj :
y7=table1(tablou_original,5)
??? Error using ==> table1
x0 larger than all values in first column
???Eroare la utilizarea ==> table1
x0 este mai mare dect toate valorile primei coloane
b.) CUTAREA DATELOR N TABELE BIDIMENSIONALE
n cazul tablourilor de valori bi- dimensionale (aceste tablouri se caracterizeaz
prin urmtoarea particularitate:elementele sunt aranjate dup dou direcii x i y,
acestei perechi i corespunde o a treia valoare z ), funcia MATLAB utilizat pentru
cutarea valorilor z corespunztoare unei perechi (x,y) este:
table2(tab,x,y)
Obs.:
192
MATLAB n ingineria mecanic
Funcia MATLAB table2() este nlocuit n versiunile superioare
versiunii MATLAB 5.3 cu funcia interp2(), n linia de comand a
versiunilor superioare ale MATLAB apare mesajul de avertizare
: Warning: TABLE2 is obsolete and will be removed in future
versions. Use INTERP2 instead. (Atenie:TABLE2 este
depit i va fi nlocuit n viitoarele versiuni. Folosii
INTERP2 pentru acelai scop!)
Condiii:
-tabelul tab este organizat ca o matrice, cu n linii i m coloane,
ntotdeauna avnd, pe poziia (1,1), elementul 0 ;
-numrul de linii este dat de numrul valorilor argumentului x, la
care se adaug o linie pentru introducerea valorilor argumentului y,
iar numrul de coloane este dat de numrul valorilor lui y;
-valorile x-ilor se plaseaz pe prima coloan, n ordine cresctoare,
ncepnd cu a 2-a linie;
-valorile y-ilor se plaseaz pe prima linie, n ordine cresctoare,
ncepnd cu a 2-a coloan;
Celelalte elemente ale matricei sunt valorile z (obinute prin msurtori,
calcule, etc.).
Ex.:
Fiind date tripletele:
x y
0 1 2 3 4 5 6 7 8 9 10
-3 0 1 2 4 8 7 1
1
0 1 1
2 9 3 1 7 6 5 3 1 0 -3
8 -8 9 1 0 2 -8 2 1 0 1
10
0
0 0 1 7 2 8 1 2 1 0
S se gseasc valorile corespunztoare perechilor (x,y): (-3,7); (-3,6.5); (-2,6);
(50,8); (99,9.9); (-4,8); (2,11).
Soluie:
tablou_original_2= [0,1,2,3,4,5,6,7,8,9,10;-3,0,1,2,4,8,7,11,0,1,1;
2,9,3,1,7,6,5,3,1,0,-3;8,-8,9,1,0,2,-8,2,1,0,1;
193
MATLAB n ingineria mecanic
100,0,0,1,7,2,8,1,2,1,10] ;
z1=table2(tablou_original_2,-3,7)
z1=11
z2=table2(tablou_original_2,-3,6.5)
z2=9
z3=table2(tablou_original_2,-2,6)
z3=6.6
z4=table2(tablou_original_2,50,8)
z4=1.4565
z5=table2(tablou_original_2,99,9.9)
z5=0.1087
z6=table2(tablou_original_2,-4,8)
??? Error using ==> table2
x0 smaller than all values in first column
??? Eroare la utilizarea ==> table2
x0 este inferioar valorilor din prima coloan
z7=table2(tablou_original_2,2,11)
??? Error using ==> table2
x0 larger than all values in first column
??? Eroare la utilizarea ==> table2
x0 este superioar valorilor din prima coloan
194
MATLAB n ingineria mecanic
INTERPOLAREA I REGRESIA
n foarte multe aplicaii practice apare necesitatea evalurii
aproximative a unei funcii
[ ] [ ] b a, , b , a : f . Problema
aproximrii funciilor intervine n situaii de o mare diversitate, multitudinea
formulrilor i metodelor de rezolvare asociate constituind o reflectare direct a
acestei diversiti.
n aplicaii este frecvent necesar utilizarea unor funcii pentru care sunt
cunoscute doar valorile corespunzatoare unui set discret de valori ale
argumentelor. Astfel de dependene pot reprezenta, spre exemplu, tabelarea unor
funcii matematice sau a unor mrimi fizice msurate sau calculate. Pentru
simplitatea discuiei ne limitm n cele ce urmeaz la funcii reale de o
variabil real. n toate cazurile, pentru funcia considerat
[ ] [ ] b a, , b , a : f sunt specificate valorile
i
y
ntr-un numar de
puncte de reea
[ ] b , a x
i
, adic
n , 3, 2, 1, i , y ) x ( f
i i

Prelucrarea numeric ulterioar a acestor funcii impune adesea i
utilizarea unor valori corespunzatoare unor argumente diferite de cele tabelate.
n multe situaii, ns, obinerea unor informaii suplimentare este dificil, dac
nu chiar imposibil. Astfel, chiar dac este cunoscut algoritmul de calcul al
funciei, complexitatea acestuia poate face uneori ineficient utilizarea lui pentru
detalierea iuformaiei. Pe de alta parte, dac valorile tabelate provin din
observaii, ele sunt, n general, afectate de erori de msur.
n toate situaiile menionate, pentru a sintetiza informaia asupra
funciei tabelate f i a o putea utiliza eficient n calcule, se impune aproximarea
ei printr-o funcie continu, numit funcie model, ( )
m 1
a , , a ; x F F , care
depinde n general de un numar de parametri ajustabili, a
j
,-, numii parametri de
model. Forma funciei F i valorile parametrilor a
j
trebuie determinate astfel
nct funcia discret f s fie aproximat optim ntr-un anumit sens.
Alegerea formei concrete a funciei model F este o problema netrivial
i ea trebuie s aib la baz o fundamentare riguroas. n linii mari, stau la
dispoziie urmatoarele opiuni:
195
MATLAB n ingineria mecanic
funcia model se alege dintr-o clas convenabil de funcii (cum ar fi:
polinoame, funcii gaussiene etc.), care ofer simplitate i eficien n
prelucrri ulterioare;
funcia model este derivat dintr-o teorie, n cadrul careia parametrii de
model au o semnificaie bine stabilit;
funcia model rezult dintr-un compromis ntre constrngerile i avantajele
opiunilor anterioare.
Pentru a putea determina, practic, valorile optime ale parametrilor de
model, trebuie definit o funcional care s reflecte gradul n care funcia model
F aproximeaz funcia tabelat f pentru o alegere particular, a parametrilor.
Admind ca f i F aparin spaiului
[ ] b , a C
2
al funciilor de ptrat sumabil
pe [a,b], o msur sugestiv a abaterii modelului fa de funcia modelat este
dat de distana dintre cele dou funcii:
( ) ( ) ( ) [ ]
2
1
b
a
2
dx a ; x F x f F , f d

'

unde s-a utilizat notaia vectorial ( ) , a , a a


2 1
. Evident, aceast definiie nu
este utilizabil ca atare, deoarece implic i cunoaterea expresiei anlitice a
funciei f. Se poate utiliza, ns, o definiie mai puin riguroas, dar aplicabil.
pentru funcii discrete:
( ) ( ) ( ) [ ]
2
1
n
1 i
2
i i
a ; x F x f F , f d

'

Aproximarea pe baza acestei distane este numit aproxirnare n medie


ptratic i este utilizat n doua dintre cele mai importante metode de mode-
lare a funciilor tabelate: mterpolarea i regresia.
Dac, valorile tabelate ( )
i i
x f y sunt considerate exacte (neafectate
de erori), este firesc s se impun anularea distanei dintre funciile f i F:
( ) 0 F , f d
Aceasta revine la construirea unei funcii model, aparinnd unei
anumite clase, care s ia, n punctele de tabelare
i
x
, aceleai valori ca i
funcia f(x):
196
MATLAB n ingineria mecanic
( ) n , 2, 1, i , y a ; x F
i

Funcia care satisface aceste condiii este utilizat, n mod normal,
pentru aproximarea funciei f(x) pe intervalul [ ]
n 1
x , x iar procedeul se numete
interpolare. Funcia
( ) a ; x F
poart numele de funcie de interpolare sau
interpolant, iar nodurile
i
x
se mai numesc i puncte de interpolare. Geometric,
interpolarea implic gsirea unei curbe
( ) a ; x F y
care trece prin toate
punctele ) y , x ( M
i i i
. De exemplu, presupunnd funcia y=sinx, reprezentat
grafic n punctele [ ] , x , interpolarea n apte puncte echidistante, ale
intervalului, este realizat cu o funcie MATLAB specific, i surprins n imaginea
alturat.
Dac, argumentele pentru care se evalueaz interpolantul se afl nafara
intervalului [ ]
n 1
x , x procedeul se numete extrapolare.
Cu un asemenea enun, general ns, problema poate avea o infinitate de
soluii sau nici una, n funcie de clasa
creia i aparine funcia model.
Problema interpolarii devine
neambigu dac n locul unei funcii
model arbitrare cutm un polinom P
m
(x)
de grad nu mai mare decat (n 1), care
satisface condiiile de interpolare. Din
acest set de condiii se pot determina cei
(m+1) coeficieni ai polinomului i
metoda se numete interpolare
polinomial.Funciile de interpolare
polinomiale sunt cele mai utilizate n
practic. Dintre acestea amintim funcia
Lagrange i interpolanii spline i Akima
197
MATLAB n ingineria mecanic
(netezi pe poriuni). Totui, n anumite cazuri se dovedesc utile i funciile de
interpolare raionale. La randul lor, funciile trigonometrice conduc la aa-
numita interpolare trigonometric, i la metodele Fourier nrudite.
Dac valorile tabelate ( )
i i
x f y provin din observaii, ele sunt
afectate n general de erori de msurare, imprecizia fiecrei valori fiind
specificat de obicei prin deviaia standard
i
asociat:
n astfel de cazuri, funcia model F = F(x; a) este cu att mai bun cu
ct sunt mai elaborate considerentele pe baza carora i s-a stabilit forma (cu
ct este mai puin empiric). Avnd n vedere imprecizia datelor, nu este de
asteptat ca funcia model s interpoleze punctele tabelate (chiar dac acest lucru
este teoretic posibil) i este deci firesc s se impun minimizarea distanei d(f, F)
n raport cu valorile parametrilor:
j
a
im min ) F , f ( d
nu anularea ei riguroas ca n cazul interpolrii. n mod concret, aceasta
revine la determinarea celor m parametri, j
a
, ai funciei model F(x; a),
aparinnd unei anumite clase, care minimizeaz suma abaterilor ptratice
punctuale ale funciei model fa de datele tabelate:
( ) [ ]


n
1 i
2
i i
a ; x F y S
198
MATLAB n ingineria mecanic
Acest procedeu se numete regresie sau ajustare prin metoda celor mai
mici ptrate. Termenul preluat din limba englez este fitare (de la "to fit"a
potrivi), desemnnd procesul de ajustare a parametrilor curbei de regresie.
Intr-un context mai larg, funcionala
( ) [ ]


n
1 i
2
i i
a ; x F y S
reprezint
aa-numita funcie de merit a procesului de ajustare. Pentru o apreciere mai
nuanat a gradului n care funcia model aproximeaz datele msurate, n
practic se utilizeaz funcii de merit mai elaborate. Oricum, deoarece n mod
conventional funcia de merit este construit astfel nct valori mici s
corespunda unor abateri reduse ale modelului fa de funcia tabelat, procesul
de ajustare a parametrilor de model este, n esen., un proces de minimizare
multidimension. Unul dintre cele mai utilizate criterii de performan este cel
furnizat de funcia de merit "hi-patrat":
( ) [ ]


n
1 i
2
i i
2
i
2
a ; x F y
1
Spre deosebire de funcionala
( ) [ ] a ; x F y S
n
1 i
2
i i


, funcia de merit
"hi-patrat", atribuie ponderi diferite punctelor de tabelare individuale, i
anume depinznd de inversul deviaiei standard
i
asociate. n acest fel crete
ponderea relativ a punctelor afectate de erori mici, funcia model fiind forat n
procesul ajustrii parametrilor s minimizeze cu precdere distana fa de
aceste puncte n detrimentul distanei fa de punctele mai imprecise (cu
i

mari). n cazul n care deviaiile
i
sunt egale sau nu sunt cunoscute, formalismul
se simplific i revine la regresia cu ajutorul funciei de merit S. Extremum- ul
funcionalei
( ) [ ] a ; x F y
1
n
1 i
2
i i
2
i
2


n raport cu parametrii a
j
este
caracterizat prin relaiile:
, 0
a
j
2


j=1, 2, , m
sau
( ) [ ]
( )
, 0
a
a ; x F
a ; x F y
1
n
1 i
j
i
i i
2
i

j=1, 2, , m
din care pot fi determinai parametrii a
j
. Ajustarea pe baza funciei de merit
2

mai este numit uneori i regresie "hi-p&trat".
199
MATLAB n ingineria mecanic
Curba de regresie y = F(x;a.) nu trebuie s treac n mod necesar prin
nici unul din punctele tabelate M
i
(x
i
, y
i
), ci doar prin barele de eroare ale
acestora (de lungime
i
), minimiznd funcionala
2
.
Deoarece erorile de msurare ale datelor induc imprecizii n
determinarea parametrilor de model, informaia furnizat de procesul de
ajustare nu este complet fr estimarea acestor erori. Admind c datele sunt
independente, considerente de propagare a erorilor arat. c variana (imprecizia
probabil patratic.)
2
a
j

asociat parametrului a
j
rezult prin cumularea
contribuiilor ponderate cu
2
i
de la fiecare valoare discret y
i
:

,
_


n
1 i
2
i
j
2
i
2
a
y
a
j
Creterea fr o justificare teoretic clar a numrului de parametri de
model n ideea descrierii ct mai exacte a datelor, eventual chiar a interpolrii lor,
nu face funcia model "mai bun" chiar dac reduce valoarea funciei de merit, ci,
pe lng lipsa de semnificaie a modelului i a parametrilor adugai, poate
conduce la apariia unor fenomene numerice greu de controlat. Interpolarea nu
trebuie privit deci, n nici un caz, ca o limit ideal a regresiei, cele dou metode
de aproximare avnd semnificaii diferite i fiind aplicabile n situaii distincte.
n general, datele experimentale reprezint valori discrete determinate prin
diferite metode. Aceste date pot reprezenta analitic o relaie matematic dintre
diferitele date experimentale observate i se exprim prin funcii ai cror
coeficieni se determin, n general, prin rezolvarea unor sisteme de ecuaii lineare.
De exemplu, considernd c s-au msurat, la momentele t = [0 .3 .8 1.1 1.6 2.3]',
valorile y = [0.5 0.82 1.14 1.25 1.35 1.40]', se reprezint grafic dependena y(t) al
crei grafic este o curb convex.
METODA CELOR MAI MICI PTRATE
Majoritatea metodelor de aproximare, ajustare, interpolare sau extrapolare,
utilizeaz ca metod de calcul a coeficienilor, metoda celor mai mici ptrate.
200
MATLAB n ingineria mecanic
Aceast metod minimizeaz suma ptratelor reziduurilor:
( )



n
1 i
2
i i
n
1 i
2
i
y y r S
. Reziduum-ul este calculat ca diferena dintre valoarea
observat
i
y i valoarea previzionat
i
y
:
i
y y r . MATLAB recunoate
patru tipuri de metode aplicative variante ale metodei celor mai mici ptrate:
Metoda lineara a celor mai mici ptrate;
Metoda ponderat a celor mai mici ptrate;
Metoda robust a celor mai mici ptrate;
Metoda nelinear a celor mai mici ptrate.
METODA LINEAR A CELOR MAI MICI PTRATE
Aceast metod folosete un model matematic linear (o funcie de gradul
nti) pentru aproximarea datelor:
2 1
p x p y +
, n care cei doi coeficieni
urmeaz a fi determinai. Metoda se numete linear ntruct funcia, care
definete modelul matematic de aproximare, este de gradul nti n coeficieni.
Pentru a ilustra procesul de aproximare prin aceast metod, este suficient a arta
modul n care este rezolvat ecuaia de gradul nti
2 1
p x p y +
, n
necunoscutele
1
p i
2
p , dac se consider n puncte cunoscute. Dac se scriu
cele n ecuaii corespunztoare datelor cunoscute, se obine un sistem de n ecuaii
care urmeaz a fi rezolvat:
( ) ( )

+
n
1 i
2
2 i 1 i
p x p y S
. Difereniind n raport cu
cele dou necunoscute
1
p
i
2
p
, ntruct metoda minimizeaz suma ptratelor
reziduurilor, se obin dou expresii suplimentare:
( ) ( ) 0 p x p y x 2
p
S
n
1 i
2 i 1 i i
1
+

( ) ( ) 0 p x p y 2
p
S
n
1 i
2 i 1 i
2
+

Aceste ecuaii sunt rezolvabile n raport cu cele dou necunoscute:


201
MATLAB n ingineria mecanic

'

+
+




n
1 i
n
1 i
i 2 i 1
n
1 i
n
1 i
i i
n
1 i
i 2
2
i 1
y p n x p
y x x p x p
ale crui soluii sunt:
2
n
1 i
i
n
1 i
2
i
n
1 i
i
n
1 i
i
n
1 i
i i
1
x x n
y x y x n
p

,
_





respectiv

,
_




n
1 i
n
1 i
i 1 i 2
x p y
n
1
p
.
Ceea ce se poate constata uor, este faptul c utilizarea acestei metode
pentru aproximare i ajustare, nseamn doar calcule algebrice simple.
n forma matriceal, metoda lineara a celor mai mici ptrate este dat de
formula:
+ X y
unde:
-y este un vector coloan (n linii ), al rspunsurilor;
-

este un vector coloan (m linii), al coeficienilor;


-X este o matrice nxm, a valorilor previzionate;
- este vectorul coloan (n linii ), al erorilor.
Pentru un polinom de gradul nti, cele n ecuaii cu dou necunoscute, exprimate
n funcie de y, X i

sunt:
1
]
1

1
1
1
1
1
1
]
1

1
1
1
1
1
1
]
1

2
1
n
3
2
1
n
3
2
1
p
p
x
1 x
1 x
1 x
1 x
y
y
y
y

202
MATLAB n ingineria mecanic
Soluia problemei, dat prin metoda celor mai mici patrate, este un vector
b, care conine vectorul coeficienilor

. Ecuaiile generalizate ataate acestui


sistem sunt reprezentate prin:
( ) y X b X X
T T
,
cu soluia generalizat:
( ) y X X X b
T
1
T


n care, X
T
reprezint transpusa matricei X.
Aceast ecuaie poate fi rezolvat folosind operatorul \ (mprire la stnga),
respectiv, folosind factorizarea QR.
Soluia de rspuns, previzionat,
y
, se determin cu relaia:
y H b X y
,
unde:
( )
T
1
T
X X X X H

In aceste condiii, reziduurile sunt date de relaia:
( ) y H 1 y y r
METODA PONDERAT, A CELOR MAI MICI PTRATE
n evaluarea rezultatelor experimentale, a msurtorilor, n general, se
presupune c, datele obinute au aceeai calitate, deci i variana este constant.
Dac aceast presupunere nu este valid, fiind prezente perturbaii evidente, atunci
procesul de ajustare a reprezentrilor grafice ale datelor obinute, este perturbat i
conine erori. n consecin, pentru creterea calittii aproximrii, se poate folosi
metoda, ponderat, a celor mai mici ptrate, metod care introduce un factor de
pondere. Aceast metod minimizeaz eroarea estimat
( )


n
1 i
2
i i i
y y w S
203
MATLAB n ingineria mecanic
n care,
i
w reprezint ponderea rezidual. Aceast mrime arat magnitudinea
influenei pe care o are fiecare rspuns n evaluarea final a parametrului msurat.
Ponderarea este recomandat acolo unde se cunosc mrimile ponderilor, sau acolo
unde este justificat o anumit comportare a acestora.
Ponderile modific expresia vectorului b, astfel:
( ) y W X X W X

b
T
1
T


,
unde, W, este dat de elementele de pe diagonala principal a matricei ponderilor w.
Ponderile utilizate trebuie s transforme variana rspunsurilor n valori
constante. Dac este cunoscut variana datelor, ponderea este dat prin:
2
i
1
w

n timp ce, dac nu se cunoate variana, ponderile se vor aproxima cu relaia:


( )
1
n
1 i
2
i i
y y
n
1
w

,
_

Aceast relaie este acoperitoare pentru calculul ponderilor, dac setul de date
conine valori identice (repetiii). n acest caz, n reprezint numrul de replici
identice.
METODA ROBUST, A CELOR MAI MICI PTRATE
Metoda celor mai mici ptrate, n general, este sensibil la valorile ieite
din setul de valori, adic din modul n care evolueaz acest set de date.
Minimizarea influenei ieirilor este realizabil prin metoda, robust, a celor mai
mici ptrate. Aceast metod este disponibil n dou variante:
1. Metoda reziduurilor absolute (LAR=Least Absolute Residuals)-aceast
metod aproximeaz setul de valori printr-o curb care minimizeaz
diferena absolut a reziduurilor, n raport cu diferena ptratelor acestora.
Din acest motiv, valorile extreme au o influen redus.
2. Metoda ponderilor biptrate Aceast variant a metodei minimizeaz
suma ptratelor ponderilor, n care ponderea reprezint distana lacare se
gsete fiecare punct fa de linia de aproximare. Astfel, punctele apropiate
204
MATLAB n ingineria mecanic
de curb au o pondere ridicat, iar punctele ndeprtate de curb, dau
ponderi reduse (valori apropiate de zero).
Metoda ponderilor biptrate este preferat metodei reziduurilor absolute,
ntruct prima metod minimizeaz efectul valorilor extreme.
Metoda, robust, a celor mai mici ptrate, varianta ponderilor biptrate
utilizeaz un algoritm de ponderare, i urmrete urmtoarea procedur:
1. Aproximeaz modelul prin ponderarea celor mai mici ptrate;
2. Se determin reziduurile ajustate, i se actualizeaz. Reziduurile
ajustate, se determin cu relaia:
i
i
adj
h 1
r
r

n care r
i
este reziduul ptratic uzual, iar h
i
este rotunjirea care ajusteaz
reziduurile prin lips. Actualizarea se realizeaz prin:
s K
r
u
adj

,
unde K este o constant de reglaj K=4.685. i s este variana robust dat prin
relaia:
6745 , 0
DMA
s
n care DMA reprezint deviaia medie absolut a reziduurilor;
3. Calculul ponderilor robuste ca funcie de u. Ponderile biptrate sunt date
prin:
( ) ( )

'

>
<

1 u , 0
1 u , u 1
w
i
i
2
2
i
i
4. Dac aproximarea este convergent atunci rezultatul este corect, altfel, se
trece la o nou iteraie a ajustrii, prin rentoarcerea la primul pas al
procedurii.
205
MATLAB n ingineria mecanic
METODA NELINEAR A CELOR MAI MICI PTRATE
MATLAB dispune de o variant a metodei celor mai mici ptrate care
utilizeaz o formulare neliniar pentru aproximarea datelor. Un model nelinear este
definit printr-o ecuaie neliniar n coeficieni, sau o combinaie liniar i neliniar
(aproximarea Gauss sau aproximarea raional de polinoame).
n forma matriceal, modelul neliniar este dat de formula:
+ ) , X ( f y
unde
y este vectorul coloan al rspunsurilor (n linii);
f este o funcie de

i X;


este vectorul coloan al coeficienilor (m linii);
X este matricea proiectat a modelului (n linii, m coloane );


este vectorul coloan al erorilor (n linii).
Modelele nelineare sunt, n general, mai dificil de ajustat dect modelele
lineare, ntruct coeficienii nu pot fi estimai prin metode matriciale simple. De
aceea, abordarea tehnicilor iterative trebuie s adopte urmtoarele etape:
1. Startul cu o estimare iniial pentru fiecare coeficient;
2. Se realizeaz ajustarea pentru coeficienii determinai. Rspunsul
aproximat este dat de relaia:
) , X ( f y
care implic i calculul Jacobianului funciei
) , X ( f
(Jacobianul
este definit prin derivatele pariale ale matricei n raport cu
coeficienii );
3. Ajustarea coeficienilor i evaluarea aproximrii (n MATLAB
sunt disponibili algoritmii: a)-Trust region; b)-Levenberg-
Marquardt; c)-Gauss-Newton);
4. Iterarea procesului, prin saltul la pasul 2., atta timp ct nu este
realizat convergena aproximrii.
Datorit naturii procesului de aproximare n sine, nici un algoritm nu este
perfect pentru modelul neliniar al metodei celor mai mici ptrate. Din acest motiv,
atunci cnd rezultatele obinute nu sunt cele ateptate, sau apropiate de cele
206
MATLAB n ingineria mecanic
ateptate, se ia decizia schimbrii metodei implicite de aproximare, mai ales c
metodele neliniare sunt sensibile la punctul de start al aproximrii.
INTERPOLAREA DATELOR,
FOLOSIND MATLAB
Interpolarea, aa cum s-a afirmat i anterior, n cadrul acestui capitol, este
un proces prin care se realizeaz estimarea numeric a valorilor intermediare prin
care face conexiunea ntre punctele corespunztoare datelor cunoscute. Interpolarea
are aplicaii deosebit de importante n procesarea imaginilor i a semnalelor
(achiziiei de date). Se disting :metode de interpolare linear, bi-dimensional,
Spline, Fourier, bi-linear, bi-armonic, bi-cubic, multi-dimensional, prin
triangularizare.
n figurile urmtoare se poate observa, n principiu, efectul procesului de
interpolare, pentru un set de semnale msurate.
Semnalul original Semnalul interpolat
Fie [ ] [ ] b a, , b , a : f . Se pune problema determinrii unei
funcii F, care s aproximeze funcia f n intervalul [a,b]. Se recurge la aceast
aproximare n dou cazuri:
1. -cnd nu se cunoate expresia analitic a lui f, dar se
cunosc valorile sale ntr-un numr finit de puncte;
2. -cnd expresia analitic a lui f este destul de complicat i
cu ajutorul acesteia calculele sunt destul de dificile.
Pentru evaluarea lui f(x) se caut o alt funcie F(x) relativ simpl astfel ca
pentru orice valoare a lui x valoarea lui f(x) se alege dintr-o anumit clas de
funcii, de exemplu din clasa polinoamelor de grad n sau mai mic, atunci trebuie ca
207
MATLAB n ingineria mecanic
F(x) s ia aceeai valoare cu f(x) pentru anumite valori ale lui x. Aceste valori ale
lui x sunt adesea numite puncte de interpolare. De asemenea se poate cere ca
anumite derivate ale lui F(x) s ia aceleai valori cu valorile derivatelor
corespunztoare ale lui f(x) n anumite puncte de interpolare. Se poate arta c dac
F(x) este suma a n+1 termeni ai seriei Taylor pentru f(x) n punctul x=a, atunci
F(x) poate fi considerat ca un polinom de interpolare pentru f(x) de grad n sau mai
mic, deoarece
n ,..., 2 , 1 , 0 k ), a ( f F
k ) k (
) a (

.
MODELE PARAMETRICE
n MATLAB sunt disponibile cteva modele parametrice consacrate,
pentru interpolarea i aproximarea datelor:
1. Funcii exponeniale
Exist dou variante ale acestui model parametric:
Modelul exponenial cu un termen:
bx
e a y
;
Modelul exponenial cu doi termeni:
dx bx
e c e a y +
;
Funciile exponeniale sunt utilizate atunci cnd rata modificrii unei mrimi
este proporional cu dimensiunea iniial a acestei mrimi. n funcie de
semnul exponentului, y este o funcie descresctoare (exponent negativ), sau o
funcie cresctoare (exponent pozitiv);

2. Serii Fourier
Sunt modele reprezentate prin sume de funcii trigonometrice simple:
) x n sin( b ) x n cos( a a y
i
n
1 i
i 0
+ +

3. Modelul Gauss
Acest model este utilizat pentru aproximarea valorilor de varf. De
exemplu, aproximarea liniei spectrale de emisie pentru analiza concentraiei
208
MATLAB n ingineria mecanic
chimice, poate fi descris printr-o aproximare Gauss. Modelul matematic
asociat, este dat de ecuaia:

1
1
]
1

,
_


n
1 i
c
b x
i
2
i
i
e a y
,
unde a este amplitudinea, b este centroidul, c este dat de limea relativ a
vrfului, iar n este numrul de vrfuri ce urmeaz a fi aproximate (
8 n 1 )
4. Modelul polinomial
Ecuaia caracteristic acestui model este:

+

n
1 i
i 1 n
i
x p y
, n care (n+1)
reprezint ordinul polinomului, (n) reprezint gradul polinomului. Ordinul
polinomului d numrul de coeficieni ce urmeaz a fi aproximai, iar gradul
polinomului arat puterea variabilei previzionate. Modelele polinomiale sunt
folosite atunci cnd sunt necesare aproximri empirice simple. Acestea pot fi
utilizate n cazul interpolrilor sau extrapolrilor seturilor de date.
5. Serii de puteri
Sunt disponibile dou variante ale acestui model, ca i n cazul modelului
funciilor exponeniale:
Modelul seriilor de puteri cu un termen:
b
x a y
;
Modelul exponenial cu doi termeni:
c
x b a y +
;
6. Expresii raionale
Expresiile raionale sunt date de modele matematice descrise de ecuaii de
forma:

+
+

n
1 i
i m
i
m
n
1 i
i 1 n
i
x q x
x p
y
, n care gradul numrtorului, 5 n 0 ,
respectiv gradul numitorului 5 m 1 , iar coeficientul lui
m
x
este,
ntotdeauna, unu. Modelele raionale sunt avantajoase datorit flexibilitii
209
MATLAB n ingineria mecanic
mari n cazul structurilor de date complicate, dar prezint dezavantajul
instabilitii accentuate atunci cnd numitorul ia valori aproape de zero.
7. Sume de sinus
Modelul matematic este dat de relaia: ) c x b sin( a y
i i
n
1 i
i
+

, n care
a este amplitudinea, b, este frecvena, iar c este constanta de faz pentru fiecare
termen al sumei de sinusi ( 8 n 1 ).
8. Distribuia Weibull
Acest model este utilizat n analiza datelor statistice legate de fiabilitatea i
de durata de via a produselor. Expresia matematic este:
b
x a 1 b
e x b a y

, n care a este parametrul de scar iar b este factorul de
form. Modelul matematic poate conine un parametru suplimentar c,
centroidul, atunci cnd x este nlocuit cu x-c. De remarcat c distribuia
Weibull nu aproximeaz datele unui set de date, ci aproximeaz curbele astfel
nct acestea s aib forma apropiat de forma distribuiei Weibull.
9. Modele utilizator
Modelele matematice, definite implicit, nu sunt cele mai bune modele n
toate cazurile. Din acest motiv, uneori, este necesar a se defini ecuaii specifice
unei anumite aplicaii. Aceste ecuaii sunt avantajoase ntruct coeficienii
punctului de start al iteraiei se aleg aleatoriu din intervalul [0,1], iar pentru
calculul Jacobianului se folosete difereniala total.
FUNCIILE MATLAB PENTRU INTERPOLAREA DATELOR
n tabelul urmtor sunt prezentate selectiv funciile MATLAB, utilizate
pentru interpolarea datelor:
Funcia MATLAB DESCRIERE
1 2
210
MATLAB n ingineria mecanic
table1 - cutare n tabele i interpolare linear n
tabele uni-dimensionale
n versiunile superioare ale
MATLAB este nlocuit cu funcia
interp1
table2 - cutare n tabele i interpolare linear n
tabele bi-dimensionale
n versiunile superioare ale
MATLAB este nlocuit cu funcia
interp2
1. spline(x,y,xx)
2. spline(x,y)
1. interpolare spline cubic n tabele uni-
dimensionale
2. determin componentele polinomiale ale
curbei spline de aproximare, pentru
utilizarea cu funcia MATLAB ppval()
1. interpft(x,n)
2. interpft(x,n,dim)
- interpoleaz prin metoda Transormatei
Fourier rapide (fft)
1 2
1. interp1(x,Y,xi)
2. interp1(Y,xi)
3. interp1(x,Y,xi,metoda)
- interpoleaz linear, spline sau cubic n tabele
uni-dimensionale
- cutare n tabele uni-dimensionale
1. interp2(X,Y,Z,XI,YI)
2. interp2(Z,XI,YI)
3. interp2(X,Y,Z,XI,YI,metoda)
- interpoleaz bi-linear, cubic-spline sau bi-
cubic n tabele bidimensionale
- cutare n tabele bi-dimensionale
1. interp3(X,Y,Z,V,XI,YI,ZI)
2. interp3(...,metoda)
- interpoleaz date n trei dimensiuni
- cutare n tabele
1. interpn(X1,X2,X3,V,Y1,Y2,Y3,..)
2. interpn(V,Y1,Y2,Y3,...)
3. interpn(...,metoda)
- interpolare linear, spline, spline-cubic a
datelor multi-dimensionale
- cutare n tabele
1. griddata(x,y,z,XI,YI)
2. griddata(x,y,z,xi,yi)
3. griddata(...,metoda)
- aproximeaz i ajusteaz o suprafa z=f(x,y)
la datele vectorului tridimensional (x,y,z),
neuniform spaiat, prin interpolarea la punctele
specificate (XI,YI), cu condiia ca suprafaa sa
treac, ntotdeauna, prin punctele date.
1. griddata3(x,y,z,v,xi,yi,zi)
2. griddata3(...,'metoda')
- aproximeaz i ajusteaz o suprafa
w=f(x,y,z) dat de vectorul spaial neuniform
(x,y,z,v), prin interpolare n punctele
specificate (xi,yi,zi)
interpstreamspeed(X,Y,Z,U,V,W,vertic
es)
- interpoleaz liniile de cmp prin vertex-uri, pe
baza datelor specificate n vectorii U,V,W, ale
cror coordonate sunt date de matricile X,Y,Z.
INTERPOLAREA LINEAR
Interpolarea este o operaie similar cutrii n tabele. Funcia MATLAB
interp1() interpoleaz ntre punctele date, gsind valorile unei funcii uni-
211
MATLAB n ingineria mecanic
dimensionale f(x) pe baza acestor puncte. n figura de mai jos este prezentat
schematic relaia dintre vectorii x, Y, xi, yi.
Prin interpolarea cu funcia MATLAB interp1() se caut elementele xi
n vectorul x, i, pe baza locaiilor acestora, se returneaz valorile yi interpolate
printre elementele vectorului y.
n MATLAB 6 sunt disponibile mai multe variante ale funciei interp1():
yi = interp1(x,Y,xi)
yi = interp1(Y,xi)
yi = interp1(x,Y,xi,metoda)
yi = interp1(x,Y,xi,metoda,extrapolata)
Toate variantele de apelare a funciei interp1() returneaz un vector yi
coninnd elementele corespunztoare elementelor vectorului xi determinate prin
interpolarea vectorilor x i Y. Vectorul x specific punctele n care sunt date
valorile Y. Dac Y este o matrice, atunci interpolarea este realizat pentru fiecare
coloan a matricei Y. Pentru realizarea corect a interpolrii este necesar
corespondena ntre dimensiunile vectorului xi i dimensiunea matricei Y (n sensul
c aceste dou entiti s aib acelai numr de linii).
Varianta yi = interp1(x,Y,xi,metoda), permite realizarea interpolrii
folosind metode alternative:
'nearest' in
Dac un element al vectorului xi se gsete n exteriorul intervalului
cuprins de x, atunci, metoda de interpolare specificat, va fi utilizat pentru
extrapolare.
Ex. :
212
MATLAB n ingineria mecanic
S se genereze o curb sinusoidal primar, apoi s se interpoleze peste un
numr mai mare de abscise:
Soluie:
Varianta A
x = 0:10;
y = sin(x);
xi = 0:.25:10;
yi = interp1(x,y,xi);
plot(x,y,'o',xi,yi)
Varianta B
x = 0:0.1 :10;
y = sin(x);
xi = 0:.25:10;
yi = interp1(x,y,xi);
plot(x,y,'o',xi,yi)
Ex. :
Se consider doi vectori: unul reprezentnd deceniile 1 pn la 9 ale
secolului trecut, cel de-al doilea reprezentnd populaia Statelor Unite ale Americii
(n milioane locuitori) pentru fiecare nceput de deceniu:
t = 1900:10:1990;
p = [75.995 91.972 105.711 123.203 131.669 150.697 179.323
203.212 226.505 249.633];
Se cere estimarea populaiei Statelor Unite ale Americii corespunztoare
anului 1975, apoi s se estimeze populaia pe fiecare an n parte ncepnd din 1900
i pn n 2000, reprezentnd grafic rezultatul obinut.
Soluie:
Prin interpolare:
213
MATLAB n ingineria mecanic
populatia_in_1975=interp1(t,p,1975)
se obine rezultatul:
populatia_in_1975=
214.8585
Interpolnd ntre anii 1900 i 2000 se obin rezultatele, respectiv, graficul evoluiei
populaiei ntre anii 1900 i 2000:
x = 1900:2000;
y = interp1(t,p,x);
plot(t,p,'o',x,y)

INTERPOLAREA BIDIMENSIONAL
Interpolarea bi-dimensional se realizeaz prin funcia MATLAB interp2()
care se poate apela n urmtoarele variante :
ZI = interp2(X,Y,Z,XI,YI)
ZI = interp2(Z,XI,YI)
ZI = interp2(Z,de_n_ori)
ZI = interp2(X,Y,Z,XI,YI,metoda)
Oricare dintre aceste variante returneaz o matrice ZI care conine
elementele corespunztoare punctelor (XI,YI) i determinate prin
interpolare n matricile X, Y i Z, (Z este definit ca funcie bi-
dimensional de elementele matricilor X i Y);
Matricile X i Y trebuie s fie ordonate monoton cresctor, i sa fie n
acelai format;
214
MATLAB n ingineria mecanic
Matricile X i Y definesc punctele n care este dat matricea Z;
XI i YI pot fi matrici, caz n care, funcia interp2(), determin valorile
matricei Z corespunztoare punctelor (XI(i,j), YI(i,j));
Dac funcia interp2 este apelat cu varianta ZI = interp2(Z,XI,YI), atunci
se interpreteaz, automat de ctre MATLAB, c X = 1:n i Y = 1:m, unde
[n, m]=size(Z);
Varianta ZI = interp2(Z,de_n_ori) specific repetarea interpolrii bi-
dimensionale, de n ori;
Varianta ZI = interp2(X,Y,Z,XI,YI,metoda) specific metoda alternativ
de interpolare:
linear -pentru interpolare bi-linear
'nearest' -pentru interpolarea pe vecinti
'spline' -pentru interpolarea spline cubic
'cubic' - pentru interpolarea bi-cubic
CONCLUZIE :
Oricare dintre aceste variante interpoleaz ntre punctele unei reele bi-
dimensionale, fiind gsite valorile unei funcii f(x,y) care face conexiunea ntre
punctele intermediare.
De exemplu, se cere interpolarea, pe o reea [X,Y], a funciei MATLAB
peaks() (aceast funcie, de dou variabile, este obinut prin translatarea i
scalarea distribuiilor GAUSS), pe o reea [XI,YI] mai fin dect [X,Y] .
Soluia este :
[X,Y] = meshgrid(-3:.25:3);
215
MATLAB n ingineria mecanic
Z = peaks(X,Y);
[XI,YI] = meshgrid(-3:.125:3);
ZI = interp2(X,Y,Z,XI,YI);
mesh(X,Y,Z), hold, mesh(XI,YI,ZI+15)
hold off
axis([-3 3 -3 3 -5 20])
INTERPOLARE TRIDIMENSIONAL
Interpolarea tridimensional, n MATLAB, se realizeaz cu funcia
interp3() care se poate apela n urmtoarele variante :
VI = interp3(X,Y,Z,V,XI,YI,ZI)
VI = interp3(V,XI,YI,ZI)
VI = interp3(V,de_n_ori)
VI = interp3(...,metoda)
Oricare dintre aceste variante realizeaz interpolarea prin cutarea valorilor
matricei VI, reprezentnd valorile intermediare ale funciei tridimensionale V n
punctele reelei date de matricile XI, YI i ZI. Matricile, sau vectorii, XI, YI i ZI
trebuie sa fie de aceeai dimensiune, respectiv s fie ordonate monoton.
216
MATLAB n ingineria mecanic
De exemplu, folosind i funcia MATLAB slice(), se interpoleaz datele
reelei tri-dimensionale [x,y,z,v] = flow(10), pentru a gsi valorile corespunztoare
punctelor [xi,yi,zi] :
[x,y,z,v] = flow(10);
[xi,yi,zi] = meshgrid(.1:.25:10, -3:.25:3, -3:.25:3);
vi = interp3(x,y,z,v,xi,yi,zi);
slice(xi,yi,zi,vi,[6 9.5],2,[-2 .2])
INTERPOLAREA SPLINE, CUBIC
Curba spline cubic este o curb neted, definit de un set de polinoame
de gradul trei. Curba, de conectare lin , dintre fiecare set de puncte este definit
printr-un polinom de gradul trei, determinat astfel nct s conduc la tranziii
netede de la un polinom de gradul III la altul. Spre exemplu, trei puncte sunt
conectate cu dou curbe de gradul trei, diferite, ceea ce constituie o funcie neted
ntre toate cele trei puncte.
Obs. : De reinut : diferena dintre metoda de interpolare linear i interpolarea
spline, care const n aceea c metoda spline permite extrapolarea ,
adic se pot estima valori care nu se gsesc n setul ordonat.
Interpolarea spline cubic se face n MATLAB cu funcia:
yy = spline(x,y,xx)
pp = spline(x,y)
217
Planul de
secionare
y=[2]
MATLAB n ingineria mecanic
unde:
- x,y sunt vectori linie ce conin abscisele, respectiv ordonatele
punctelor;
- x
i
este vector ce conine noua abscis
Ex.:
S se determine valoarea y1 de interpolare pentru x1=2.7; dac:
x=[0,1,2,3,4,5] ; y=[0,20,60,68,77,100] ;
n MATLAB (considernd c au fost deja introdui vectorii x i y):
y1=spline(x,y,2.7)
y1=67.4340
Ex.:
Folosind aceiai vectori, se cere interpolarea n punctele (1.5,2.7) respectiv
n (1.2,3.4,4.5).
Cele dou valori, n care se cere interpolarea vor fi introduse de la tastatur
ntre paranteze drepte, deci ca o matrice cu o singur linie (vector linie):
x=[0,1,2,3,4,5] ; y=[0,20,60,68,77,100] ;
y2=spline(x,y,[1.5,2.7])
y2=42.2500 67.4340
y3=spline(x,y,[1.2,3.4,4.5])
y3 = 28.8320 70.0480 86.6250
Ex.:
Folosind vectorii x=[0,1,2,3,4,5] i y=[0,20,60,68,77,100] se cere interpolarea n
n=26 puncte echidistante situate ntre 0 i 5:
xi=0:0.2:5;
yi=spline(x,y,xi)
yi =
Columns 1 through 8
0 -1.2480 0.7360 5.3440 11.9680 20.0000 28.8320 37.8560
Columns 9 through 16
218
MATLAB n ingineria mecanic
46.4640 54.0480 60.0000 63.9040 66.1120 67.1680 67.6160 68.0000
Columns 17 through 24
68.7760 70.0480 71.8320 74.1440 77.0000 80.4160 84.4080 88.9920
Columns 25 through 26
94.1840 100.0000
Ex.:
S se reprezinte grafic o interpolare linear i o interpolare spline cubic
pentru datele i rezultatele exemplului anterior.Pentru reprezentarea grafic se va
folosi funcia MATLAB plot() :
x i=0:0.2:5;
y i=spline(x,y,x i);
plot(x,y,xi,yi,x,y,o)
Ex.:
a) Fiind date 10 perechi de puncte n
xOy, s se traseze graficul rezultat prin
interpolare spline pe o reea de patru ori
mai fin (x=0:10; y=sin x)
Soluie:
x = 0:10; y = sin(x);
xi = 0:0.25:10;
yi = spline(x,y,xi);
plot(x,y,o,xi,yi)
b)
Folosind, pentru x pasul iterrii 0.5 iar funcia y=tgx+sinx, s se reprezinte
pe acelai grafic valorile funciei (y- cu linie punctat de culoare roie), valorile
219
MATLAB n ingineria mecanic
interpolate prin metoda spline(y
i
-cu linie continu de culoare magenta ) i valorile
interpolate prin metoda cubic (z
i
-cu linie continu de culoare verde):
x = 0:0.5:10; y = tan(x)+sin(x);
xi = 0:0.125:10;
yi = spline(x,y,xi);
zi=interp1(x,y,xi,'cubic');
plot(x,y,'r:',xi,yi,'m-',xi,zi,'g-')
INTERPOLAREA MULTIPL
Funcia MATLAB utilizat:
interp1(x,y,xi,regula)
n care, argumentele au semnificaia cunoscut, iar regula este cuvntul cheie:
linear interpolare linear;
spline interpolare spline;
cubic interpolare cubic.
Toate regulile necesit ca x s fie ordonat cresctor, n plus, metoda
cubic impune ca punctele x s fie egal distanate.
Ex. :
220
MATLAB n ingineria mecanic
S se determine prin interpolare linear, spline i cubic, i apoi sa se
reprezinte grafic punctele corespunztoare valorilor
-10,-9.75,-4.25,4.15,0.1,6.35, dac
x=-10:0.5:10, iar y=(log(abs(x+12))
+2)./(exp(x)+12).
Soluie :
x=-10:0.5:10;
y=(log(abs(x+12))+2)./(exp(x)+12);
xi=[-10,-9.75,-4.25,4.15,0.1,6.35];
yi1 = interp1(x,y,xi,'linear');
yi2 = interp1(x,y,xi,'spline');
yi3 = interp1(x,y,xi,'cubic');
plot(x,y,'r:',xi,yi1,'m-',xi,yi2,'g-',xi,yi3,'k-.')
REGRESIA POLINOMIAL
Datele stocate n vectorul y se pot modela, de exemplu, printr-un polinom
de gradul II, ceea ce ar putea fi reprezentat analitic prin funcia:
2
2 1 0
t a t a a y + + , coeficienii a
0
, a
1
i a
2
determinndu-se dintr-un sistem de 6
ecuaii (vectorul y are 6 elemente) cu 3 necunoscute:
1
1
1
]
1

1
1
1
1
1
1
1
1
]
1

1
1
1
1
1
1
1
1
]
1

2
1
0
2
6 6
2
5 5
2
4 4
2
3 3
2
2 2
2
1 1
6
5
4
3
2
1
a
a
a
t t 1
t t 1
t t 1
t t 1
t t 1
t t 1
y
y
y
y
y
y
.
Presupunnd c sunt date elementele vectorului t i ale vectorului
corespondent, y, se formeaz matricea X, a coeficienilor sistemului, n funcie de
dimensiunea vectorului t, n raport de puterile nti i a doua ale elementelor
acestui vector:
221
MATLAB n ingineria mecanic
t = [0, 0.3, 0.8, 1.1, 1.6, 2.3]'; y = [0.5, 0.82, 1.14, 1.25, 1.35, 1.40]';X=
[ones(size(t)) t t.^2]
X =
1.0000 0 0
1.0000 0.3000 0.0900
1.0000 0.8000 0.6400
1.0000 1.1000 1.2100
1.0000 1.6000 2.5600
1.0000 2.3000
5.2900
Soluia acestui sistem este:
a=X\y
a =
0.5318
0.9191
-0.2387
T = (0:0.1:2.5)'; Y = [ones(size(T)) T
T.^2]*a; plot(T,Y,'-',t,y,'o'), grid on
Cu aceste date se formeaz modelul matematic polinomial de ordinul II:
2
t 2387 , 0 t 9191 , 0 5318 , 0 Y + care interpoleaz valorile vectorului y.
Reprezentnd grafic acest polinom de gradul II, suprapunnd cu graficul anterior,
se obine figura alturat.
n aceast reprezentare, polinomul de interpolare este reprezentat cu linie
continu, n timp ce valorile date sunt reprezentate cu simbolul grafic o.
Este evident c aceast curb nu aproximeaz foarte exact datele
experimentale, de aceea se poate crete gradul polinomului de aproximare, sau se
pot folosi alte metode de aproximare.
REGRESIA EXPONENIAL
Considernd ca model de aproximare o funcie exponenial
t
2
t
1 0
e t a e a a y

+ + , n care parametrii ce urmeaz a fi determinai sunt
coeficienii, acetia se determin prin metoda celor mai mici ptrate. n acest sens,
se construiete, i se rezolv sistemul de ecuatii folosind matricea X, a regresiilor:
t = [0 .3 .8 1.1 1.6 2.3]'; y = [0.5 0.82 1.14 1.25 1.35 1.40]';
222
MATLAB n ingineria mecanic
X=[ones(size(t)) exp(-t) t.*exp(-t)];
a=X\y
a =
1.3974
-0.8988
0.4097
Modelul matematic de aproximare se formeaz cu aceste valori
determinate prin rezolvarea sistemului de ecuaii:
t t
e t 4097 , 0 e 8988 , 0 3974 , 1 Y

+ . Prin evaluarea modelului, pe un
interval uniform T=0:0.1:2.5 (care include valorile vectoruluit = [0 .3 .8 1.1 1.6
2.3]'), i suprapunerea graficului Y(T) peste y(t):
T = (0:0.1:2.5)';
Y = [ones(size(T)) exp(- T) T.*exp(- T)]*a;
plot(T,Y,'-',t,y,'o'), grid on
Din aceast figur se observ c aproximarea cu o curb exponenial este
mult mai aproape de valorile vectorului y = [0.5 0.82 1.14 1.25 1.35 1.40]'.
223
MATLAB n ingineria mecanic
REGRESIA MULTIPL
n cazul n care y este o funcie de mai multe variabile independente,
ecuaiile matriceale, care exprim relaia dintre variabile, pot fi definite pentru a
include i datele adiionale. Astfel, dac se presupune c, pentru doi parametri
diferii, definii vectorial, x1 = [.2 .5 .6 .8 1.0 1.1]' i x2 = [.1 .3 .4 .9 1.1 1.4]', s-au
determinat experimental, statistic sau prin alt metod, valorile funciei, i acestea
sunt cuprinse n vectorul y = [0.17 0.26 0.28 0.23 0.27 0.24]', atunci, funcia-
model matematic linear, care ar putea exprima relaia ntre parametri, este:
2 2 1 1 0
x a x a a y + + , n care a
i
reprezint parametrii lineari ce urmeaz a fi
determinai. Regresia multipl determin soluia { }
2 1 0
a , a , a folosind metoda
celor mai mici ptrate. Pentru aceasta, se construiete matricea regresiilor, X, i se
gsesc coeficienii necunoscui (a=[a
0
; a
1
; a
2
]):
x1 = [3.2 4.5 7.6 8.8 1.0 3.1]'; x2 = [2.1 4.3 5.4 8.9 1.1 1.4]';
y = [2.5 3.3 4.5 5.2 8.9 4.7]';
X = [ones(size(x1)) x1 x2];
a = X\y
a =
6.4905
-1.0243
0.8208
Cu aceste valori, funia- model devine:
y_model=6.4905-1.0243.*x1+0.8208.*x2
y_model =
4.9364
5.4106
3.1381
4.7818
6.3691
4.4643
Pentru a valida acest model, se determin valoarea maxim absolut a
deviaiei datelor modelului faa de datele observate:
Y=X*a;
224
MATLAB n ingineria mecanic
eroarea_maxima=max(abs(Y-y))
eroarea_maxima =
2.5309
Aceast eroare este suficient de mare pentru a invalida modelul adoptat.
Repetnd raionamentul i calculele pentru alte valori ale vectorilor x1, x2 i y se
obin urmtoarele rezultate:
x1 = [.2 .5 .6 .8 1.0 1.1]'; x2 = [.1 .3 .4 .9 1.1 1.4]'; y = [.17 .26 .28 .23 .
27 .24]';
X = [ones(size(x1)) x1 x2];
a = X\y
a =
0.1018
0.4844
-0.2847
y_model=0.1018+0.4844.*x1-0.2847.*x2
y_model =
0.1702
0.2586
0.2786
0.2331
0.2730
0.2361
Y=X*a;
eroarea_maxima=max(abs(Y-y))
eroarea_maxima =
0.0038
Aceast eroare denot faptul c modelul poate fi validat n aceast variant.
APROXIMAREA POLINOMIAL DE GRADUL n
Funcia MATLAB polyfit(), determin aproximarea polinomial, n sensul
celor mai mici ptrate, a unui set de date. Sintaxa funciei MATLAB este:
a) p = polyfit(x,y,n)
b) [p,S] = polyfit(x,y,n)
225
MATLAB n ingineria mecanic
c) [p,S,miu] = polyfit(x,y,n)
Descriere:
Apelat n varianta a), funcia p=polyfit(x,y,n), determin coeficienii unui
polinom de gradul n, p(x), care aproximeaz valorile (x(i)) la y(i), n sensul celor
mai mici ptrate. Rezultatul, p, este un vector linie cu n+1 coloane, coninnd
coeficienii polinomiali, n ordine descendent:
( )
1 n n
1 n
2
n
1
p x p ... x p x p x p
+

+ + + +
Dac funcia polyfit este apelat n varianta b), cu parametrii de ieire p i
S, atunci, se returneaz coeficienii polinomiali n vectorul linie p, i o structur S,
care poate fi utilizat, cu funcia polyval, pentru estimarea erorilor de previzionare.
Apelarea cu varianta c), funcia polyfit, determin obinerea coeficienilor
polinomului p, n variabila
2
1
x
x

, n care ( ) x mean
1
este valoarea
medie a variabilei x, respectiv
( ) x std
2
deviaia standard, calculat cu relaia
( )

n
1 i
2
i
x x
1 n
1
s , n care


n
1 i
i
x
n
1
x
,iar miu ( parametrul de ieire, n
cazul celei de-a treia variante de apelare a funciei polyfit), este vectorul
] , [ miu
2 1

.
De exemplu, dac se consider setul de date msurate x-y, i se dorete
aproximarea datelor cu o curb polinomial de gradul III, atunci secvena
MATLAB urmtoare, determin afiarea grafic a rezultatelor aproximrii:
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
Polinomul de aproximare este:
( ) 34 , 35 x 3262 , 60 x 5821 , 31 x 1917 , 0 x p
2 3
+ +
x2 = 1:.1:5;
y2 = polyval(p,x2);
plot(x,y,'o',x2,y2),ylabel('Valorile determinate pentru y2' ),
xlabel('Valorile x2'), grid on
226
MATLAB n ingineria mecanic
Reprezentarea grafic a acestei aproximri este redat n figur:
EROAREA APROXIMRII
Orice aproximare numeric implic i existena erorilor. O discuie privind
erorile de aproximare trebuie sa nceap avand ca suport asumarea presupunerii c
erorile apar doar n rspunsuri, niciodat n setul de date previzionate, respectiv
presupunerea c erorile au o distribuie normal (distribuie Gauss), fa de zero
(ca medie) i cu variana constant (de valoare
2
).
Presupunerea ca distribuia erorilor s fie normal, trebuie s fie valid
ntruct aproximarea, prin orice metod, este adecvat doar n cazul unei distribuii
normale a cantitilor aproximate. Aceast presupunere are la baz faptul c
probabilitatea existenei unor valori extreme n setul de date este mic i metoda de
aproximare prin cele mai mici ptrate are aplicabilitate valid.
Media zero a erorilor nseamn c acestea au o apariie pur aleatoare. Dac
media erorilor nu este zero aceasta se poate datora faptului c modelul ales nu este
cel convenabil, sau c erorile nu sunt aleatorii, respectiv c exist erori sistematice.
227
Valoare
msurat
x=2
y=43,1
Valoare aproximat
X2
aproximat
=4,5
Y2
aproximat
=385.9449
MATLAB n ingineria mecanic
Variana constant arat faptul c erorile au o mprtiere constatnt.
Datele cu aceeai varian se numesc date de aceeai calitate. Presupunerea c
variana datelor este constant nu implic i o ponderare n sensul aproximrii celor
mai mici ptrate. Aceasta se poate observa i din procedura de aproximare, unde se
presupune c exist diferite nivele ale ponderilor, deci caliti diferite ale datelor.
Din acest motiv se utilizeaz ponderile n metoda celor mai mici ptrate, pentru a
ajusta influena fiecrei valori din setul de date i a corecta coeficienii aproximrii.
Pentru determinarea varianei exist dou relaii analitice de calcul:
( )


n
1 i
2
i
2
x x
n
1
, sau
( )


n
1 i
2
i
2
x x
1 n
1
, unde

n
1 i
i
n
x
x
.
n MATLAB eroarea de aproximare este determinat cu funcia specific
erf(x). Matematic aceast funcie este dat de relaia: 1 ) 2 x ( 2 ) x ( erf ,
n care
) x (
este o funcional ce determin analitic distribuia normal standard
dup o relaie empiric:
2
2
2
) x (
e
2
1
) , , x (



n care simbolurile utilizate au semnificaia definit n cazul aproximrii i
regresiei polinomiale, respectiv n cazul metodei celor mai mici ptrate.
Funcia MATLAB erf(x) determin valoarea erorii de aproximare a
funciei model, pentru fiecare valoare a elementelor matricei x. Aceast eroare este
determinat prin integrala definit a distribuiei normale, cnd media normat este
setat la zero, iar valoarea varianei este 1/2:


x
0
t
dt e
2
) x ( erf
2
Pentru a se demonstra limitele procedeului de aproximare, printr-o funcie
polinomial, se va prezenta un exemplu, ilustrativ. Se genereaz un vector, uniform
spaiat, x=0:0.1:2.5, i se determin, cu funcia MATLAB erf(), distribuia Gauss a
erorilor
x = (0: 0.1:2.5)';
y = erf(x);
Coeficienii polinomului de aproximare, de gradul VI, sunt determinai cu
funcia MATLAB polyfit():
228
MATLAB n ingineria mecanic
p = polyfit(x,y,6)
p =
0.0084 -0.0983 0.4217 -0.7435 0.1471 1.1064 0.0004
Pentru a determina ct de apropiat este ajustarea polinomial, se va evalua
polinomul p(x) n punctele vectorului x, i se afieaz tabelar valorile:x, y, valorile
polinomului de aproximare, abaterea valorilor polinomului fa de valorile y:
f = polyval(p,x);
tabel = [x y f y-f]
tabel =
Valorile x Valorile y Valorile f Valorile erorii
0 0 0.0004 -0.0004
0.1000 0.1125 0.1119 0.0006
0.2000 0.2227 0.2223 0.0004
0.3000 0.3286 0.3287 -0.0001
0.4000 0.4284 0.4288 -0.0004
0.5000 0.5205 0.5209 -0.0004
0.6000 0.6039 0.6041 -0.0002
0.7000 0.6778 0.6778 0.0000
0.8000 0.7421 0.7418 0.0003
0.9000 0.7969 0.7965 0.0004
1.0000 0.8427 0.8424 0.0003
1.1000 0.8802 0.8800 0.0002
1.2000 0.9103 0.9104 -0.0000
1.3000 0.9340 0.9342 -0.0002
1.4000 0.9523 0.9526 -0.0003
1.5000 0.9661 0.9664 -0.0003
1.6000 0.9763 0.9765 -0.0002
1.7000 0.9838 0.9838 0.0000
1.8000 0.9891 0.9889 0.0002
1.9000 0.9928 0.9925 0.0003
2.0000 0.9953 0.9951 0.0002
2.1000 0.9970 0.9969 0.0001
2.2000 0.9981 0.9982 -0.0001
2.3000 0.9989 0.9991 -0.0003
2.4000 0.9993 0.9995 -0.0002
2.5000 0.9996 0.9994 0.0002
Se poate observa c, pe acest interval, ajustarea polinomial este relativ
corespunztoare, dar, dac se extinde intervalul (vectorul x devine x=0:0.1:5),
229
MATLAB n ingineria mecanic
reprezentarea grafic arat ca aproximarea devine neconform, aceasta
deteriorndu-se rapid:
x = (0: 0.1: 7)';
y = erf(x);
f = polyval(p,x);
plot(x,y,'x',x,f,'-.'),axis([0 5 0 2])
Folosind o alt facilitate oferit de MATLAB, polytool(x,y), care este o
aproximare polinomial de grad n interactiv, se pot observa, n urma ctorva
manevre simple i intuitive, schimbrile intervenite n aproximarea prin polinoame
de diferite grade. Aceast facilitate ofer un instrument deosebit n analiza erorilor
i curbelor de aproximare polinomiale, fiind uor de observat care model
polinomial este cel mai adecvat n aproximarea pe un anumit interval finit.
Interfaa grafic polytool realizeaz aproximarea ntre un vector coloan x
i corespondentul y al acestuia. Interfaa se activeaz prin introducerea de la
tastatur a vectorilor int, x i y, respectiv a funciei specifice polytool(x,y).
Modificarea gradului polinomului de aproximare prin regresie este posibil n
230
MATLAB n ingineria mecanic
caseta Degree, n care este necesar nscrierea gradului polinomului ( 10 n 1 ).
Valorile interpolate sunt afiate n mod curent, pentru cele dou axe, dac
reprezentarea grafic este bi-dimensional, respectiv n coordonate 3D, dac din
meniul Tools, se modific aspectul imaginii. Presupunnd vectorul x = (0: 0.1: 7)',
i valorile funciei y=erf(x), se va realiza aproximarea interactiv cu instruciunile:
x = (0: 0.1:7)';
y = erf(x);
polytool(x,y,6)
obinndu-se imaginea:
Aceeai figur transpus i rotit 3D:
231
MATLAB n ingineria mecanic
Exist i alte funcii MATLAB specifice, pentru aproximare interactiv,
precum aoctool care este sinonim funciei polytool, obiectivul principal al
acesteia fiind, ns, analiza covarianei modelului de aproximare.
CAPITOLUL VII
232
MATLAB n ingineria mecanic
AJUSTAREA I APROXIMAREA DATELOR
NOIUNI GENERALE
Observaiile experimentale sunt, n general, seturi de date discrete care, pot
fi organizate ca vectori coloan sau matrici, n care, liniile reprezint rezultatele i
observaiile la un moment dat. De exemplu, dac se presupune c, n anumite
momente ale zilei s-a determinat frecvena traficului de autovehicule, n trei puncte
diferite, ale unei localiti, aceste date ar putea fi stocate tabelar. Datele stocate n
tabelul alturat pot fi, de asemenea, aranjate, ntr-o matrice cu dimensiunea 24x3:
trafic=[11,11,9;7,13,11;14,17,20;11,13,9;43,51,69;38,46,76;61,132,186;75,135,
180;38,88,115;28,36,55;12,12,14;18,27,30;18,19,29;17,15,18;19,36,48;32,47,10;
42,65,92;57,66,151;44,55,90;114,145,257;35,58,68;11,12,15;13,9,15;10,9,7]
trafic =
11 11 9
Ora
nregistrrii
Pct. A Pct. B Pct. C
01 h 00 min 11 11 9
02 h 00 min 7 13 11
03 h 00 min 14 17 20
04 h 00 min 11 13 9
05 h 00 min 43 51 69
06 h 00 min 38 46 76
07 h 00 min 61 132 186
08 h 00 min 75 135 180
09 h 00 min 38 88 115
10 h 00 min 28 36 55
11 h 00 min 12 12 14
12 h 00 min 18 27 30
13 h 00 min 18 19 29
14 h 00 min 17 15 18
15 h 00 min 19 36 48
16 h 00 min 32 47 10
17 h 00 min 42 65 92
18 h 00 min 57 66 151
19 h 00 min 44 55 90
20 h 00 min 114 145 257
21 h 00 min 35 58 68
22 h 00 min 11 12 15
23 h 00 min 13 9 15
24 h 00 min 10 9 7
233
MATLAB n ingineria mecanic
7 13 11
14 17 20
11 13 9
43 51 69
38 46 76
61 132 186
75 135 180
38 88 115
28 36 55
12 12 14
18 27 30
18 19 29
17 15 18
19 36 48
32 47 10
42 65 92
57 66 151
44 55 90
114 145 257
35 58 68
11 12 15
13 9 15
10 9 7
Matricea trafic, a observaiilor zilnice, poate fi utilizat n analize i
prelucrri matematice ulterioare. n acest sens, presupunnd necesar reprezentarea
grafic, pentru vizualizarea traficului, la un moment dat (considernd reperele orare
date de vectorul t=1:24), se folosete urmtoarea secven MATLAB:
t=1:24;
set(0,'defaultaxeslinestyleorder','-|--|-.');
set(0,'defaultaxescolororder',[0 0 0]);
xlabel('Timpul'), ylabel('Numar de vehicule in trafic'), grid on
plot(t,trafic), legend('Locatia A','Locatia B','Locatia C',0)
234
MATLAB n ingineria mecanic
In practica inginereasc este necesar, att n analiza rezultatelor
experimentale, ct i pentru emiterea unor concluzii, ca datele obinute s fie
aproximate prin curbe polinomiale, exponeniale sau de alt natur.
UTILIZAREA GUI (GRAPHICAL USER
INTERFACE- INTERFAA GRAFIC UTILIZATOR)
PENTRU AJUSTAREA DATELOR
Cea mai rapid i eficient procedur de ajustare, aproximare, interpolare
i extrapolare a datelor experimentale, este Interfaa Grafic Utilizator
(Graphical User Interface-GUI ), disponibil n MATLAB, versiunile superioare
(Release 12 sau 13). Informaii complete, privind aceast procedur, se regsesc n
documentaia de ajutor din meniul Help opiunea Full Product Family Help.
Accesarea interfeei grafice (pentru simplificarea exprimrii se va folosi, n
235
MATLAB n ingineria mecanic
continuare, sintagma GUI) pentru ajustarea datelor, se introduce, n fereastra de
comand MATLAB, comanda:
cftool
Aceast comand are ca efect activarea interfeei grafice Curve Fitting Tool
(Instrument de ajustare a curbelor):
Dac n fereastra de comand a MATLAB, exista vectori coloan de
aceeai dimensiune, acetia vor fi selectai automat de editorul de ajustare i stocai
n vederea prelucrrii. Altfel, se impune introducerea sau importarea datelor n
vectori coloan.
PROCEDURA DE AJUSTARE
Procedura de ajustare va fi prezentat aici pentru un caz specific: ajustarea
datelor cuprinse n doi vectori coloan y i t. Se presupune c n linia de comand
s-au introdus vectorii y i t:
t = [0 .3 .8 1.1 1.6 2.3]'; y = [0.5 0.82 1.14 1.25 1.35 1.40]';
1. -se introduce comanda pentru activarea interfeei grafice a ajustrii:
236
MATLAB n ingineria mecanic
cftool
-Se acceseaz butonul Data... care activeaz o interfa grafic ce permite
selectarea valorilor care urmeaz a fi ajustate pe axa X, respectiv pe axa
Y i ponderea acestor date (dac aceasta este None valoarea ponderii
este implicit 1 ). Atunci cnd se selecteaz un anumit vector pe o ax, n
medalion se reprezint grafic valorile vectorului respectiv. De asemenea
aceast interfa permite definirea unui set nou de valori, un vector n
funcie de altul, de exemplu, prin accesarea butonului Create Data Set.
Se nchide sesiunea acestei interfee grafice cu butonul Close.
2. -Din interfaa grafic Curve Fitting Tool se acceseaz butonul Fitting... al
crui efect este deschiderea editorului de ajustare compus din dou pri
distincte: editorul propriu-zis, Fit Editor, i tabloul ajustrilor, Table of
Fits.
Editorul ajustrii , Fit Editor, permite aciuni pentru:
Specificarea numelui ajustrii curente, setarea datelor curente i stabilirea
regulii de excludere;
Explorarea diferitelor metode de ajustare ale seturilor de date curente,
folosind o bibliotec de ecuaii, metode de ajustare spline i interpolani;
Suprareglarea opiunilor implicite de ajustare (cum ar fi metoda
identificrii coeficienilor);
Compararea rezultatelor ajustrii;
237
MATLAB n ingineria mecanic
Tabloul ajustrilor , Table of Fits, permite
Monitorizarea datelor i ajustrilor anterioare;
Afiarea unui sumar al rezultatelor ajustrii;
Salvarea sau anularea rezultatelor ajustrii.
Se acceseaz butonul New fit care aloc automat un nume implicit
ajustriii curente. Presupunem c aceasta se va numi ajustarea_1, iar cu
urmtoarea opiune, Data set, se definete setul de date (presupunem c acesta este
setul t vs. y, adic vectorul t, n funcie de y) care va fi ajustat n cele ce urmeaz i
va fi numit, n continuare, ajustarea_1. Se selecteaz un alt set de date, definit
anterior (presupunem c acesta este setul y vs. t, adic vectorul y, n funcie de t),
238
MATLAB n ingineria mecanic
i acesta va fi numit n continuare ajustarea_2. Se alege aproximarea polinomial,
iar n urmtoarea seciune se va selecta ajustarea polinomial cuadratic (printr-un
polinom de gradul doi: f(x) = p
1
*x^2 + p
2
*x + p
3
). Se valideaz opiunea
Immediate apply, ceea ce va avea drept efect afiarea rezultatelor n caseta
Results. n paralel MATLAB prelucreaz datele n funcie de opiunile setate i
seleciile operate, fiind afiate, n fereastra interfeei grafice Curve Fitting Tool
reprezentrile grafice ale celor dou seturi de date, att cele discrete ct i cele
previzionate, ajustate.
3. Din meniul View al interfeei grafice Curve Fitting Tool se selecteaz
opiunea Residuals-Line Plot:
239
MATLAB n ingineria mecanic
care permite, i realizeaz, reprezentarea grafic a reziduurilor ajustrii, fiind dat
o msur real a mrimii erorilor de aproximare, n diferite puncte ale seturilor de
date ajustate. Reprezentarea grafic a reziduurilor arat c o ajustare mai bun este
posibil, sau nu. n funcie de mrimea erorilor de calcul i a distanei fa de
valorile discrete efective, se poate lua decizia unei ajustri ulterioare, pentru
creterea calitii aproximrii, prin metode i tehnici multiple.
DETERMINARTEA CELEI MAI BUNE AJUSTRI
240
MATLAB n ingineria mecanic
Pentru a determina cea mai bun ajustare sau aproximare trebuie avute n
vedere att rezultatele grafice ct i rezultatele numerice ale procedurii efective.
Pentru exemplificare se consider c pentru vectorul populatia_USA =
[3.9,5.3,7.2,9.6,12.9,17.1,23.1,31.4,38.6,50.2,62.9,76,92,105.7,122.8,131.7,150.7,1
79,205,226.5,248.7]' raportat la anii de referin cuprini n vectorul
anii_de_referinta=[1790,1800,1810,1820,1830,1840,1850,1860,1870,1880,1890,
1900,1910,1920,1930,1940,1950,1960,1970,1980,1990] s-au realizat ajustri
folosind expresii polinomiale de diferite grade (2, 4 i 7) respectiv o ajustare
exponenial de un singur termen, a*exp(b*x) (adic
x b
e a

), i s-au obinut
reprezentrile grafice (ale rezultatelor ajustrii, respectiv ale reziduurilor), din
figur:
Din aceste reprezentri se poate deduce c este dificil a decide care dintre
polinoameofer cele mai bune
rezultate pentru aproximare sau
ajustare, ntruct diferenele
reziduale sunt nesemnificative,
iar, prin comparaie, ajustarea
exponenial cu un singur
termen este evident
neacoperitoare, datorit
gradului mare de
incompatibilitate i
concordan cu datele
discrete.Setul de date ajustate
se poate vizualiza accesnd
butonul Data..., caseta Data
sets, opiunea View:
n continuare, se
folosete interfaa grafic
Curve Fitting Tool, butonul
Plotting... pentru a elimina
metoda de ajustare printr-o
funcie exponenial,
invalidnd caseta
241
MATLAB n ingineria mecanic
corespunztoare, aceast metod dovedindu-se a fi neconcludent pentru ajustarea
datelor celor doi vectori:
Pentru a examina, datele extrapolate prin cele trei expresii polinomiale de
diferite grade, se vor modifica limitele axelor folosind meniul Tools, opiunea Axis
Limit, prin modificarea limitei superioare a limitei X Upper Limit la valoarea
2050, ceea ce va permite extrapolarea, prin cele trei expresii polinomiale, a valorii
vectorului populatia_USA corespunztoare acestui an:
242
MATLAB n ingineria mecanic
Se constat c extrapolarea printr-un polinom de gradul 7 va genera o
valoare extrapolat, pe baza datelor existente, mult diferit de celelalte valori,
demonstrnd neconcordana evident cu datele extrapolate prin celelalte expresii
polinomiale.
Acest exemplu ilustreaz, foarte clar, c alegerea unei metode de
extrapolare trebuie fcut cu mare atenie, n funcie de mai muli factori care ar
putea influena asupra corectitudinii rezultatelor.
EXAMINAREA REZULTATELOR NUMERICE
243
MATLAB n ingineria mecanic
Examinarea reprezentrilor grafice ale aproximrilor, din exemplul
anterior, demonstreaz c este necesar o procedur suplimentar pentru a decide
care dintre variantele alese pentru ajustarea datelor din vectorul populatia_USA
este varianta cea mai apropiat de varianta corect. Pentru aceasta este nevoie de
studiul rezultatelor numerice, care sunt asociate procedurii de aproximare propriu-
zis. MATLAB ofer dou tipuri de rezultate numerice, afiate in interfaa grafic
Curve Fitting Tool
->Fitting ->Results i
Table of Fits: concordana
rezultatelor aproximrii
respectiv intervalul de
confiden. Concordana
rezultatelor arat ct de
bine sunt aproximate
datele, iar intervalul de
confiden reflect precizia
rezultatelor. Pentru a
evidenia rezultatele
numerice ale ajustrii
datelor, se consider
ajustarea polinomial de
grad 2, 3, 4, 5 i 6,
respectiv aproximarea
exponenial cu un singur
termen, a datelor coninute
n vectorul
populatia_USA, relativ la
vectorul anii_de_referinta,
pentru care s-au obinut
rezultatele numerice din
figura alturat:
Parametrii
numerici ai ajustrii se pot
seta din interfaa Curve
Fitting Tool ->Fitting
->Results i Table of Fits-
>Table options:
244
MATLAB n ingineria mecanic
n aceast sesiune sunt validate titlurile coloanelor care vor aprea n
tabelul Table of Fits. Opiunea SSE (Sum of Squares Due to Error), este o
marime statistic ce se refer la mrimea deviaiei valorii de rspuns a ajustrii,
fa de valoarea dat, calculat ca suma ptratelor erorilor n funcie de mrimea
reziduurilor. Acest parametru este definit prin ecuaia
( )


n
1 i
2
i i i
y y SSE
, n
care
i

reprezint mrimea reziduului (determinate, i afiate, n MATLAB, cu


opiunea Residuals din meniul View):
245
MATLAB n ingineria mecanic
iar y
i
i
i
y
sunt datele aproximate respectiv previzionate. Valorile reziduale se pot
determina dac se cunoate variana datelor (

), cu relaia
2
i
1


, sau se poate
aproxima cu relaia ( )
1
n
1 i
2
i i i
y y
n
1

,
_

, dac nu se cunoate variana datelor,


n care
i
y
reprezint valoare medie evaluat statistic.
R-square reprezint raportul dintre suma ptratelor regresiilor (sum of
squares of the regression -SSR) i suma total a ptratelor (total sum of squares
-SST):
( )
( )




n
1 i
2
i i i
n
1 i
2
i i i
y y
y y
square R
. R-square poate lua valori cuprinse ntre 0
i 1, o valoare mai aproape de 1 are semnificaia unei bune aproximri. De
exemplu, o valoare R-square=0,99871 (n cazul ajustrii polinomiale de gradul II)
arat c exist o variaie de pn la 99,87 % fa de valoarea medie calculat.
Parametrul DFE (Degrees of Freedom Adjusted R-Square) folosete parametrul
R-square, definit anterior, i ajusteaz aceast valoare pe baza gradelor de
libertate ale reziduurilor. Gradele de libertate ale reziduurilor se reprezint
diferena dintre numrul valorilor de raspuns i numrul coeficienilor de
aproximare: v=n-m. n aceast relaie, v reprezint numrul datelor independente
din totalul de n puncte necesare calculrii sumei de ptrate, iar m este numrul de
coeficieni ai ecuaiei de aproximare. Modelul matematic, se consider ca fiind un
bun indicator statistic al calitii aproximrii cnd sunt adugai coeficieni
suplimentari n ecuaia aproximrii.
Parametrul RMSE (Root Mean Squared Error) este cunoscut ca eroarea
standard a aproximrii i ca eroarea standard a regresiilor. Se determin cu
relaia:
( )
v
y y
v
SSE
RMSE
n
1 i
2
i i i



. O valoare apropiat de 0 nseamn
o bun aproximare.
Validarea parametrului #Coeff are ca efect afiarea numrului de
coeficieni folosii pentru aproximarea datelor.
Intervalul de confiden (de siguran) reprezint limitele, inferioar
respectiv superioar, ale coeficienilor ecuaiei aproximrii. Formatul afiat pentru
un parametru este: p1 = 0.006541 (0.006124, 0.006958), ceea ce nseamn c
valoarea calculat a coeficientului este 0.006541, limita inferioar 0.006124
246
MATLAB n ingineria mecanic
respectiv limita superioar 0.006958. Implicit, nivelul de siguran este 95%, i se
poate modifica din interfaa Curve Fitting Tool meniul View, opiunea
Confidence level. Limitele de siguran pot fi calculate i afiate grafic din
interfaa Curve Fitting Tool meniul View, opiunea Prediction Bounds, sau cu
opiunea Analysis din interfaa Curve Fitting Tool.
SALVAREA REZULTATELOR AJUSTRII
Din interfaa Fitting, accesnd butonul Save to workspace..., se salveaz
ntregul proces de ajustare, prin validarea celor trei opiuni:
prima opiune salveaz ajustarea ca obiect MATLAB
247
MATLAB n ingineria mecanic
a doua opiune salveaz, ntr-o structur multidimensional,
concordana ajustrii:
cea de-a treia opiune salveaz rezultatele ajustrii, oferind informaii
asupra parametrilor numerici ai ajustrii
248
MATLAB n ingineria mecanic
ANALIZA REZULTATELOR AJUSTRII
Din interfaa Curve Fitting Tool, butonul Analysis se pot realiza analize
ale parametrilor ajustrii, n funcie de datele originale. Se pot interpola, extrapola
date, se pot diferenia i integra curbele de variaie ale ajustrii, ntre anumite
limite. Pentru aceasta, se scceseaz vectorul Xi dorit, din cmpul Analyze at Xi, se
selecteaz caseta aferent evalurii Evaluate fit at Xi, pentru afiarea rezultatelor
i reprezentarea grafic a acestora fiind necesar validarea casetelor Plot results i
Plot data set, dup care se acceseaz butonul Apply, pentru realizarea procedurii.
De exemplu pentru extrapolarea necesar identificrii datelor ajustrii folosind
ajustarea polinomial, pentru populaia corespunztoare anului 2025, se va
modifica ultima valoare din cmpul Analyze at Xi, la valoarea 2025:
249
MATLAB n ingineria mecanic
Rezultatele extrapolrii se pot salva, similar procesului de ajustare propriu-
zis
Ex.:
Se va realiza o ajustare polinomial de ordinul III, V i VI, pentru vectorii
x = [4:0.1:7 9:0.2:12]', y = c(1) + c(2)*x + c(3)*x.^2 + c(4)*x.^3 +
(rand(size(x))-0.5), ai crui coeficieni sunt elementele vectorului c = [8 -5 13 12].
x = [4:0.1:7 9:0.2:12]' ;c = [8 -5 13 12]; y = c(1) + c(2)*x + c(3)*x.^2 +
c(4)*x.^3 + (rand(size(x))-0.5);
cftool
Urmnd procedura enunat, se realizeaz ajustarea cu cele trei curbe
polinomiale. Analiza rezultatelor permite, din interfaa Curve Fitting Analysis,
manevre ale reprezentrii grafice, utiliznd facilitile de prelucrare i animaie a
figurilor, permise de MATLAB Release 12 i superioare acesteia:
250
MATLAB n ingineria mecanic
251
MATLAB n ingineria mecanic
Ex.:
Se va ajusta o curb de variaie a coeficientului de dilatare a Cu, n raport
cu temperatura. Pentru aceasta se va considera vectorul temp al temperaturilor, un
vector cu 236 elemente, cu temperaturi cuprinse ntre 24,41 [K] i 848,23 [K], iar
valorile msurate experimental, pentru coeficientul de dilatare, pentru aceste
temperaturi, stocate n vectorul coloan coef_CU. Se va realiza o aproximare
raional, cu o funcie avnd atat numrtorul ct i numitorul, polinoame de gradul
doi. Dup ce sunt introduse datele, n fereastra de comand (prin una din opiunile
posibile:de la tastatur, import, ncarcare etc.), se activeaz procesul de ajustare, cu
funcia cftool, apoi se seteaz parametrii de aproximare din interfaa Fitting...,
selectnd, din cmpul Type of fit, opiunea Rational. Apoi, se nominalizeaz tipul
polinomului de la numrtor (Numerator), respectiv de la numitorul expresiei
raionale (Denominator):
252
MATLAB n ingineria mecanic
Folosind butonul Table options..., se valideaz parametrii numerici ai
ajustrii, parametri care vor fi cuprini n tabelul Table of Fits. Afiarea
rezultatelor i reziduurilor ajustrii se realizeaz selectnd opiunea Residuals-Plot
line, din meniul View al interfeei grafice Curve Fitting Tool:
Este uor de observat c sunt zone n care aproximarea nu este
acoperitoare: lipsesc parametrii i rezultatele ajustrii:
253
MATLAB n ingineria mecanic
Se ncearc, n consecin o alt ajustare, de tipul raional polinomial cu
polinoame de gradul III, att la numrtor ct i la numitor:
Acest tip de aproximare, se observ din interfaa Fit Editor cmpul
Results, este neconvergent, ceea ce anuleaz posibilitatea alegerii unei astfel de
ajustri pentru acest set de date, fiind, astfel necesar o alt ajustare.
Modificarea
expresiei raionale de
ajustare, astfel nct
polinomul de la numrtor
s fie de gradul III, iar
cel de la numitor, de
gradul II, are ca rezultat o
aproximare mult
254
MATLAB n ingineria mecanic
mbuntit, reziduurile fiind aleatoriu distribuite fa de valoarea zero, ceea ce
nseamn o ajustare realist:
n cmpul Results al interfeei Fit Editor, sunt prezentai parametrii
ajustrii, i coeficienii modelului matematic al acesteia. Interfaa Curve Fitting
Tool, prezint, n cmpul Residuals, dispersia cvasi-uniform a reziduurilor, n
raport cu linia zero. Acest aspect al dispersiei este o msur a unei aproximri
corecte i valabil pentru acest set de date.
Aprecierea unei ajustri este relativ dificil de realizat pentru un numr
mare de date pentru un set aleatoriu de curbe de ajustare. Astfel, n acest proces
este foarte posibil s apar i rutina examinrii concordanei, respectiv auto-
suficiena utilizatorului. Din acest motiv, dup evaluarea ajustrii prin examinarea
graficelor rezultate, foarte important este evaluarea numeric a ajustrii, ceea ce
presupune:
evaluarea reziduurilor;
evaluarea concordanei;
aprecierea confidenei rezultatelor i previzionarea limitelor de varian.
Aceste aspecte sunt determinante n aprecierea calitii unei ajustri
numerice corecte i conforme, n proporie determinant, cu datele msurate i
ajustate.
255
MATLAB n ingineria mecanic
Aceste operaii pot fi grupate n dou categorii: numerice i grafice. n
timp ce reziduurile i predicia limitelor de varian sunt msuri grafice,
concordana, respectiv predicia limitelor de varian sunt determinri numerice.
Metodele grafice de apreciere a ajustrii sunt mult mai expresive i uor de
evaluat calitativ, nefiind necesar o pregtire deosebit n acest sens, n timp ce
analiza numeric a ajustrii este mai puin comprehensiv datorit faptului c
valorile numerice pot include multe informaii greu de difereniat n cazuri
specifice. Este evident c sunt posibile multe situaii n care ambele tipuri de
metode s fie folosite pentru evaluarea aceleiai ajustri. Adoptarea uneia dintre
metode n defavoarea alteia este determinatn, primul rnd, de nelegerea
procesului de ajustare, apoi de modelul parametric de ajustare ales. Semnificaia
fizic a coeficienilor unui anume model matematic este esenial a fi corect
neleas, fiind nevoie, n plus, de evaluarea prin mai multe metode i modele de
ajustare, pentru aflarea celei mai apropiate soluii.
Anterior, a fost prezentat metodica afirii reziduurilor unei ajustri,
respectiv a fost prezentat modul de calcul al mai multor coeficieni i parametri ai
ajustrii. Printre acetia, unul dintre cei mai importani pai ai evalurii unei
ajustri, este calculul limitelor de varian. Aceste limite sunt calculate pentru dou
variante: predicia simultan, respectiv predicia nesimultan. Predicia simultan
se refer la confidena tuturor rezultatelor ajustate, n timp ce confidena unui
anume parametru genereaz o predicie nesimultan.
Evaluarea metodelor de ajustare, prin estimarea, calitativ sau cantitativ, a
erorilor de aproximare i prin cuantizarea numeric, sau nu, a reziduurilor, este,
aadar, o operaiune care implic o bun pregtire a ntregului proces de
aproximare sau ajustare. Nu pot exista valori sau coeficieni de corecie pentru
estimarea erorilor de ajustare sau aproximare. Aceste limite sunt definite, sau
prescrise de ctre utilizator, i depind, n cea mai mare msur de ceea ce se
urmrete prin ntregul proces de aproximare sau ajustare. Ne-existnd reete
pentru acest tip de operaiuni, se impune, de la sine, o concluzie: pregtirea unei
baze solide n domeniul ajustrii numerice, prin orice metod, se constituie ca fiind
cheia unor rezultate eficiente i corecte.
Not: n Anex este prezentat un fiier script, demonstrativ, care
surprinde o multitudine de funcii MATLAB, i care realizeaz
estimarea parametrilor tehnologici i de transformare, ai legii de
deformare superplastic.
BIBLIOGRAFIE
256
MATLAB n ingineria mecanic
[1] BEJU, I., et al.. -Tehnici de calcul tensorial euclidian cu aplicaii,
Editura Tehnic, Bucureti, 1977 .
[2] BEU, T. A. Calcul numeric n C, Ed. Albastr, Cluj-Napoca, 1999.
[3] BONET, J. - Numerical Simulation of the Superplastic Forming of Thin
Sheet Components Using the Finite Element method, " International
Journal for Numerical Methods in Engineering", vol. 30, pag. 1719- 1737,
1990.
[4] BROWN, E.E.& col.- Superalloys Processing 2
nd
. Int.Conf. on
Superalloys, Publ.AIME, 1972, pag. L1-L12.
[5] BUDIANSKY, B. & col.- Mechanics of Solids, Ed. H.G.Hopkins &
M.J.Sewell, publ. Pergamon Press Oxford, 1982, pag. 13.
[6] DODESCU, GH. -Metode numerice n algebr, Editura Tehnic,
Bucureti, 1979 .
[7] FORRAY, M.J. - Calculul variaional n tiin i tehnic, Editura
Tehnic, Bucureti, 1975 .
[8] GHINEA, M. -MATLAB- Calcul numeric, grafic, aplicaii,
Editura Teora, Bucureti, 1997.
[9] GREBENIAN, G. Metod de optimizare numeric a parametrilor
deformrii superplastice, Sesiunea anual de comunicri tiinifice, Oradea,
1999
[10] GREBENIAN, G. Program dezvoltat n mediul MATLAB 5.3, pentru
determinarea analitic a parametrilor tehnologici la deformarea
superplastic (partea I-Consideraii teoretice), Simpozion Materiale
avansate, tratamente termice i calitatea managementului, Editura
Politehnica, Timioara, 2001.
[11] GREBENIAN, G. - Program dezvoltat n mediul MATLAB 5.3, pentru
determinarea analitic a parametrilor tehnologici la deformarea
superplastic (partea II-Aplicaie), Simpozion Materiale avansate,
tratamente termice i calitatea managementului, Editura Politehnica,
Timioara, 2001.
[12] GREBENIAN, G. Parametrii tehnologici ai deformrii superplastice-
program de calcul n MATLAB-studiu de caz, Sesiunea anual de
comunicri tiinifice, Oradea, 2002.
[13] HAHN, B.D. Essential MATLAB for Scientists and Engineers, Ed. By
Butterworth-Heinemann, Cape Town, 2002.
[14] KOBAYASHI, S. -Metal Forming and the Finite Element Method, Oxford
Universitz Press, New York, 1989.
[15] LEWIS, P.E.,.a. - The Finite element Method. Principles and
Applications, Addison Wesley Publishing Company, London, 1991 .
[16] LUNGU, N. - Matematici cu aplicaii tehnice, Editura Tehnic,
Bucureti,1990 .
257
MATLAB n ingineria mecanic
[17] MARCIUK, G.I - Metode de analiz numeric, Editura Academiei
Romne, Bucureti, 1983, trad. din lb. rus .
[18] MARINESCU, GH. et al. Probleme de analiz numeric, Ed. Didactic i
Pedagogic, Bucureti, i978.
[19] MOSZYNSKI, K.-Metode numerice de rezolvare a ecuaiilor difereniale
ordinare, Ed. Tehnic, Bucureti, 1973.
[20] MUNTEANU, M. - Metoda elementului finit, Reprografia
Universitii Transilvania , Braov,1997.
[21] PASCARIU, I -Elemente finite. Concepte, aplcaii, Editura
Militar,Bucureti, 1985.
[22] POTERAU, V.F.,.a..-Metode numerice n elasticitate i plasticitate,vol.
I, Editura Academiei Romne, Bucureti, 1993 .
[23] OLARIU, V.,.a.. - Modelare numeric cu elemente finite, Editura
Tehnic, Bucureti, 1986 .
[24] SALVADORI, M.-Metode numerice n algebr, Editura Tehnic,
Bucureti, 1972
[25] SAWCZUK, A.,.a. - Teoria plasticitii, Editura Tehnic, Bucureti,
1970, trad. de prof. dr. ing. N. Cristescu .
[26] SIMIONESCU, I. et al.-Metode numerice n tehnic, Ed. Tehnic,
Bucureti, 1995.
[27] VOINEA, R.,.a. -Introducere n mecanica soliduli cu aplicaii n
inginerie, Editura Academiei Romne, Bucureti, 1989 .
ANEX
258
MATLAB n ingineria mecanic
PROGRAM PENTRU DETERMINAREAPARAMETRILOR
DE INTRARE AI SIMULRII PROCESULUI DE
DEFORMARE SUPERPLASTIC
Programul este astfel realizat nct s nu fie necesare comenzi suplimentare
pentru executarea ncrcrii datelor experimentale, pentru plotarea graficelor pe
baza calculelor, respectiv pentru executarea unor opiuni.
Comanda programului poate fi realizat att din fereastra de
comand(Command Window) ct i prin intermediul casetelor de dialog(msgdlg
sau msgbox) sau al butoanelor.
Programul determin prin calcul direct parametrii tehnologici ai deformrii
superplastice pentru diferite situaii impuse, fiind organizat astfel:
-liniile de ajutor i informaii sunt de culoare verde;
-irurile de caractere sunt marcate cu culoarea roie;
-buclele if- else- end sau buclele for- end, sunt marcate cu culoare
albastr, ca de altfel toate instruciunile Matlab.
%Program de analiza a dependentei
%dintre parametrii deformarii superplastice.
%Programul foloseste ca date de intrare
%rezultate experimentale stocate
%in fisierul "date.dat";
%Pentru exemplificare s-au introdus cele sase matrici cu valori
%experimentale in cadrul programului
% Incarcarea datelor
%(liniile 12 -17 sunt transformate in "comentarii"
%in cazul exemplificarii; altfel sunt linii de program)
%load k;
%load temp;
%load mar_gr;
%load eps;
%load m;
%load sigma;
%matricea coninnd valorile consistenei mecanice;
k=[ 2780 3550 4005 4530 5110 5780 6140 6730 ;
1810 2310 2780 3140 3770 4005 4260 4530 ;
570 870 1180 1510 1810 2180 2610 2950 ;
60 90 140 210 350 540 730 1420 ;
2410 3070 3680 4410 4980 5620 5970 6740 ;
1160 1670 2130 2720 3260 3680 4150 4690 ;
200 290 390 560 860 1160 1400 1670 ;
70 100 150 260 420 560 860 1160 ;
390 530 710 970 1490 2140 2910 3710 ;
180 250 320 470 710 970 1400 2020 ;
259
MATLAB n ingineria mecanic
110 170 220 300 470 630 910 1320 ;
55 85 120 170 250 390 560 860 ];
%matricea coninnd valorile temperaturii
temp=[ 299 299 299 299 299 299 299 299 ;
333 333 333 333 333 333 333 333 ;
393 393 393 393 393 393 393 393 ;
443 443 443 443 443 443 443 443 ;
299 299 299 299 299 299 299 299 ;
333 333 333 333 333 333 333 333 ;
393 393 393 393 393 393 393 393 ;
443 443 443 443 443 443 443 443 ;
299 299 299 299 299 299 299 299 ;
341 341 341 341 341 341 341 341 ;
363 363 363 363 363 363 363 363 ;
393 393 393 393 393 393 393 393 ];
%matricea continand dimensiunea grauntilor;
mar_gr=[ 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5
7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5;
7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5;
7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5;
5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5;
5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5;
5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5;
5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5;
2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0;
2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0;
2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0;
2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0];
format short e
%matricea deformatiilor reale;
eps=[0.0000318 0.000077 0.000155 0.000285 0.000669 0.00131 0.00256 0.00637 ;
0.0000318 0.000077 0.000155 0.000285 0.000669 0.00131 0.00256 0.00637 ;
0.0000328 0.0000793 0.000155 0.000285 0.000711 0.00139 0.00256 0.00637 ;
0.0000318 0.0000793 0.000155 0.000285 0.000711 0.00139 0.00256 0.0000947;
0.0000318 0.0000746 0.000155 0.000303 0.000711 0.00139 0.00256 0.00599 ;
0.0000318 0.0000746 0.000146 0.000268 0.000649 0.00116 0.00226 0.00499 ;
0.0000793 0.000155 0.000285 0.000711 0.00139 0.00272 0.00637 0.0117 ;
0.0000299 0.0000746 0.000137 0.000277 0.000629 0.00131 0.00233 0.0047 ;
0.0000318 0.000077 0.000146 0.000285 0.00069 0.00135 0.00248 0.00564 ;
0.0000318 0.000077 0.000146 0.000285 0.00069 0.00135 0.00248 0.00547 ;
0.0000309 0.0000746 0.000146 0.000268 0.000669 0.00123 0.0024 0.00547 ];
%matricea coeficientilor de sensibilitate a vitezei de deformare;
m=[ 0.31 0.22 0.19 0.17 0.15 0.13 0.11 0.08;
0.24 0.28 0.25 0.21 0.14 0.11 0.08 0.07;
0.6 0.44 0.37 0.31 0.26 0.23 0.2 0.15;
0.58 0.58 0.6 0.62 0.61 0.59 0.54 0.37;
0.31 0.27 0.24 0.21 0.017 0.14 0.12 0.1;
0.5 0.4 0.36 0.29 0.21 0.17 0.15 0.13;
0.26 0.49 0.65 0.54 0.46 0.39 0.3 0.22;
0.45 0.58 0.63 0.62 0.58 0.53 0.46 0.38;
0.29 0.41 0.47 0.5 0.51 0.48 0.44 0.37;
0.37 0.43 0.46 0.49 0.51 0.51 0.5 0.48;
260
MATLAB n ingineria mecanic
0.44 0.43 0.45 0.47 0.5 0.52 0.52 0.51;
0.45 0.51 0.52 0.53 0.53 0.55 0.57 0.59];
%matricea rezistenelor la deformare;
sigma=[ 19.167544 24.47654 27.613674 31.233444 35.232428 39.851944
42.334072 46.402004;
12.479588 15.926988 19.167544 21.649672 25.993396 27.613674
29.371848 31.233444;
3.930036 5.998476 8.135864 10.411148 12.479588 15.030664
17.995428 20.33966;
0.413688 0.620532 0.965272 1.447908 2.41318 3.723192
5.033204 9.790616;
16.616468 21.167036 25.372864 30.406068 34.336104 38.748776
41.161956 46.470952;
7.997968 11.514316 14.685924 18.753856 22.477048 25.372864
28.61342 32.336612;
1.37896 1.999492 2.688972 3.861088 5.929528 7.997968
9.65272 11.514316;
0.482636 0.68948 1.03422 1.792648 2.895816 3.861088
5.929528 7.997968;
2.688972 3.654244 4.895308 6.687956 10.273252 14.754872
20.063868 25.579708;
1.241064 1.7237 2.206336 3.240556 4.895308 6.687956
9.65272 13.927496;
0.758428 1.172116 1.516856 2.06844 3.240556 4.343724
6.274268 9.101136;
0.379214 0.586058 0.827376 1.172116 1.7237 2.688972
3.861088 5.929528];
% se incarca un set de 6 matrici : temp = temperatura,
% mar_gr = marimea grauntilor, eps = viteza de deformare, m = coef. de
sensibilitate,
% sigma = rezistenta la deformare, k = consistenta.
% Afisarea grafica a parametrilor:
MESAJ1(1)={'DORITI SA AFLATI COORDONATELE UNOR PUNCTE DE PE
GRAFIC?'};
MESAJ1(2)={'AFIRMATIV: apasati tasta "1", urmata de
"ENTER"\NEGATIV:apasati "0", "ENTER"'};
MESAJ2(1)={'ALEGETI PUNCTELE...'};
MESAJ2(2)={'Folositi mouse-ul pentru a selecta punctele!\Pentru incheiere apasati
"ENTER"'};
MESAJ3(1)={'C O O R D O N A T E L E S U N T A F I S A T E '};
MESAJ3(2)={'I N M A T L A B W O R K S P A C E'};
MESAJ4(1)={'APASATI ORICE TASTA PENTRU A CONTINUA'};
MESAJ4(2)={'APASATI TASTELE [Ctrl + C] PENTRU A RENUNTA'};
MESAJ5(1)={'S F A R S I T P R O G R A M'};
% se construiesc controalele:h,j,l
261
MATLAB n ingineria mecanic
%h=uicontrol('Style','text','Position',[80 80 300
65],'String',MESAJ1,'BackgroundColor','b','ForegroundColor','y','FontWeight','bold
');
% j=uicontrol('Style','text','Position',[80 80 300 65],'String',MESAJ2);
% l=uicontrol('Style','text','Position',[80 80 300 65],'String',MESAJ3);
msgbox('APASATI ORICE TASTA PENTRU A CONTINUA!','!!! C O N T I
N U A R E !!!')
msgbox('PENTRU INTRERUPEREA EXECUTARII PROGRAMULUI(in
orice moment!), SI REVENIREA IN "COMMAND WINDOW" APASATI
COMBINATIA DE TASTE [Ctrl+C] !','!!! H E L P !!!')

pause
subplot(2,3,1);
plot(temp/50000,'r');

%set(title('TEMPERATURA [C]'),'color','r')
index=1;
%text(50,0.0055,{'\leftarrow temp'},'FontSize',10)
legend('temp.',1)
subplot(2,3,2);plot(mar_gr/1000,'y');
%set(title('DIM. GRAUNTILOR [m*10^-6]'),'color','y')
legend('dim. gr.',1)
subplot(2,3,3);plot(eps,'m');
%set(title('VIT. DE DEF. [sec^-1]'),'color','m')
legend('vit. de def.',1)
subplot(2,3,4);plot(m/100,'g');
%set(title('COEFICIENTUL m'),'color','g')
legend('coef. "m"',1)
subplot(2,3,5);plot(sigma/10000,'b');
%set(title('REZ. DE DEF. [N/mm^2]'),'color','b')
legend('rez. de def.',1)
subplot(2,3,6);plot(k/1000000,'k');
%set(title('CONSISTENTA [N/mm^2]'),'color','k')
262
MATLAB n ingineria mecanic
legend('consistenta',1)
msgbox('URMARITI MESAJELE DE LA BAZA FIGURII','!! I M P O R T A N
T !!')
zoom on
msgbox('Pentru "ZOOM- IN" folositi butonul stang al mouse- ului...Pentru
"ZOOM- OUT" folositi butonul drept!','!!! Z O O M A C T I V !!!')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...

'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');

disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
delete(h)

j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...

'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;

disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
263
MATLAB n ingineria mecanic
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE
IN WORKSPACE ! VALORILE AFISATE AU EROAREA DATORATA
POZITIONARII POINTERULUI PE GRAFIC !','!! VERIFICARE !!')
elseif (r~=1)&(r~=0)
disp('!! EROARE!! NU ATI APASAT NICI TASTA "1" SI NICI
TASTA "0" ! ACESTA ESTE MOTIVUL PENTRU CARE PRACTIC S-A
PIERDUT O ETAPA A PROGRAMULUI !! PENTRU A REVENI
APASATI [Ctrl+C] DUPA CARE INTRODUCETI <nume_fisier> IN
COMMAND WINDOW !' )
errordlg('NU ATI APASAT NICI TASTA "1" SI NICI TASTA"0"! ACESTA
ESTE MOTIVUL PENTRU CARE PRACTIC S-A PIERDUT O ETAPA A
PROGRAMULUI !! PENTRU A REVENI APASATI [Ctrl+C] DUPA CARE
INTRODUCETI <nume_fisier> IN COMMAND WINDOW ! PENTRU A
CONTINUA APASATI ORICE TASTA !','!!! EROARE UTILIZATOR !!!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...

'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left','Visible','on');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...

'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
zoom off
pause
%Reprezentarea grafica a expresiei sigma=k*(eps^m)
zoom on
msgbox('Pentru "ZOOM- IN" folositi butonul stang al mouse- ului...Pentru
"ZOOM- OUT" folositi butonul drept!','!!! H E L P !!!')
sigma_calc = k.*(eps.^m);
subplot(1,1,1)
plot(sigma_calc,'r');
ylabel('REZISTENTA [kPa]')
xlabel('INDEX')
264
MATLAB n ingineria mecanic
set(title('GRAFICUL VALORILOR CALCULATE PENTRU REZISTENTA DE
DEFORMARE'),'color','r')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
disp(blanks(1)')
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE
IN WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left','Visible','on');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
disp(' A S T E P T A T I V A R O G !... ')
265
MATLAB n ingineria mecanic
g = waitbar(0,'A S T E P T A T I V A R O G !...');
for i=1:1000,
% SE REALIZEAZA CALCULE %
waitbar(i/1000)
end
close(g)
% Aplicarea metodei celor mai mici patrate:
temp1 = temp(1:8);
mar_gr1 = mar_gr(1:8);
eps1 = eps(1:8);
m1 = m(1:8);
sigma1 = sigma(1:8);
k1 = k(1:8);
temp2 = temp(9:16);
mar_gr2 = mar_gr(9:16);
eps2 = eps(9:16);
m2 = m(9:16);
sigma2 = sigma(9:16);
k2 = k(9:16);
temp3 = temp(17:24);
mar_gr3 = mar_gr(17:24);
eps3 = eps(17:24);
m3 = m(17:24);
sigma3 = sigma(17:24);
k3 = k(17:24);
temp4 = temp(25:32);
mar_gr4 = mar_gr(25:32);
eps4 = eps(25:32);
m4 = m(25:32);
sigma4 = sigma(25:32);
k4 = k(25:32);
temp5 = temp(33:40);
mar_gr5 = mar_gr(33:40);
eps5 = eps(33:40);
266
MATLAB n ingineria mecanic
m5 = m(33:40);
sigma5 = sigma(33:40);
k5 = k(33:40);
temp6 = temp(41:48);
mar_gr6 = mar_gr(41:48);
eps6 = eps(41:48);
m6 = m(41:48);
sigma6 = sigma(41:48);
k6 = k(41:48);
temp7 = temp(49:56);
mar_gr7 = mar_gr(49:56);
eps7 = eps(49:56);
m7 = m(49:56);
sigma7 = sigma(49:56);
k7 = k(49:56);
temp8 = temp(57:64);
mar_gr8 = mar_gr(57:64);
eps8 = eps(57:64);
m8 = m(57:64);
sigma8 = sigma(57:64);
k8 = k(57:64);
temp9 = temp(65:72);
mar_gr9 = mar_gr(65:72);
eps9 = eps(65:72);
m9 = m(65:72);
sigma9 = sigma(65:72);
k9 = k(65:72);
temp10 = temp(73:80);
mar_gr10 = mar_gr(73:80);
eps10 = eps(73:80);
m10 = m(73:80);
sigma10 = sigma(73:80);
k10 = k(73:80);
temp11 = temp(81:88);
mar_gr11 = mar_gr(81:88);
267
MATLAB n ingineria mecanic
eps11 = eps(81:88);
m11 = m(81:88);
sigma11 = sigma(81:88);
k11 = k(81:88);
temp12 = temp(89:96);
mar_gr12 = mar_gr(89:96);
eps12 = eps(89:96);
m12 = m(89:96);
sigma12 = sigma(89:96);
k12 = k(89:96);
% Cu majuscule se vor nota valorile calculate ale lui 'm' si 'k' prin metoda numerica
conditie = 1;
pas = 0.001;
eroare = 0.000001;
expresie = 0;
M = 0;
i = 0;
% Bucla de cautare a valorii lui M
% pentru care 'expresie' se apropie de zero in limita 'erorii'
while conditie
M = M+pas;
i = i+1;

s11 = sum(eps1.^(2*M));
s21 = sum((eps1.^M).*sigma1.*log(eps1));
s31 = sum((eps1.^M).*sigma1);
s41 = sum((eps1.^(2.*M)).*sigma1.*log(eps1));
expresie = s11*s21-s31*s41;
s12 = sum(eps2.^(2*M));
s22 = sum((eps2.^M).*sigma2.*log(eps2));
s32 = sum((eps2.^M).*sigma2);
s42 = sum((eps2.^(2.*M)).*sigma2.*log(eps2));
expresie = s12*s22-s32*s42;
268
MATLAB n ingineria mecanic
s13 = sum(eps3.^(2*M));
s23 = sum((eps3.^M).*sigma3.*log(eps3));
s33 = sum((eps3.^M).*sigma3);
s43 = sum((eps3.^(2.*M)).*sigma3.*log(eps3));
expresie = s13*s23-s33*s43;

s14 = sum(eps4.^(2*M));
s24 = sum((eps4.^M).*sigma4.*log(eps4));
s34 = sum((eps4.^M).*sigma4);
s44 = sum((eps4.^(2.*M)).*sigma4.*log(eps4));
expresie = s14*s24-s34*s44;

s15 = sum(eps5.^(2*M));
s25 = sum((eps5.^M).*sigma5.*log(eps5));
s35 = sum((eps5.^M).*sigma5);
s45 = sum((eps5.^(2.*M)).*sigma5.*log(eps5));
expresie = s15*s25-s35*s45;

s16 = sum(eps6.^(2*M));
s26 = sum((eps6.^M).*sigma6.*log(eps6));
s36 = sum((eps6.^M).*sigma6);
s46 = sum((eps6.^(2.*M)).*sigma6.*log(eps6));
expresie = s16*s26-s36*s46;
s17 = sum(eps7.^(2*M));
s27 = sum((eps7.^M).*sigma7.*log(eps7));
s37 = sum((eps7.^M).*sigma7);
s47 = sum((eps7.^(2.*M)).*sigma7.*log(eps7));
expresie = s17*s27-s37*s47;
s18 = sum(eps8.^(2*M));
s28 = sum((eps8.^M).*sigma8.*log(eps8));
s38 = sum((eps8.^M).*sigma8);
s48 = sum((eps8.^(2.*M)).*sigma8.*log(eps8));
expresie = s18*s28-s38*s48;

s19 = sum(eps9.^(2*M));
s29 = sum((eps9.^M).*sigma9.*log(eps9));
s39 = sum((eps9.^M).*sigma9);
s49 = sum((eps9.^(2.*M)).*sigma9.*log(eps9));
expresie = s19*s29-s39*s49;
269
MATLAB n ingineria mecanic

s10 = sum(eps10.^(2*M));
s20 = sum((eps10.^M).*sigma10.*log(eps10));
s30 = sum((eps10.^M).*sigma10);
s40 = sum((eps10.^(2.*M)).*sigma10.*log(eps10));
expresie = s10*s20-s30*s40;
s111 = sum(eps11.^(2*M));
s211 = sum((eps11.^M).*sigma11.*log(eps11));
s311 = sum((eps11.^M).*sigma11);
s411 = sum((eps11.^(2.*M)).*sigma11.*log(eps11));
expresie = s111*s211-s311*s411;
s112 = sum(eps12.^(2*M));
s212 = sum((eps12.^M).*sigma12.*log(eps12));
s312 = sum((eps12.^M).*sigma12);
s412 = sum((eps12.^(2.*M)).*sigma12.*log(eps12));
xpresie = s112*s212-s312*s412;
if abs(expresie) < eroare
conditie = 0
end
end
K1 = sum((eps1.^M).*sigma1)/sum(eps1.^(2*M));
K2 = sum((eps2.^M).*sigma2)/sum(eps2.^(2*M));
K3 = sum((eps3.^M).*sigma3)/sum(eps3.^(2*M));
K4 = sum((eps4.^M).*sigma4)/sum(eps4.^(2*M));
K5 = sum((eps5.^M).*sigma5)/sum(eps5.^(2*M));
K6 = sum((eps6.^M).*sigma6)/sum(eps6.^(2*M));
K7 = sum((eps7.^M).*sigma7)/sum(eps7.^(2*M));
K8 = sum((eps8.^M).*sigma8)/sum(eps8.^(2*M));
K9 = sum((eps9.^M).*sigma9)/sum(eps9.^(2*M));
K10 = sum((eps10.^M).*sigma10)/sum(eps10.^(2*M));
K11 = sum((eps11.^M).*sigma11)/sum(eps11.^(2*M));
K12 = sum((eps12.^M).*sigma12)/sum(eps12.^(2*M));
sigma_calc1 = K1.*(eps1.^((-1)*M));
sigma_calc2 = K2.*(eps2.^((-1)*M));
sigma_calc3 = K3.*(eps3.^((-1)*M));
sigma_calc4 = K4.*(eps4.^((-1)*M));
sigma_calc5 = K5.*(eps5.^((-1)*M));
270
MATLAB n ingineria mecanic
sigma_calc6 = K6.*(eps6.^((-1)*M));
sigma_calc7 = K7.*(eps7.^((-1)*M));
sigma_calc8 = K8.*(eps8.^((-1)*M));
sigma_calc9 = K9.*(eps9.^((-1)*M));
sigma_calc10 = K10.*(eps10.^((-1)*M));
sigma_calc11 = K11.*(eps11.^((-1)*M));
sigma_calc12 = K12.*(eps12.^((-1)*M));
% Trasare grafic curba calculata
subplot(1,2,1)
plot(eps1,sigma_calc1,'r')
grid on
set(title('SIGMA CALCULAT-1'),'color','r')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');

disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
271
MATLAB n ingineria mecanic
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
hold off
subplot(1,2,2)
plot(eps2,sigma_calc2,'b');grid
set(title('SIGMA CALCULAT-2'),'color','b')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');

disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
272
MATLAB n ingineria mecanic
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
l=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ3,...
'BackgroundColor','c','ForegroundColor','k','FontWeight','bold','HorizontalAlignme
nt','center');
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(2,1,1)
plot(eps3,sigma_calc3,'g')
set(title('SIGMA CALCULAT-3'),'color','g')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
273
MATLAB n ingineria mecanic

disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
274
MATLAB n ingineria mecanic
pause
subplot(2,1,2)
plot(eps4,sigma_calc4,'k')
set(title('SIGMA CALCULAT-4'),'color','k')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
275
MATLAB n ingineria mecanic
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(1,1,1)
subplot(1,2,1)
plot(eps5,sigma_calc5,'y')
set(title('SIGMA CALCULAT-5'),'color','y')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
276
MATLAB n ingineria mecanic
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(1,2,2)
plot(eps6,sigma_calc6,'r')
set(title('SIGMA CALCULAT-6'),'color','r')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
277
MATLAB n ingineria mecanic
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(2,1,1)
plot(eps7,sigma_calc7,'m')
set(title('SIGMA CALC7'),'color','m')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
278
MATLAB n ingineria mecanic
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(2,1,2)
plot(eps8,sigma_calc8,'c')
set(title('SIGMA CALCULAT-8'),'color','c')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
279
MATLAB n ingineria mecanic
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
280
MATLAB n ingineria mecanic
subplot(1,2,1)
plot(eps9,sigma_calc9,'b')
set(title('SIGMA CALCULAT-9'),'color','b')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
281
MATLAB n ingineria mecanic
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(1,2,2)
plot(eps10,sigma_calc10,'k')
set(title('SIGMA CALCULAT-10'),'color','k')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
282
MATLAB n ingineria mecanic
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
pause
subplot(2,1,1)
plot(eps11,sigma_calc11,'r')
set(title('SIGMA CALCULAT-11'),'color','r')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');

disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
283
MATLAB n ingineria mecanic
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(2,1,2)
plot(eps12,sigma_calc12,'b')
set(title('SIGMA CALCULAT-12'),'color','b')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');

disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
284
MATLAB n ingineria mecanic
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
% Trasare grafic puncte experimentale
subplot(2,1,1)
plot(eps1,sigma1,'r')
set(title('VITEZA DE DEFORMARE FUNCTIE DE REZISTENTA LA
DEFORMARE'),'color','r')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
285
MATLAB n ingineria mecanic
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(2,1,2)
plot(eps2,sigma2,'g*')
set(title('VITEZA DE DEFORMARE FUNCTIE DE REZISTENTA LA
DEFORMARE'),'color','g')
286
MATLAB n ingineria mecanic
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');

disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
287
MATLAB n ingineria mecanic
pause
subplot(2,1,1)
plot(eps3,sigma3,'b')
set(title('VITEZA DE DEFORMARE FUNCTIE DE REZISTENTA LA
DEFORMARE'),'color','b')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');

disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
288
MATLAB n ingineria mecanic
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(2,1,2)
plot(eps4,sigma4,'g')
set(title('VITEZA DE DEFORMARE FUNCTIE DE REZISTENTA LA
DEFORMARE'),'color','g')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
289
MATLAB n ingineria mecanic
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(2,1,1)
plot(eps5,sigma5,'k')
set(title('VITEZA DE DEFORMARE FUNCTIE DE REZISTENTA LA
DEFORMARE'),'color','k')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
290
MATLAB n ingineria mecanic
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(2,1,2)
plot(eps6,sigma6,'r')
set(title('VITEZA DE DEFORMARE FUNCTIE DE REZISTENTA LA
DEFORMARE'),'color','r')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
291
MATLAB n ingineria mecanic
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
292
MATLAB n ingineria mecanic
subplot(2,1,1)
plot(eps7,sigma7,'b')
set(title('VITEZA DE DEFORMARE FUNCTIE DE REZISTENTA LA
DEFORMARE'),'color','b')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
293
MATLAB n ingineria mecanic
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(2,1,2)
plot(eps8,sigma8,'y')
set(title('VITEZA DE DEFORMARE FUNCTIE DE REZISTENTA LA
DEFORMARE'),'color','y')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
294
MATLAB n ingineria mecanic
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(2,1,1)
plot(eps9,sigma9,'r')
set(title('VITEZA DE DEFORMARE FUNCTIE DE REZISTENTA LA
DEFORMARE'),'color','r')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...

'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
295
MATLAB n ingineria mecanic
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(2,1,2)
plot(eps10,sigma10,'c')
set(title('VITEZA DE DEFORMARE FUNCTIE DE REZISTENTA LA
DEFORMARE'),'color','c')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
296
MATLAB n ingineria mecanic
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...

'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(2,1,1)
plot(eps11,sigma11,'r')
set(title('VITEZA DE DEFORMARE FUNCTIE DE REZISTENTA LA
DEFORMARE'),'color','r')
297
MATLAB n ingineria mecanic
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');

disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
298
MATLAB n ingineria mecanic
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
subplot(2,1,2)
plot(eps12,sigma12,'b')
set(title('VITEZA DE DEFORMARE FUNCTIE DE REZISTENTA LA
DEFORMARE'),'color','b')
disp(blanks(1)')
h=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ1,...
'BackgroundColor','b','ForegroundColor','y','FontWeight','bold','HorizontalAlignme
nt','left');
disp(blanks(1)')
r=input('DORITI SA AFLATI COORDONATELE PUNCTELOR DE PE
GRAFIC ?\n\n PENTRU "DA" APASATI "1 urmat de ENTER"\n PENTRU "NU"
APASATI "0 urmat de ENTER"');
if r==1;
j=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
disp('ALEGETI PUNCTELE ! ')
disp('INCHEIATI APASAND TASTA "E N T E R " ')
[x,y]=ginput;
disp(blanks(1)')
disp('C O O R D O N A T E L E S U N T:')
disp(blanks(1)')
disp([blanks(4),'ABSCISA',blanks(6),'ORDONATA'])
disp(blanks(1)')
disp([x,y])
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
helpdlg('COORDONATELE PUNCTELOR SELECTATE SUNT AFISATE IN
WORKSPACE','!! VERIFICARE !!')
else
299
MATLAB n ingineria mecanic
disp('Apasati orice tasta pentru a continua')
disp('Apasati [Ctrl + C] pentru a renunta')
end
disp(blanks(1)')
uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ2,...
'BackgroundColor','y','ForegroundColor','b','FontWeight','bold','HorizontalAlignme
nt','left');
n=uicontrol('Style','text','Position',[8 5 800 25],'String',MESAJ4,...
'BackgroundColor','g','ForegroundColor','r','FontWeight','bold','HorizontalAlignme
nt','left');
pause
delete(j)
delete(h)
msgbox('S F A R S I T P R O G R A M','!!!! OPTIMIZARE !!!!')
disp(' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
')
disp(' ~~~~~~~~~~ S F A R S I T P R O G R A M ~~~~~~~~ ')
disp(' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
')
%Sfarsit program
300

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