Documente Academic
Documente Profesional
Documente Cultură
1/8
Alte funcii sunt implementate ca fiiere OCTAVE (M-files) i pot fi chiar modificate. O serie de funcii furnizeaz valorile unor constante speciale: pi (3.14159265), i i j unitate imaginar, eps - precizia relativ n virgul mobil (2-52), realmin - cel mai mic numr n virgul mobil (2-1022), realmax - cel mai mare numr n virgul mobil, (21023), Inf infinit, NaN (Not-a-Number) - nu este numr. 1.2. Formatul datelor: n OCTAVE afiarea valorilor se realizeaz implicit cu 3 zecimale, ns aceast setare se poate modifica cu ajutorul comenzii format: Toate calculele n OCTAVE sunt efectuate n dubl precizie. Comanda FORMAT se poate utiliza pentru a comuta ntre diferite formate de afiare a datelor de ieire : >>> format - formatul implicit (SHORT) >>> format short - reprezentare n virgul fix cu 5 cifre >>> format long - reprezentare n virgul fix cu 15 cifre >>> format short e reprezentare n virgul mobil cu 5 cifre >>> format long e reprezentare n virgul mobil cu 15 cifre >>> format short g - cea mai bun dintre reprezentrile n virgul fix i mobil cu 5 cifre >>> format long g - cea mai bun dintre reprezentrile n virgul fix i mobil cu 15 cifre >>> format hex - reprezentare n hexazecimal >>> format + - Simbolurile +, - i blank sunt utilizate pentru elemente pozitive, negative i nule; partea imaginar este ignorat >>> format bank - reprezentare pentru simboluri valutare (dolari i ceni) >>> format rat - aproximare printr-o fracie a unui ntreg Spaierea: >>> format compact suprim trecerea la linie nou suplimentar >>> format loose - revine la introducerea unei linii suplimentare Exemple: >>> c = 0.123456789012 >>> c c = 0.12346 >>> format long, c c = 0.123456789012000 >>> format short e, c c = 1.2346e-001 >>> format long e, c c = 1.23456789012000e-001 >>> format, c c = 0.12346
2/8
1.3. Comenzi de editare: Cu ajutorul tastelor cu sgei pot fi realizate o serie de aciuni de editare, astfel: Sgeat sus : recheam comanda dat anterior; Sgeat jos : recheam linia de comand urmtoare; Sgeat stnga : deplasare la stnga cu un caracter; Sgeat dreapta : deplasare la dreapta cu un caracter; Ctrl + sgeat stnga : deplasare la stnga cu un cuvnt; Ctrl + sgeat dreapta : deplasare la dreapta cu un cuvnt; Home : deplasare la nceputul liniei de comand; End : deplasare la sfritul liniei de comand; Esc : abandoneaz linia de comand curent; Ins : trece ntre modurile Insert i Overtype; Backspace : terge un caracter la stnga cursorului. Dac dorii s introducei o comand (sau un text) a crei lungime depete lungimea liniei curente, inserai trei puncte pe linia curent i continuai editarea comenzii (sau a textului) pe linia urmtoare. n programe, liniile de comentariu sunt precedate fie de caracterul %, fie de caracterul #. 1.4. Sistemul de informaii ajuttoare: Pentru apelarea sistemului de informaii ajuttoare se utilizeaz comanda help urmat de numele funciei pentru care se dorete obinerea informaiilor ajuttoare. Exemple: >>> help cos sau >>> help plot 1.5. Caractere speciale n Octave Caracter: : () [] Semnificaie: Se folosete la generarea diviziunilor Folosite pentru corpul unei funcii Pentru desemnarea unei matrici/vector Indicator de operatie aritmetica element cu element Continuarea unei comenzi pe linia de comanda urmatoare Separator intre instructiuni pe aceiasi linie de comanda (cu ecou pe ecran) Separator intre instructiuni pe aceiasi linie de comanda ( fara ecou pe ecran) Se foloseste pentru a anunta comentarii in program Asignare Transpusa unei matrici Separator intre elementele aceleiasi linii intr-o matrice/vector Separator intre liniile unei matrici
Calculul expresiei: E =
6 4 5 + ln(3) 1,250, 25
sin
+ cos
Calculul expresiei:
Rezolvarea n Octave:
>>> y = >>> y = >>> y = x=12.3; y = 6*x^3 5*x^2 + 3*x-1 1.0445e + 004 x = 1; y = 6*x^3 5*x^2 + 3*x - 1 3 x = 0; y = 6*x^3 5*x^2 + 3*x - 1 -1
y = 6 x 5 x + 3 x 1
3 2
Inversarea valorilor a dou variabile (varianta 1): a = 3, b = 5. Se utilizeaz o variabil ajuttoare c c = a, a = b, b = c . n final a = 5, b = 3 Inversarea valorilor a dou variabile (varianta 2): a = 3, b = 5. Se utilizeaz formulele: a = a + b, b = a b, a = a - b n final a = 5, b = 3 Calculul diametrului, ariei i volumului unei sfere de raza R: Se cunoate raza sferei (R): D=2*R A = 4 * * R2 V = 4 * * R3 / 3
Rezolvarea n Octave:
>>> a = 3; b = 5 >>> c = a, a = b, b = c c = 3, a = 5, b = 3
Rezolvarea n Octave:
>>> a = 3; b = 5 >>> a=a+b, b=ab, a=a-b a = 8, b = 3, a = 5
.
, ; % = [,] [:]
Rezolvarea n Octave:
>>> D = >>> A = >>> V = >>> ans ans >>> ans R = 10; D = 2 * R 20 A = 4 * pi * R ^ 2 1256.6 V = 4 * pi * R ^ 3 / 3 4188.8 2 ^ pi, pi ^ 2 = 8.8250 = 9.8696 max ( 2 ^ pi , pi ^ 2 ) = 9.8696
1.6. OCTAVE / MATLAB utilizat ca i calculator a) Operaii aritmetice simple: Adunare: Scdere:
>>> 5 + 3 ans = 8 >>> 5 - 3 ans = 2
nmulire:
>>> 5 * 3 ans = 15
mprire /:
>>> 5 / 3 ans=1.6667
mprire \:
>>> 5 \ 3 ans=0.60000
Observaie: La scrierea unei expresii aritmetice care nu a fost atribuit unei variabile apare o variabil ans n care programul introduce automat rezultatul.
Compararea a dou expresii: S se verifice care din urmtoarele expresii este mai mare: 2 i 2
Rezolvarea n Octave:
3/8
c) Transformarea unghiurilor din grade n radiani i invers : Transformarea unghiului din Rezolvarea n Octave: grade n radiani: >>> ug = 45;ur = ug * pi / 180 360 grade = 2 radiani ur = 0.78540 ur = ug* / 180 1.7. Alte funcii matematice d) Funcii pentru transformarea numerelor dintr-o baz n alta: pentru conversia numerelor dintr-o baz n alta: base2dec(nr,baza) convertete numrul nr din baza n baza 10; dec2base(d,baza) convertete numrul d din baza 10 n baza; dec2hex(d) convertete numrul d din baza 10 n baza 16; dec2bin(d) convertete numrul d din baza 10 n baza 2; hex2dec(h) convertete numrul h din baza 16 n baza 10; bin2dec(b) convertete numrul b din baza 2 n baza 10.
base2dec(nr,baza) >base2dec('1110',2) ans = 14 dec2base(d,baza) >>> dec2base(14,2) ans = 1110 hex2dec(h) >>hex2dec('FFA3') ans = 65443 dec2hex(d) >>> dec2hex(10) ans = A bin2dec(b) >>bin2dec('1010') ans = 10 dec2bin(d) >>> dec2bin(10) ans = 1010
15 + 3 2 + 3 15 3 2
b) log2 5 + 3 + e
2
c) x 1 + x + 3 pt. x = -11
d) cos(x)+sin(2x), pt x=15, 45, 60 grade (argumentele funciilor trigonometrice sunt n radiani). 2. S se realizeze urmtoarele transformri: 218(10) i 402(10) s se transforme n bazele 2, 8 i 16; 110100110(2) i 100101101(2) s se transforme n baza 10; 167(8) i 621(8) s se transforme n baza 10; 1AE3(16) i FF4(16) s se transforme n baza 10. 3. Determinai coordonatele polare ale urmtoarelor puncte: P1(3,4), P2(-12,45), P3(-6,-9), P4(4,-7) 4. Determinai coordonatele sferice ale punctelor: P5(3,4,11), P6(5,-6,12), P7(-3,-2,-4), P8(0,0,-12) 5. S se scrie un program pentru rezolvarea sistemului de ecuaii liniare de ordinul nti:
a x + b y = c d x + e y = f
6. Se consider dou valori reale: a i b care reprezint lungimile catetelor unui triunghi dreptunghic. Se cere s se calculeze: lungimea ipotenuzei, aria triunghiului, volumul i aria lateral a conului obinut prin rotirea triunghiului n jurul catetei a. 7. Se consider o progresie aritmetic la care se cunosc: valoarea primului termen a1 i raia r. Se cere s se determine: suma primilor n termeni: S n =
e) Funcii pentru conversia coordonatelor: n OCTAVE / MATLAB se pot utiliza urmtoarele funcii pentru conversia coordonatelor: Funcia [th,rho] = cart2pol(x,y) : realizeaz conversia din coordonate carteziene (x,y) n coordonate polare (th,rho). Unghiul th este returnat n radiani. Funcia [x,y] = pol2cart(th,rho) : realizeaz transformarea coordonatelor polare (th, rho) n coordonate carteziene (x,y), unghiul th fiind dat n radiani. Funcia [th,phi,r] = cart2sph(x,y,z) : transform coordonatele carteziene (x,y,z) n coordonate sferice, unghiurile th i phi fiind returnate n radiani. Funcia [x,y,z] = sph2cart(th,phi,r) transform coordonatele sferice (th,phi,r) n coordonate polare (x,y,z), unghiurile th i phi fiind date n radiani. Exemplu: S se transforme coordonatele Rezolvare n OCTAVE / MATLAB: carteziene ale punctului P(1,1) n coordonate polare.
X = rho * cos(th) Y = rho * sin(th) >>> [th,rho]=cart2pol(1,1) th = 0.78540 rho = 1.4142
[2 a1 + (n 1) r ] n
2
i valoarea elementului k:
ak = a1 + (k 1) r ;
8. Se consider un trunchi de con (figura) pentru care se cunosc: razele r i R i nlimea I. Se cere s se calculeze urmtoarele elemente: Generatoarea:
Sl = G (R + r ) ;
G = I 2 + (R r ) ;
2
aria
aria
total:
St = Sl + R 2 + r 2 ;
lateral:
Volumul:
R2 + r 2 + R r 2 V = I ; diagonala: d = G + 4 R r ; 3
9. Se consider dou puncte n spaiu P1(x1, y1, z1) i P2(x2, y2, z2), S se calculeze distana n spaiu dintre cele dou puncte.
4/8
Generarea unui vector cu n elemente cu pas logaritmic, ntre valorile v_min (minim) i v_max (maxim) se realizeaz cu funcia logspace, astfel: v = logspace(v_min,v_max,n). Vectorul conine n elemente , distribuite logaritmic ntre [10v_min, 10v_max]. Dac nu se precizeaz numrul de elemente va fi generat un vector cu 50 de elemente distribuite logaritmic ntre [10v_min, 10v_max]. Exemplu :
>>> v4=logspace(-2,2,5) v4 = 1.0000e-002 1.0000e-001 1.0000e+000 1.0000e+001 1.0000e+002
Generarea unei reele (mesh) se realizeaz cu ajutorul funciei meshgrid cu ajutorul creia se transform un domeniu specificat prin vectorii x i y, n tablourile X i Y, care pot fi utilizate att la evaluarea funciilor de dou variabile ct i la reprezentrile grafice 2D sau 3D. Sintaxa funciei este urmtoarea : [X, Y] = meshgrid(x,y) sau: [X,Y] = meshgrid(x) cnd vectorii sunt egali. Funcia returneaz n tablourile X i Y perechile de coordonate ale tuturor punctelor din domeniul definit de vectorii x i y. Vectorii x i y sunt definii astfel: mesh-ul definit astfel este reprezentat n figura de mai jos (figura 2.1.):
x = xmin : x : xmax; y = ymin : y : ymax;
Dac se dorete generarea unui vector pentru care se cunosc valoarea minim (v_min), valoarea maxim (v_max) i numrul de elemente (n) se utilizeaz funcia linspace, astfel: v = linspace(v_min, v_max, n). Exemplu: Generarea vectorului v3 = [1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00]
>>> v3=linspace(1,3,9) v3 = Columns 1 through 9: 1.0000 1.2500 1.5000 1.7500 2.0000 2.2500 2.5000 2.7500 3.0000
P.U.C., Programarea n MatLab - QtOctave 1 2 3 4 5 6 7 8 9 10 max = 10 ans = 1 ans = 3628800 ans = 55 ma = 5.5000
5/8
Exemplu: >>> x=-2:2,y=0:4,[X,Y]=meshgrid(x,y) x = -2 -1 0 1 2 y = Punctele obinute au coordonatele: 0 1 2 3 4 (-2,0) (-1,0) (0, 0) (1, 0) X = Y = (-2,1) (-1, 1) (0, 1) (1, 1) -2 -1 0 1 2 0 0 0 0 0 -2 -1 0 1 2 1 1 1 1 1 (-2,2) (-1, 2) (0, 2) (1, 2) -2 -1 0 1 2 2 2 2 2 2 (-2,3) (-1, 3) (0, 3) (1, 3) -2 -1 0 1 2 3 3 3 3 3 (-2,4) (-1, 4) (0, 4) (1, 4) -2 -1 0 1 2 4 4 4 4 4
Dac se dorete generarea unui vector coloan, elemnetele acestuia trebuie separate prin punct-virgul (;). Exemplu: >>> v = [0;1;3;2;4] v = 0 1 3 2 4 2.2. Prelucrarea irurilor de date Cele mai uzuale funcii utilizate n prelucrarea irurilor sunt : max - determin cea mai mare component a unui vector sau matrice; min - determin cea mai mic component a unui vector sau matrice; mean sau median - calculeaz valoarea medie a componentelor unui vector; sort - sorteaz elementele in ordine cresctoare; sum - calculeaz suma componentelor unui vector sau matrice; prod - calculeaz produsul componentelor unui vector; find - caut elementele sau indicii elementelor care ndeplinesc o anumit condiie. Exemplu : Se consider irul format din primele 10 numere naturale. Se cere s se determine elementul maxim, minim, suma i produsul elementelor irului, precum i media aritmetic a elementelor.
>>> n = 1:10, max, min(n), prod(n), sum(n), ma = sum(n)/max n =
1 Exemplu : Se consider irul de numere reale: an = 1 + . Se tie c n 1 lim 1 + = e . Se cere s se calculeze suma primilor 100, 200 i 300 de termeni ai n n
irului i s se compare cu valoarea lui e.
>>> lim >>> lim >>> lim >>> ans n = n = n = e = = 1:100; an = ( 1 + 1. / n) . ^ n ; lim = an( max( n ) ) 2.7048 = 1:200; an = ( 1 + 1. / n). ^ n ; lim = an( max( n ) ) 2.7115 = 1:300; an = ( 1 + 1. / n). ^ n ; lim = an( max( n ) ) 2.7138 2.7183
n
Se observ c pe msur ce crete numrul de termeni luai n considerare, limita se apropie de valoarea lui e. Exemplu : Se consider dezv. n serie de puteri : e x = 1 + x + Se cere s se verifice egalitatea de mai sus, pt. x = 0,5 i 100 de termeni. >>> rez >>> ans x=0.5; n=1:100; ex=(x.^n)./factorial(n);rez=1+sum(ex) = 1.6487 e^x = 1.6487
x 2 x3 + + ... . 2! 3!
P.U.C., Programarea n MatLab - QtOctave >>> zeros(3,2) ans = 0 0 0 0 0 0 >>> rand(2,3) ans = 0.73478 0.88761 0.58542 0.32852 >>> zeros(2) ans = 0 0 0 0 >>> ones(2) ans = 1 1 1 1 >>> randn(2,3) ans = 1.32412 -0.12292 -0.47123 0.32081 -1.00701 0.64009
6/8
2.3. Generarea i manipularea matricelor. O matrice dreptunghiular cu m linii i n coloane se reprezint astfel:
0.57471 0.28011
Generarea matricelor: Matricele pot fi generate n mai multe moduri. Cel mai uzual const n utilizarea parantezelor ptrate i a separatorilor. Ca separatori ntre elementele matricei se folosesc blancul sau virgula n interiorul unei linii, respectiv punct i virgula sau caracterul ,,newline pentru a separa liniile. Exemplu :
>>> A = [5 7 9 1 -3 -7] >>> B = [-1 2 5; 9 0 5]
O alt categorie de funcii se utilizeaz n analiza matriceal, astfel: inv - calculeaz inversa unei matrice ptratice nesingulare; rank - calculeaz rangul unei matrice; det calculeaz determinantul unei matrice ptratice; trace - calculeaz urma unei matrice; norm - calculeaz norma vectorului sau matricei; size - returneaz dimensiunea unei matrice; length - returneaz lungimea unui vector; - calculeaz transpusa unei matrice / vector; diag - extrage din matrice matricea diagonal. Afiarea unei matrice pe ecran se realizeaz cu ajutorul funciei disp, sub forma disp(A), unde A este matricea pe care dorim s o afim.
9 5 7 A= 1 3 7 1 B= 9 0 C= 3 4 2 5 0 5 1 2 2
OCTAVE deine un set de funcii cu ajutorul crora se pot construi matrice speciale, astfel : zeros genereaz matricea nul (cu elemente nule), ones genereaz matricea format din elemente 1, eye matricea identic, rand, respectiv genereaz o matrice cu elemente numere aleatoare distribuite uniform, randn numere aleatoare distribuite normal. Sintaxa acestor funcii este aceeai, astfel c zeros(m,n) genereaz o matrice cu elemente nule cu m linii i n coloane, iar zeros(n) genereaz o matrice cu elemente nule cu n linii i n coloane (matrice ptratic). Exemple :
6 0 -4
7/8
Alte funcii asociate matricelor sunt : reshape - schimbarea dimensiunii; diag matrice diagonale i diagonale ale matricelor; blkdiag - matrice diagonal pe blocuri; tril extragerea prii triunghiulare inferioare; triu - extragerea prii triunghiulare superioare; fliplr - rotire matrice n jurul axei de simetrie verticale; flipud - rotire matrice n jurul axei de simetrie orizontale; rot90 - rotaia unei matrice cu 90 de grade.
-3
% Rotirea matricei M2 cu 90, respectiv cu 2 x 90 >>> rot90(M2,1) >>> rot90(M2,2) ans = ans = 2 1 -3 -3 2 0 3 0 2 1 0 -2 1 -2 0 2 3 1 2.4. Extragerea elementelor individuale ale unui vector sau matrice n cazul vectorilor elementele individuale se apeleaz prin numele vectorului urmat de indicele elementului dorit, plasat ntre paranteze rotunde. Dac se dorete s se extrag o succesiune de elemente dintr-un vector se utilizeaz forma A(i :j), unde : A reprezint numele vectorului, i i j reprezint indicii elementelor de nceput, respectiv de sfrit a subirului care se extrage din vectorul A. Pentru extragerea unei succesiuni de elemente cu un anumit pas, se utilizeaz forma A(i :p :j), unde p reprezint pasul. Exemple : Se consider irul : A = [-2 1 3 0 6 4 -3 5 7 -1 6 8 2 -3 9] >>> A=[-2 1 3 0 A = -2 1 3 0 6 4 -3 >>> A(5) ans = 6 >>> A(10) ans = -1 >>> A(3:6) ans = 3 0 6 4 >>> A(2:2:8) ans = 1 0 4 5 6 4 -3 5 7 -1 6 8 2 -3 9] 5 7 -1 6 8 2 -3 9 % Se extrage val. elem. cu indicele 5 % Se extrage val. elem. cu indicele 10 % Se extrag elem. cu indicii 3,4,5,6 % Se extrag elem. cu indicii 2,4,6,8
% Generarea matricei M2
>>> D1=tril(M2) % Extragerea prii triunghiulare inf. D1 = 1 0 0 -2 0 0 0 2 -3 >>> D2=triu(M2) % Extragerea prii triunghiulare sup. D2 = 1 3 2 0 0 1
n cazul matricelor, elementele individuale se apeleaz cu numele matricei urmat de doi indici (unul pentru linie i unul pentru coloan) separai prin virgul i cuprini ntre paranteze rotunde.
8/8
3 2 0 1 2 3 1 1
4 3 1 0
c) an =
2. S se calculeze valorile funciilor trigonometrice sinus i cosinus pentru un argument x i un numr de n termeni (de exemplu x = 0.75 i n = 150), utiliznd dezvoltrile n serie Taylor:
>>> M = [1 3 2 4; -2 0 1 3; 0 2 -3 1; -4 1 -1 0] M = 1 3 2 4 -2 0 1 3 0 2 -3 1 -4 1 -1 0 >>> M(2,3) % Extragerea elementului situat pe linia 2 coloana 3 ans = 1 >>> M(:,2) % Extragerea coloanei a doua ans = 3 0 2 1 >>> M(2,1:3) ans = -2 0 1 % Extragerea primelor trei elemente de pe linia a doua
x2 x4 x6 + + ... b) cos( x) = 1 2! 4! 6! 3. Se consider trei puncte n plan: Pi ( xi , yi ) i = 1,3 . S se calculeze aria triunghiului
x1 D , unde D = x2 construit cu cele trei puncte: A = 2 x3 y1 1 y2 1 . y3 1
x3 x5 x 7 + + ... a) sin( x) = x 3! 5! 7!
4. Se consider o dreapt dat de dou puncte: P1(x1, y1) i P2(x2, y2). Se cere s se precizeze dac un punct P3(x3, y3) aparine sau nu acestei drepte. Condiia necesar i suficient ca trei puncte Pi(xi, yi), i = 1,2,3 s fie coliniare este:
x1 D = x2 x3
y1 1 y2 1 = 0 . y3 1
>>> C=M(2:4,1:3) % Extragerea unei matrice care s conin lin. 2,3,4 i col. 1,2,3 C = -2 0 1 0 2 -3 -4 1 -1
5. Calculul sumei : S = (1)+ (1+2)+ (1+2+3)+ (1+2+3+4) + ... lund n considerare n termeni (maxim 25 de termeni). 6. Se consider vectorul: v = [10 12 0 8 9 1 0 4 -2 -14 7 0 5 -10 0]. a) S se sorteze vectorul v n ordine cresctoare; b) S se sorteze vectorul v n ordine descresctoare; c) S se afieze indicii elementelor lui v, diferite de zero; d) S se afieze pentru vectorul v: suma elementelor, cel mai mare element, cel mai mic element.
Exerciii:
1. S se calculeze limitele urmtoarelor iruri: a) an =
k2 3 1+ 1 3 n k =1
n
b) an =
sin( k ) 2 +k k =1
n