matlab in ingineria mecanica

290
  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 soluţiile acestora sunt exprimate folosind nota ţii 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 reprezentări grafice în inginerie;  Dezvoltarea soft-urilor aplicative folosind metode de creare a interfeţelor grafice interactive(GUI). MATLAB este un sistem interactiv care foloseşte, ca element definitoriu, matricea, numele acestuia fiind dat de acronimul format din cuvintele MATrix şi LABoratory. MATLAB ofer ă facilităţi multiple prin familiile de aplica ţii specifice numite toolbox-uri. Toolbox-urile sunt colec ţii de funcţii MATLAB (fi şiere “.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, reţele neuronale, simulare. Mediul MATLAB se compune din cinci păr ţi principale:  Mediul de dezvoltare-un set de facilităţi şi instrumente matematice (interfeţe grafice) cu ajutorul c ărora se pot manevra fi şierele şi funcţiile MATLAB. Aceste instrumente includ: desktop-ul MATLAB, Command Window (Fereastra de Comand ă), un sistem de urmărire a comenzilor  precum şi browser-e pentru afi şarea instrucţiunilor de Help (ajutor), spaţiului de lucru;  Biblioteca de funcţii MATLAB-un set de funcţii şi algoritmi de calcul (pornind de la cele mai simple, pentru calculul func ţiilor trigonometrice, de exemplu, şi până 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 declara ţiilor, funcţiilor, structurilor de date, intr ărilor/ieşirilor şi cu facilităţi de programare orientat ă pe obiecte.  Manevrarea graficelor -  acesta reprezintă partea grafică a sistemului MATLAB. Acest sistem include comenzi pentru vizualizarea datelor bi- şi tridimensionale, de procesare a imaginilor, anima ţiilor şi reprezentărilor grafice în general;

Upload: gellerd-vajda

Post on 22-Jul-2015

182 views

Category:

Documents


2 download

TRANSCRIPT

CAPITOLUL IINTRODUCERE N MATLABMATLAB 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 tridimensionale, de procesare a imaginilor, animaiilor i reprezentrilor grafice n general;

4

MATLAB n ingineria mecanic

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 File se tasteaz concomitent [Alt]+F-

MATLAB n ingineria mecanic

5

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. Open deschide o fereastr de dialog care permite selectarea i deschiderea unui fiier. Open Selected analizeaz fiierele pentru selectare i deschide pe cel selectat. Run 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.;

6

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: Numeric 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.

MATLAB n ingineria mecanic

7

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. Uicontrols 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.

8

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: Copy- copiaz figura n Clipboard; Copy Options- copiaz figura curent n format meta sau bitmap(vezi formatele fiierelor grafice n Windows), existnd i posibilitatea alegerii

MATLAB n ingineria mecanic

9

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 MATLABDATE single EXEMPLU 3*10^38 DESCRIERE 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 Reele numerice cu dubl precizie. Este cel mai util;izat tip de variabile n MATLAB. Matrice compact bi-dimensional cu dubl precizie. Matricile compacte stocheaz doar elementele nenule, necesitnd mai puin memorie. 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. Reea de caractere(fiecare caracter are 16 bii). Aceste reele sunt numite, n general, iruri de caractere. Reea celular. Elementele celulelor pot conine alte reele.Celulele pot colecta date i informaii de factur i mrime diferit. 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. Classa MATLAB. Aceast classa este creat de utilizator, folosind funcii MATLAB. Classa Java. Se pot utiliza appleturi Java deja existente sau se pot crea appleturi proprii. Manipulator al funciei MATLAB.

double sparse int8, uint8, int16, uint16, int32, uint32 char cell structure

3*10^300 5+6*i speye(5) uint8(magic(5))

Pachet de programe {25 Pachet eye(2)} A.ziua=12; A.culoare=rou; A.matrice=magic(3) ; inline(sin(x)) java.awt.Frame @humps

user class java class Function handle

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

10

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 printro 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]

MATLAB n ingineria mecanic

11

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 2 3 A = 4 5 6 , se introduce de la tastatur folosind urmtoarea convenie de 7 8 9 scriere:

A=[1 2 3; 4 5 6; 7 8 9]Accesarea tastei [Enter], va avea ca rezultat afiarea matricei A:

A= 1 4 7

2 5 8

3 6 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):

12

MATLAB n ingineria mecanic

A [Enter] A= 1 4 7 2 5 8 3 6 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+18atunci 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 CONSTANTEans eps realmax realmin pi i, j inf NaN - ultimul rspuns - precizia relativ, n virgul mobil - cel mai mare numr pozitiv, n virgul mobil - cel mai mic numr pozitiv, n virgul mobil - 3.1415926535897.... - unitatea imaginar ( 1 ) - infinit - Not-a-Number (nu este numr)

MATLAB n ingineria mecanicisnan isinf isfinite why - valoarea de adevr pentru NaN - valoarea de adevr pentru infinit - valoarea de adevr pentru valori finite - rspuns succint

13

NUMEREFormatul numerelor utilizabile n MATLAB este cel convenional cu punct 6 = 0,1714 , va fi recunoszecimal (scrierea britanic). Astfel, fracia zecimal 35 cut ca atare, n expresiile MATLAB, dac aceasta este scris:

0.1714Formatul 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):FORMATUL NUMERELOR short short e short g long long e long g bank rat + hex COMANDA format short format short e format short g format long format long e format long g format bank format rat format + format hex DESCRIEREA FORMATULUI -formatul scurt cu 5 cifre semnificative, cu aproximare la ultima cifr zecimal -formatul scurt n 5 cifre semnificative, aproximat prin adaos sau lips -formatul scurt cu 5 cifre semnificative, cu cea mai bun aproximare -formatul lung cu 15 cifre semnificative -formatul lung cu 15 cifre semnificative aproximat prin adaos sau lips -formatul lung cu 15 cifre semnificative, cu cea mai bun aproximare -formatul cu dou cifre zecimale semnificative, aproximat prin adaos, sau prin lips -formatul raional (raport) -afieaz semnul numrului -formatul hexazecimal

5 1,23456789012345678901 De exemplu, vectorul linie a = 3

, n

care = 1.77245385090552 , poate fi afiat n diferite formate. Pentru aceasta, se va introduce, n linia de comand, mai nti, vectorul a:

14

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 ea= 1.666666666666667e+000 1.234567890123457e+000 1.772453850905516e+000

format long g a= 1.66666666666667 format bank a= 1.67 1.23 format rat a= 5/3 100/81 format + a= +++

1.23456789012346

1.77245385090552

1.77

296/167

MATLAB n ingineria mecanic

15

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 = 1714De 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, 2 numerele complexe: a = 2i , b = 2 j , c = 3 + i 7 , d = 3 + i , e = 3 + i 2 , se pot 3 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

16

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.4142iDac 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 c = 3 + i 7 , e = 3 + i 2 , f = 1 + ( 2 + 3 )i 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.

MATLAB n ingineria mecanicf=1+(2+sqrt(3))i ??? f=1+(2+sqrt(3))i | Error: Missing operator, comma, or semicolon.

17

Numrul 3 + 2 este un numr complex, pentru care MATLAB afieaz valoarea explicit: -3.0000 + 1.4142i Numerele utilizate n MATLAB trebuie sa fie cuprinse ntre 10 308 i 10 308 .

OPERATORI ARITMETICIMATLAB 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.

FUNCIIn 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 sinh asin asinh cos cosh - sinus - sinus hiperbolic - inversa sinusului (arcsin) - inversa sinusului hiperbolic - cosinus - cosinus hiperbolic

18

MATLAB n ingineria mecanic

acos acosh tan tanh atan atan2 atanh sec sech asec asech csc csch acsc acsch cot coth acot acoth

- inversa cosinusului - inversa cosinusului hiperbolic - tangenta - tangenta hiperbolic - arctangenta - arctangenta n cadranul patru - arctangenta hiperbolic - secanta - secanta hiperbolic -arcsecanta - arcsecanta hiperbolic - cosecanta - cosecanta hiperbolic - arccosecanta - arccosecanta hiperbolic - cotangenta - cotangenta hiperbolic - arccotangent - arccotangenta hiperbolic

Funcii exponeniale exp log log10 log2 pow2 sqrt nextpow2 - exponeniala simpl ( e x ) - logaritmul natural ( ln x ) - logaritmul n baza zece ( lg x ) - logaritmul n baza doi ( log 2 x ) - puterile lui 2 ( 2 x ) - radical de ordin 2 (x )

- puterea urmtoare a lui 2 ( 2 p abs( N ) )

Funcii complexe abs angle complex conj imag real - valoarea absolut ( x ) - unghiul de faz ( z = R e i ) - creeaz numrul complex din partea real i imaginar, date - conjugatul numrului complex - partea imaginar a numrului complex - partea real a numrului complex

MATLAB n ingineria mecanicunwrap isreal - corecteaz unghiul de faz - valoarea de adevr

19

Aproximri i resturi fix floor ceil round mod rem sign - aproximare prin lips - aproximare spre cel mai mic ntreg - aproximare spre ntregul mai mare sau egal - aproximare spre cel mai apropiat ntreg - rest modulo - restul mpririi - signum

Funcii matematice speciale besselj bessely besselh besseli besselk beta - f. Bessel de ordinul I ( x 2

d2y2

dx - funcia Bessel de ordinul II - funcia Bessel de ordinul III (funcia Hankel) - funcia Bessel de ordinul I, modificat - funcia Bessel de ordinul II, modificat- funcia Beta complet ( B( z , w ) =

+ x

dy (x 2 + 2 ) y = 0 dx

t 0

1

z 1

(1 t ) w 1 dt )

betainc betaln ellipj

1 -funcia Beta incompl. ( I x ( z , w ) = t z 1 (1 t ) w 1 dt ) B( z , w )

0

1

- logaritmul natural al funciei Beta - funcia Jacobi eliptic (

(1 m sin 2 ) ) 0 [(1 t0 1 2

d

ellipke

- funcia eliptic integral (

)(1 mt 2 )]

1 2

dt )

erf

- funcia eroare ( erf ( x ) =

2

e 0

x

t2

dt )

20

MATLAB n ingineria mecanic

erfc erfinv expint

- funcia eroare complementar ( erfc( x ) = - funcia eroare invers - funcia integral exponenial (

2

e 0

t 2

dt )

x

e t dt ) t

gamma

- funcia Gamma ( (a ) = e t t a1dt )0

gammainc gammaln legendre

1 - funcia Gamma incomplet ( e t t a1dt ) (a )

0

x

- logaritmul natural al funciei Gamma - funcia Legendre asociatm m ( Pn ( x ) = ( 1) m (1 x 2 ) 2 n dm 1 dn 2 x 1 ) dx n 2 n n! dx

(

)

cross dot

- produs vectorial al doi vectori - produs scalar al doi vectori

Funcii specifice teoriei numerelor factor isprime primes gcd lcm rat - descompunerea n factori primi - valoarea de adevr, pentru numere prime - genereaz lista numerelor prime, mai mici sau egale cu nr. dat - cel mai mare divizor comun - cel mai mic multiplu comun n 1 - descompunere raional ( = d 1 + ) 1 d d2 + 1 d3 + K + dk - aproximarea raional cu afiarea rezultatului n format raional - afieaz toate permutrile posibile n! - combinri de n luate cte k C k = n (n k )!n! - factorial (n!)

rats perms nchoosek factorial

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

21

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

Operaiuni cu matrici reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find end sub2ind - schimb dimensiunea matricei - matrici diagonale i diagonala matricilor - creeaz o matrice diagonal cu elementele date - extrage matricea diagonal inferioar - extrage matricea diagonal superioar - inverseaz ordinea coloanelor, de la stnga la dreapta - inverseaz liniile - inverseaz liniile sau coloanele dup dimensiunea cerut - rotete matricea cu multiplu de 90o - afieaz indicele poziiei elementelor diferite de zero - ultimul index valabil - transform indicii multipli n indici singulari

22

MATLAB n ingineria mecanic

Matrici speciale compan gallery hadamard hankel hilb invhilb magic pascal toeplitz vander wilkinson - matricea companion - testarea tipului matricei - matricea Hadamard - matricea Hankel - matricea Hilbert - matricea invers Hilbert - matricea magic ptratic - matricea Pascal - matricea Toeplitz - matricea Vandermonde - testarea matricei Wilkinson

MATRICI, VECTORI I SCALARINOTAIIMATLAB 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 : 2 0 1 1 1 2 0 1 5 A= ; B= 2 7 9 ; C= 2 ; D= 3 2 1 5 ; E=[1 3 5 7] , 3 4 5 7 9 7 3 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: Aij, 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),

MATLAB n ingineria mecanic

23

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, 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 = 3Dac 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 SIMPLEDefinirea 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.

24

MATLAB n ingineria mecanic

DEFINIREA MATRICILOR SIMPLE PRIN INTRODUCEREA LISTEI DE ELEMENTECea 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; c) liniile se separ prin semnul punct-virgul ; ;

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

{

{

[Enter]- reprezint tasta cu acelai nume;

Acelai rezultat se obine dac elementele liniei se separ prin virgul:

A = [1,2;3,4] A= 1 2 3 4Matricea 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:

MATLAB n ingineria mecanicA=[1,2[Enter] 3,4[Enter] 5,6] [Enter]i se afieaz:

25

A= 1 3 5

2 4 6

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.

26

MATLAB n ingineria mecanic

GENERAREA MATRICILOR PRIN INSTRUCIUNI I FUNCIIn 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 E = [1 2 3 4] i F = [0,1 0,2 0,3 0,4 0,5] se genereaz astfel:

E=1:4 [Enter] E= 1 2 3 4iar 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 I3 = 1 0 0 0 1 0 1 0 0 0 1

MATLAB n ingineria mecanicI34 = 1 0 0 1 0 0

27

0 0 1

0 0 0

B). Matricea identic : ones(n), ones(m,n) Matricea identic are toate elementele egale cu cifra 1:

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 0D). 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=[]

28

MATLAB n ingineria mecanic

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);fiind obinute rezultatele: B3 = 0.4514 0.3127 0.0439 0.0129 0.0272 0.3840

0.6831 0.0928 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

MATLAB n ingineria mecanicB345(:,:,5) = 0.0099 0.4302 0.6873 0.1370 0.8903 0.3461 0.8188 0.7349 0.1660 0.1556 0.1911 0.4225

29

F). Matricea dispersiilor:sparse (A), sparse(i,j,s,m,n) Funcia sparse() genereaz o matrice dispersat n raport cu argumentul. 1 0 3 9 4 Astfel, dac se d matricea C = , atunci funcia sparse (C), 0,6 0 0 9 8 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. G). 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

30

MATLAB n ingineria mecanic

H). 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 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000 I). Matricea magic ptratic Matricea magic ptratic este generat cu funcia MATLAB magic(n) i este construit din ntregii cuprini ntre 1 i n2 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

MATLAB n ingineria mecanicM4=magic(4) M4 = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 suma_elementelor_pe_linie= sum(M4) suma_elementelor_pe_linie = 34 34 34 suma_elementelor_pe_coloana =sum(M4') suma_elementelor_pe_coloana = 34 34 34 suma_elementelor_pe_diagonala= sum(diag(M4)) suma_elementelor_pe_diagonala = 34 34

31

34

Pentru afiarea matricilor M3 respectiv M4, se tasteaz numele acesteia. J). 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 P3 = 1 1 1 1 2 3 1 3 6 1 2

32

MATLAB n ingineria mecanic

P4 = 1 1 1 1 P5 = 1 1 1 1 1 1 1 1 1 2 3 4 5 3 6 10 15 4 10 20 35 5 15 35 70 1 1 1 2 3 4 3 6 10 4 10 20

K). 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 1 0.5 1 0 1 0.5 0 0 1

0 0 1 1.5

MATLAB n ingineria mecaniccinci=wilkinson(5) cinci = 2 1 0 1 1 1 0 1 0 0 0 1 0 0 0 sase=wilkinson(6) sase = 2.5 1 1 1.5 0 1 0 0 0 0 0 0

33

0 0 1 1 1

0 0 0 1 2

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 SCRIPTO facilitate oferit de MATLAB, pentru generarea matricilor, este crearea fiierelor script. De exemplu, pentru matricea A, dat sub forma algebric, 16.0 3.0 2.0 13.0 5.0 10.0 11.0 8.0 , A= 9.0 6.0 7.0 12.0 4.0 15.0 14.0 1.0 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

34

MATLAB n ingineria mecanic

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 9 6 7 12 4 15 14 1

GENERAREA MATRICILOR PRIN NCRCAREA DIN FIIERE EXTERNEO 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

MATLAB n ingineria mecanic

35

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 5 9 4

3 10 6 15

2 11 7 14

13 8 12 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 5 10 9 6 4 15

2 13 11 8 7 12 14 1

ELEMENTELE MATRICILORElementele matricilor pot fi numere reale sau complexe, sau orice alt expresie MATLAB. De exemplu, pentru introducerea matricei 4 x = 1,3 3 (1 + 2 + 3) se folosete scrierea: 5

x=[ -1.3, sqrt(3), (1+2+3)*4/5]rezult:

[Enter]

x= -1.3000 1.7321 4.8000

36

MATLAB n ingineria mecanic

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 (,). 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.7321n 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) ) x= -1.3000

[Enter]

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]

MATLAB n ingineria mecanicA= 1 2 0 0 3 4 0 6(adic elementul din linia 2 coloana 4, al matricei A=

37

1 2 este definit, de 3 4

acum nainte, ca fiind numrul ntreg 6,(Atenie! Nu trebuie nlocuite elementele care lipsesc: A13 , A14, A23, 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 3 5 7 2 4 6 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 5 4 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.

38

MATLAB n ingineria mecanic

CONCATENAREA MATRICILORConcatenarea (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 21 4 8 2 7 9 0 8 , se paranteze drepte, [ ]. De exemplu, fiind dat matricea A = 6 7 8 9 3 5 7 9 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=

A

A+48

21 7 6 3 69 55 54 51

4 9 7 5 52 57 55 53

8 0 8 7 56 48 56 55

2 8 9 9 50 56 57 57

53 39 38 35 37 23 22 19

36 41 39 37 20 25 23 21

40 32 40 39 24 16 24 23

34 40 41 41 18 24 25 25

A+32

A+16

MATLAB n ingineria mecanic

39

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 A 6 7 8 9 3 5 7 9 53 36 40 34 39 41 32 40 A+32 38 39 40 41 35 37 39 41 69 52 56 50 55 57 48 56 A+48 54 55 56 57 51 53 55 57 37 20 24 18 23 25 16 24 A+16 22 23 24 25 19 21 23 25

TERGEREA LINIILOR I A COLOANELORSe 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: 21 4 8 2 7 9 0 8 , se poate folosi urmtoarea secven: A= 6 7 8 9 3 5 7 9

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 7 6 3

8 0 8 7

2 8 9 9

40

MATLAB n ingineria mecanic

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) =[] 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 INDICIElementele 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

21 7 exemplu, considernd matricea A = 6 3

4 9 7 5

8 0 8 7

2 8 9 9

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 M6x10 exist deja salvat pe disc,

MATLAB n ingineria mecanic

41

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 -1 0 -1 1 10 2 3 4 5 6 7 2 3 -4 5 -6 7 2 0 4 0 6 0 2 -3 4 -5 6 -7 2 3 0 0 0 7 9 8 7 6 5 4 8 -8 8 8 8 3 9 9 0 -9 9 2 10 -10 10 10 10 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 3n 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 10Utilizarea, 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]

42

MATLAB n ingineria mecanic

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 -3 3 8n timp ce, instruciunea:

E1=M(1:5,:) [Enter]extrage submatricea matricei M: E1 = 1 -1 0 -1 1

E1 care conine liniile de la 1 la 5 ale tuturor coloanelor 2 2 2 2 2 3 4 5 6 7 8 3 -4 5 -6 7 -8 0 4 0 6 0 8 -3 4 - 5 6 -7 8 3 0 0 0 7 8 9 10 9 -10 0 10 -9 10 9 10

UTILIZAREA SIMBOLURILORMATLAB, 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 kernelului 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

MATLAB n ingineria mecanic

43

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 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 \alpha \beta \gamma \delta \epsilon \zeta \eta \theta \vartheta \iota \kappa \lambda \mu \nu \xi \pi \rho \sigma \varsigma \tau \nabla \perp \cap \otimes SIMBOL

DENUMIREA SIMBOLULUI \upsilon \phi \chi \psi \omega \Gamma \Delta \Theta \Lambda \Xi \Pi \Sigma \Upsilon \Phi \Psi \Omega \forall \exists \ni \cong \copyright \langle \cup \oplus

SIMBOL

DENUMIREA SIMBOLULUI \sim \leq \infty \leftrightarrow \leftarrow \rightarrow \uparrow \downarrow \circ \pm \geq \partial \div \neq \equiv \Im \Re \supset \subset \int \in \rangle \supseteq \oslash

SIMBOL

o

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

44

MATLAB n ingineria mecanic

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.

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: 12 4 3 12 3 5 3 14 + 5 34 ln 23 8 log 5 125 _ 55 E9 = (1 + 2 + 3) : 8 11 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)

MATLAB n ingineria mecanic

45

Utilizarea acestei expresii, n calcule, (pentru determinarea valorii expresiei f=E^23*E+log(E), de exemplu), este posibil, folosind urmtoarea secven MATLAB:

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 f (x ) = 0 , unde f ( x ) = x 2 2ax + 7 , 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 DifereniereaPentru 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

46

MATLAB n ingineria mecanic

2. se aplic funcia diff() expresiei simbolice, creat anterior, f: diff(f) ans = 3*a*x^2+2*b*x+cDifereniala 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^3n 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 aDifereniala 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)

MATLAB n ingineria mecanicans = [ [ 2*k^2*x, k^2, 3*pi^3*x^2] 1/(x^2+1)^(1/2)*x]

47

Derivatele pariale se determin folosind funcia MATLAB jacobian(), n funcie de variabilele funciilor. Astfel, derivata unei funcii f (u, v ) , n raport cu funciile u( x, y ) , respectiv v( x, y ) , 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 simboliceCalculul 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),xo), cu parametrii de intrare, f(x) i xo n funcie de tipul xx ax , cnd x limitei. De exemplu, dac se cere calculul limitei funciei f ( x ) = x a aa tinde spre a, se procedeaz astfel:

48

MATLAB n ingineria mecanic

syms a x limit((x^x-a^x)/(a^x-a^a),a) ans = 1/log(a)Pentru calculul limitei irului x n = n 2 (n a n +1 a ), a > 0 , 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 laterale1 xa lim e x a

i

1 xa lim e x a +

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 simbolicePentru calculul sumelor de tipul

ak =1

n

k

, n care irul a k este definit

MATLAB n ingineria mecanic

49

simbolic, se folosete funcia MATLAB symsum( a k ,k,ko,kn). De exemplu, pentru calculul sumei

kk =1

n

12

+k

, se folosete secvena:

syms k n symsum(1/(k^2+k),1,n) ans = -1/(n+1)+1n 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

(kn k =0

2

+ 1 x k i

)

(xn k =0

k

+ y k , 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)^3respectiv, 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 TaylorDezvoltarea unei funcii n serie Taylor are o aplicabilitate deosebit n calculele numerice. Fie f : [a, b] R . 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

50

MATLAB n ingineria mecanic

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 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:k F((a )) = f k (a ),

k = 0,1,2,..., n

Forma general a dezvoltarii funciei f(x), n serie Taylor, n jurul unui f (n ) (a ) punct x=a este: (x a )n . Funcia MATLAB, pentru calculul primilor n n! n=0

termeni ai dezvoltrii, se utilizeaz funcia taylor(f(x), n, a). De exemplu, pentru determinarea primilor 4 termeni ai dezvoltrii funciei f ( x ) = e x , n jurul punctului x=3, se va folosi urmtoarea secven:2

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)^3Problemele legate de aproximarea folosind seriile Taylor vor fi abordate ntr-o alt seciune a acestei lucrri.

REZOLVAREA ECUAIILOR SIMBOLICEECUAII ALGEBRICERezolvarea ecuaiilor algebrice simple comport, n MATLAB, un volum de lucru redus, dar necesit un efort de calcul relativ mare pentru sistemul de

MATLAB n ingineria mecanic

51

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 considerate iruri de caractere separate prin caracterul virgul: solve(f1(x)=g1(x), f2(x)=g2(x), f3(x)=g3(x), ,fn(x)=gn(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 cu urmtoarea secven: syms x y

x = 2 y -2 - 2 2ln(x + 7) = yln3

este realizabil

[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 {x = 2; y = 4} .

52

MATLAB n ingineria mecanic

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 2 ( x + y ) = 3z 1 2 x + ax + (a + 1)y + a = 0 ( y + z ) 2 = 3u 1 ; . Secvena urmtoare sistemelor: 2 y + ay + (a + 1)x + a = 0 ( z + u ) 2 = 3x 1 ( u + x ) 2 = 3 y 1 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*x1','(u+x)^2=3*y-1')

MATLAB n ingineria mecanicS= u: [2x1 sym] x: [2x1 sym] y: [2x1 sym] z: [2x1 sym]iar afiarea detaliat a soluiilor este dat cu comanda:

53

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 DIFERENIALERezolvarea 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 0.9 y , y ( 0) = 1 , respectiv exemplu, rezolvarea ecuaiilor difereniale: y = 1 + 2t 0.9 y = y , y (0) = 1 , este similar, cu observaia c, n cel de-al doilea caz, 1 + 2x 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)

54

MATLAB n ingineria mecanic

respectiv, pentru a doua ecuaie:

y2=dsolve('Dy=-y*(0.9/(1+2*x))','y(0)=1','x') y2 = 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: y 1 = (1 + 2t )0.45 ;

y 2 = (1 + 2x )

0.45

respectiv y 3 = e

0.9 t 1+ 2 x

.

EXEMPLE DE UTILIZARE A OPERATORILOR I FUNCIILOR MATLAB DE BAZ1).-Calculul puterii unui numr:

S se calculeze:

3

5

1 44

+ 83

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

E 2 = 15 ;

3

E 3 = 43,56 ;

2 E 4 = 3 18 45 + 23 8 99 88,9

MATLAB n ingineria mecanicn MATLAB, se folosete algoritmul:

55

E2=15^(1/3) [Enter] E2 = 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.48913).- Calculul expresiilor exponeniale i logaritmice S se calculeze :

E 5 = e 5

3

3 1 ; E 8 = log 4 90 4 3 ; E 6 = ln 9 ; E 7 = lg 3 2002 13 5 2

(

)

E9 =

1 2 3 4 e

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

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))

56

MATLAB n ingineria mecanic

E8 = 3.23531 2 3 4 e

Pentru calculul expresiei E 9 =

, 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.5982O alt posibilitate de a calcula aceasta expresie este prin aplicarea direct a funciei MATLAB exp(), matricei

1 2 : 3 4

E9=exp([1,2;3,4])De observat c rezultatul este o matrice cu dou linii i dou coloane, exact ca i exponentul. Expresia E10 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 saua

b

bc

) se folosete algoritmul pentru calculul puterilor cu exponent1 a b

raional :

sau

c a b

;

Pentru calculul exponenialei (

ex

) nu se folosete operatorul putere (^);

MATLAB n ingineria mecanic

57

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 log c b logaritmului : log a b = log c a MATLAB dispune de o serie de combinaii, implicite, de taste pentru crearea comenzilor rapide (conform tabelului):COMBINAIA DE TASTE Ctrl+p Ctrl+n Ctrl+b Ctrl+f Ctrl+r Ctrl+l Ctrl+a Ctrl+e Ctrl+u Ctrl+d Ctrl+h Ctrl+k SEMNIFICAIAReaduce linia anterioar (prin acionarea repetata a tastei sgeat sus se readuc toate liniile anterioare, n linia curent) Readuce linia urmtoare (prin acionarea repetat a tastei sgeat jos se readuc toate liniile urmtoare, n linia curent) Salt la stnga cu un caracter Salt la dreapta cu un caracter Salt la dreapta, peste un cuvnt Salt la stnga, peste un cuvnt Salt la nceputul liniei de comand Salt la sfritul liniei de comand terge linia curent terge caracterul din dreapta cursorului terge caracterul din stnga cursorului terge de la cursor pn la sfritul liniei de comand curente.

TASTA

Ctrl+

Ctrl+ Home End Esc Del Backspace

APLICAIIS se introduc de la tastatur, urmtoarele matrici :

1 A= 3

2 3 4 2 D= 3 5

e lg 9 0 ln 5 B= 2 ln 7 lg 18 6 9 0 2 3 3 1 4 6 5 ln 9 7

1 C= 2 3

58

MATLAB n ingineria mecanic

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. Fiind dat matricea : 3 2 A = e log 3 5 5

ln 44

log 3 2002 e ln 4 4

3 123 1.2 e 3 4 1 4 ln 12 1 2

23 5

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:lg 8 3

e E=

15 ln 6 2 x 2 ln x + 23 lg 23 , pentru x= log 3 e 3 ln 5 + 16 . 6 3+ 8

(

)

MATLAB n ingineria mecanic

59

CAPITOLUL IIOPERAIILE ARITMETICE CU MATRICIn MATLAB operaiile aritmetice cu matrici (considerm matricile date A i B) au urmtoarea sintax:

A+B A-B A*B A/B A\B A^B A'

-adunare -scdere -nmulire -mprire la dreapta -mprire la stnga -ridicare la putere -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 A-B A*B A/B A\B A^B A'

- plus(A,B) - minus(A,B) - mtimes(A,B) - mrdivide(A,B) - mldivide(A,B) - mpower(A,B) - ctranspose(A)

b)- Funcii MATLAB specifice operaiilor cu tablouri de valori

A.*B

- times(A,B)

60

MATLAB n ingineria mecanic

A./B A.\B A.^B A.'

- rdivide(A,B) - ldivide(A,B) - power(A,B) - transpose(A)

ADUNAREA I SCDEREA MATRICILORAceste 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.: 1 2 5 6 a= b= ; ; c=2. 3 4 7 8 S se calculeze:a+b; a-b;a+c.Fie: 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:

1 2 m= ; 3 4

n= lg 8 e

4 ln 7 1 e 23

MATLAB n ingineria mecanicS se calculeze: M=m+n

61

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 a 11 a 12 a 13 b 11 b 12 b 13 matrici : A = a 21 a 22 a 23 i B = b 21 b 22 b 23 . Pentru a se calcula a 31 a 32 a 33 b 31 b 32 b 33 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]

62

MATLAB n ingineria mecanic

Not: De observat modul de afiare a matricilor simbolice: fiecare linie este ncadrat ntre paranteze drepte.

PRODUSUL VECTORIAL SI PRODUSUL SCALAR AL DOI VECTORIProdusul 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 7produsul 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]

MATLAB n ingineria mecanic b_simbolic=[b11,b12,b13] b_simbolic = [ 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]

63

prod_scalar_simbolic=b_simbolic*a_simbolic prod_scalar_simbolic = a11*b11+a21*b12+a31*b13

PRODUSUL MATRICILORProdusul 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 aplicnduse i n cazul nmulirii unei matrici cu un vector-linie sau vector-coloan). Ex.: 1 2 3 3 2i 1 2i 7 3 4 ; b= Fie: a= ; c=2. 5 8 9 0 1 6 8 i 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 37.1962 31.2877 25.1327+1.7321i 15 27 10.4558 28.2743-3i 2i 6i 10i -2 3 - 2i 7 - 6i 7.8284 -10i 5.1416+i 19 45 51.9706 18.8496+7i

64

MATLAB n ingineria mecanic

a2=b*a [Enter] ??? Error using Inner matrix dimensions must agree. Eroare la utilizarea operatorului * Matricile trebuie s respecte condiia dimensional a3=a*c [Enter] a3 = 2.0000 6.0000 10.0000 0 + 2.0000i a4=b*c [Enter] a4 = 3.4641 -6 16.0000 18Observaie: mesajul:

4.0000 8.0000 5.6569 6.2832

4i 0

2 - 4i 2

14 12

n cazul produsului a2=b*a, MATLAB afieaz ??? Error using ==> * Inner matrix dimensions must agree. (ntruct dimensiunile matricelor implicate n produs nu respect condiia impus !

nmulirea

a

dou

matrici

simbolice,

a 11 A = a 21 a 31

a 12 a 22 a 32

a 13 a 23 a 33

i

b 11 B = b 21 b 31

b 12 b 22 b 32

b 13 b 23 ., se realizeaz astfel: b 33

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

MATLAB n ingineria mecanic 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-produs X=A*B:

65

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

1 2 5 6 a= b= ; ; 3 4 7 8 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]

66

MATLAB n ingineria mecanic

a1 = 3.0000 -2.0000 2.0000 -1.0000 a2=b/a [Enter] a2 = -1 2 -2 3 Exemplu (produsul matricilor cu dimensiuni ne-adecvate): 3 1 2 Fie: a= ; b= 8 3 4 3 2i 1 2i 7 . 9 0 1 6

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 adecvatea Pentru mparirea la dreapta, a dou matrici simbolice, A = 11 a 21 B = [b 1 b 2 ] , se procedeaz astfel: a 12 i a 22

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]

MATLAB n ingineria mecanic B=[b1 b2] B= [ b1 b2]Cu secvena,MATLAB, urmtoare se determin matricea- X=B/A:

67

X=B/A X=[ -(a21*b2-b1*a22)/(a11*a22-a12*a21), (a11*b2-a12*b1)/(a11*a22-a12*a21)]

x a + x 2 a 12 = b 1 Soluiile sistemului de ecuaii: 1 11 x 1 a 21 + x 2 a 22 = b 1 urmtoarele comenzi

se obin cu

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

1 2 5 6 A= B= ; ; 3 4 7 8 S se calculeze:A\B; B\A.

68

MATLAB n ingineria mecanic

Cu secvena MATLAB urmtoare, rezult:

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.0000n 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 12 b 11 b 12 b 13 a A(2x2)=[aij], B(2x3)=[bik]: A = 11 . Se cere i B = b a 21 a 22 21 b 22 b 23 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 KRONECKERProdusul 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 1 pentru i = k dat de: ik = ). Aceast matrice este utilizat n calculul pentru i k 0 tensorial, n teoria deformrii elastice, n teoria deformrii plastice, respectiv n

MATLAB n ingineria mecanic

69

calculele aferente analizei cu elemente finite a proceselor de deformare plastic i elasto-vsco-plastic a materialelor. Vectorii spaiali, definii pe spaiul cu trei dimensiuni 3 , reprezint mrimi reale, de exemplu mrimi fizice, care conin trei informaii (trei scalari). Descrierea unui vector v n baze diferite ai i bi prin coordonatele respective, nu schimb valoarea sa intrinsec (v se numete i mrime invariant):i i v = va ai = vb bi

Toate mrimile invariante se numesc tensori (un exemplu tensorul tensiunilor care, dat prin componente, se reprezint x xy componentelor, ntr-un sistem de axe x, y, z: T = xy y xz yz

de tensor este prin matricea xz yz , acesta z

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:

T (0 ) = u v tensor de ordinul 0 (scalar ) T (1) = T i g i tensor de ordinul 1 ( vector )

,

unde T i sunt coordonatele tensorului n raport cu baza gi.Alte exemple de tensori i deviatori: Tensorul sferic al tensiunilor: 0 0 m + + [S ] = 0 m 0 ; m = x y z ; 3 0 0 m

Deviatorul tensiunilor: xy m x [D ] = y x y m zy zx [T ] = [S r ] + [D ] ; xz yz z m ;

70

MATLAB n ingineria mecanic

Invarianii eforturilor unitare: 1 = x + y + z

2 = x y + y z + z x xy 2 + 2 y z + 2 z x

(

)

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

2 = 1 2 + 2 3 + 3 1 3 = 1 2 3

Tensorul deformaiilor specifice: 1 xy x 2 [T ] = 1 y x y 2 1 1 2 zx 2 zy

1 xz 2 1 yz 2 z

Tensorul sferic al deformaiilor: m [S ] = 0 0

0m

0

0 x + y + z ; 0 ; m = 3 m

Deviatorul deformaiilor specifice: x m [D ] = 1 y x 2 1 2 zx

1 xy 2y m

1 zy 2

; z m

1 xz 2 1 yz 2

MATLAB n ingineria mecanic

71

Produsul Kronecker se realizeaz cu funcia MATLAB kron(X,Y), rezultatul fiind obinut dup urmtoarea regul de calcul:

X(1,1) * Y X(1,2) * Y K X(1, n ) * Y K X(m,1) * Y X(m,2) * Y K X(m, n ) * Y 1 2 3 De exemplu, produsul Kronecker al dou matrici X = , 4 5 6 1 2 Y= este: 3 4

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 4 5 6 3 6 9 12 15 18

2 4 6 8 10 12 4 8 12 16 20 24

FUNCIA PUTERE ATAAT UNEI MATRICIOperaia de calcul a puterii unei matrici se simbolizeaz cu operatorul ^ (Shift + 6;): A=b^c, Puterea unei matrici (bc)se calculeaz ca produs repetat de c ori al matricei b prin ea nsi: b^c=b*b*b**b de c ori

72

MATLAB n ingineria mecanic

Dac b este un scalar iar c este o matrice atunci calculul puterii realizeaz folosind valorile proprii ale matricei c respectiv ale scalarului b.

bc

se

Obs. Operaia are sens numai dac matricea b este ptratic iar c un scalar.

Ex.7:Fie: a=

1 2 ; 3 4

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.6250Trebuie 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).

TRANSPUNEREA MATRICILORTranspusa 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 operaiei, caracterul apostrof : . De exemplu, pentru matricea x : x=[1,2,3;4,5,6] ; transpusa x1 este determinat Cu secvena MATLAB urmtoare, rezult:

MATLAB n ingineria mecanic x1=x x1 = 1 2 3[Enter]

73

4 5 6

Determinantul unei matriciObs. 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 2 A= 3 4

1 2 3 3 B = 4 5 6 C = 8 7 8 9

3 2i 1 2i 7 . 9 0 1 6

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)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

74

MATLAB n ingineria mecanic

n MATLAB(versiunile superioare versiunii 5.3), este disponibil calculul determinantului unei matrici ale crei elemente sunt simboluri literale declarate cu a b funcia syms. De exemplu, pentru calculul determinantului matricei D = se c d poate utiliza urmtoarea secven :

syms a b c d; D1= det([a, b; c, d])care returneaz urmtoarea valoare:

D1= a*d - b*c 2 / 3 1 / 3 Similar este cazul matricei A = , unde se poate utiliza 1 1 urmtoarea secven: A = sym([2/3 1/3;1 1]) A= [ 2/3, 1/3] [ 1, 1] r = det(A) r = 1/3Obs : 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 INVERSEIDac 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

MATLAB n ingineria mecanic

75

sa fie, cel putin teoretic, identic cu X = A\B iar, Y = B*inv(A) s fie identic