matcap10

10
10. MATRICE SPECIALE în MATLAB există următorul set de funcţii care generează matrice speciale, folosite în aplicaţii dealgebră liniară şi prelucrarea semnalelor: compan Calculează companionul matriceal; diag Generează o matrice diagonală; hadamard Generează matricea Hadamard; hankel Generează matricea Hankel; hilb Generează matricea Hilbert; invhilb Generează matricea Hilbert inversă; kron Calculează tensorul Kronecker; magic Generează pătratul magic; pascal Generează matricea Pascal; toeplitz Generează matricea Toeplitz; vander Generează matricea Vandermonde; wilkinson Generează matricea Wilkinson. 10.1. Companionul matriceal Funcţia compan calculează companionul unei matrice; se apelează cu sintaxa: A=compan(p) Dacă p este un vector cu coeficienţii polinomiali scrişi în ordine descrescătoare a puterilor, compan(p) este companionul matriceal corespondent. Prima linie a companionului este constituită din numere reprezentând catul cu semn schimbat dintre coeficienţii polinomiali, începând cu puterea (n-1) până la termenul liber şi coeficientul polinomial al puterii n, adică - p(2:n)/p(1). Pentru polinomul: P(x) = p(l)x n + p(2)x n "' + p(3)x n2 +...+p(n - l)x 2 + p(n)x' + p(n + 1) prima linie a companionului este: -p(2)/p(1), -p(3)/p(1) ..., -p(n+1)/p(1). Valorile proprii ale companionului unui vector p, ai cărui coeficienţi polinomiali sunt daţi de funcţia eig(compan(p)), sunt rădăcinile polinomului. Prin urmare, pentru a determina rădăcinile unui polinom, se poate folosi expresia MATLAB: r=eig(compan(p)) unde p sunt coeficienţii polinomului în ordinea descrescătoare a puterilor. Exemplul 10.1.1. Să se determine rădăcinile polinomului: p(x)=x 3 - x 2 - x + 1 Se scrie vectorul coeficienţilor polinomiali, se determină companionul şi apoi valorile proprii ale acestuia. Valorile proprii ale companionului sunt chiar rădăcinile polinomului. Cu secvenţa de instrucţiuni MATLAB: p = [ 1 -1-- 1 1 ]; b = compan( p ) ;

Upload: linndowws

Post on 06-Nov-2015

213 views

Category:

Documents


0 download

DESCRIPTION

cursuri de facultate in romana MatLab

TRANSCRIPT

10. MATRICE SPECIALEn MATLAB exist urmtorul set de funcii care genereaz matrice speciale, folositen aplicaii dealgebr liniar i prelucrarea semnalelor:companCalculeaz companionul matriceal;diagGenereaz o matrice diagonal;hadamardGenereaz matricea Hadamard;hankelGenereaz matricea Hankel;hilbGenereaz matricea Hilbert;invhilbGenereaz matricea Hilbert invers;kronCalculeaz tensorul Kronecker;magicGenereaz ptratul magic;pascalGenereaz matricea Pascal;toeplitzGenereaz matricea Toeplitz;vanderGenereaz matricea Vandermonde;wilkinsonGenereaz matricea Wilkinson.10.1. Companionul matricealFuncia compan calculeaz companionul unei matrice; se apeleaz cu sintaxa: A=compan(p)Dac p este un vector cu coeficienii polinomiali scrii n ordine descresctoare a puterilor, compan(p) este companionul matriceal corespondent. Prima linie a companionului este constituit din numere reprezentnd catul cu semn schimbat dintre coeficienii polinomiali, ncepnd cu puterea (n-1) pn la termenul liber i coeficientul polinomial al puterii n, adic -p(2:n)/p(1). Pentru polinomul:P(x) = p(l)xn + p(2)xn"' + p(3)xn2+...+p(n - l)x2 + p(n)x' + p(n + 1) prima linie a companionului este:-p(2)/p(1),-p(3)/p(1)..., -p(n+1)/p(1).Valorile proprii ale companionului unui vector p, ai crui coeficieni polinomiali sunt dai de funcia eig(compan(p)), sunt rdcinile polinomului.Prin urmare, pentru a determina rdcinile unui polinom, se poate folosi expresia MATLAB:r=eig(compan(p)) unde p sunt coeficienii polinomului n ordinea descresctoare a puterilor.Exemplul 10.1.1. S se determine rdcinile polinomului:p(x)=x3 - x2 - x + 1Se scrie vectorul coeficienilor polinomiali, se determin companionul i apoi valorile proprii ale acestuia. Valorile proprii ale companionului sunt chiar rdcinile polinomului. Cu secvena de instruciuni MATLAB:p = [ 1 -1--1 1 ]; b = compan(p);r = eig(b) sau, mai compact:r=eig(compan(p)) se obin rdcinile polinomului:x = [ 1.0000 1.0000 -1.0000]10.2. Matricea diagonalFuncia diag genereaz matrice diagonale sau opereaz cu diagonalele unor matrice; se apeleaz cu una dintre sintaxele:D=diag(X)D=diag(XM)Argumentul opional k indic diagonala corespunztoare, anume:k = 0, diagonala principal;k > 0, indic diagonala k de deasupra celei principale;k < 0, indic diagonala k de sub cea principal.Dac argumentul X este un vector cu n componente, funcia diag(X,k) genereaz o matrice ptrat de ordinul n+abs(k), cu elementele vectorului X pe diagonala k. Apelat fr argumentul k, funcia creeaz o matrice cu elementele vectorului X pe diagonala principal.Dac argumentul X este o matrice, funcia diag(X,k) extrage un vector coloan format din elementele de pe diagonala k a matricei X.

S se genereze o matrice avnd diagonala principal identic cu cea a matricei A i cu celelalte elemente egale cu zero. Cu secvena MATLAB:A=[l 2 3;4 5 6;7 8 9]; B=diag(diag(A)) se obine rezultatul: B =1 0 00 5 00 0 9Exemplul 10.2.2. S se genereze o matrice de ordinul 2m+1, definit de relaiile:

Pentru a genera matricea tridiagonal de ordinul 2m+1, din acest exemplu, se utilizeaz secvena MATLAB:m= 2M=diag(-m:m)+diag(ones(2*m,1),1)+... diag ones(2*m,1),-1)Exemplul 10.2.3. S se aplice funcia diag vectorului V = [ 1 2 3 ]. Cu secvena MATLAB:V = [1 2 3] A = diag{y,2) B = diag(V) se obin rezultatele:A=B =0 0 10 010 000020020000030030 0 0 0 0 0 0 0 0 010.3. Matricea HadamardMatricea Hadamard este o matrice ptrat cu toate elementele 1 sau -1 aezate ntr-o astfel de succesiune, nct linia j este identic cu coloana j. Funcia hadamard se apeleaz cu sintaxa:Hn=hadamard(n)unde ordinul n al matricei trebuie s fie astfel ales, nct n, n/12 sau n/20 s fie o putere a lui 2. Aceast matrice nu este ns ortogonal (motiv pentru care s-a folosit notaia Hn), dar se poate ortogonaliza prin nmulirea cu un scalar, conform relaiei:

Exemplul 10.3.1. S se traseze liniile de nivel corespunztoare matricei Hadamard pentru n=12 i n=40. Cu secvena MATLAB:n=12; contour(hadamard(n)) se pot urmri liniile de nivel n fereastra grafic.Exemplul 10.3.2. S se determine matricele Hadamard ortogonal i neortogonal, de ordinul 2. Cu instruciunile:H2n=hadamard{2) H2o=(l/sqrt(2)) *H2n se obine rezultatul:H2n =H2o =110.7071 0.70711-10.7071 -0.707110.4. Matricea HankelMatricea Hankel este o matrice anti-simetric i anti-diagonal; se genereaz cu funcia hankel apelat cu una dintre sintaxele:H = hankeRc)H = hankeKc})Dac funcia hankel este apelat cu un singur vector argument, matricea retumat este o matrice Hankel ptrat, a crei prim coloan i prim linie sunt elementele vectorului argument; toate elementele de sub prima anti-diagonal sunt nule. n schimb, dac funcia hankel este apelat cu doi vectori argument, de dimensiuni m i n, matricea retumat este o matrice Hankel cu dimensiunea mxn. Prima coloan este definit de primul vector argument, iar ultima linie - de elementele celui de-al doilea vector argument. Dac ultimul element al primului vector (prima coloan) difer de primul element al celui de-a! doilea vector (ultima linie), elementul coloanei are prioritate fa de elementul liniei.Anti-diagonalele paralele cu anti-diagonala principal au acelai element. De exemplu:

este o matrice Hankel definit prin vectorul c=[5 4 1 2].Exemplul 10.4.1. S se genereze o matrice Hankel, definit de vectorul c=[1 2 3 4]. Cu secvena MATLAB:c = [1 2 3 4] H = hankel(c) .se obine rezultatul: H =12 3 42 3 4 03 4 0 04 0 0 0

Exemplul 10.4.2. S se genereze o matrice Hankel, definit de vectorii: c=[10 5 6] (prima coloan) i l=[1 2 3 4] (ultima linie). Cu secvena MATLAB:c=[10 5 6 ]; 1=[1 2 3 4]; H = hankel(c,l) rezult:H =10 5 6 25 6 2 36 2 3 4Se observ prioritatea ultimului element al vectorului, care definete prima coloan, fa de primul element al vectorului, care definete ultima linie.10.5. Matricea HilbertMatricea Hilbert este o matrice slab condiionat, ale crei elemente sunt definite de relaia:

Funcia hilb se apeleaz cu sintaxa: H=hilb(n)Exemplul 10.5.1. S se determine matricea Hilbert de ordinul 3. Cu instruciunea MATLAB:H = hilb(3) se obine rezultatul: H =1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.200010.6. Inversa matricei HilbertFuncia invhilb returneaz inversa matricei Hilbert de ordinul n; se apeleaz cu sintaxa:IH = invhilb{n)Rezultatele sunt exacte pentru n < 15. Compararea cu rezultatul obinut din calculul inv(hilb(n)) conduce la observaia c pentru n > 15 apar erori inacceptabile, ca urmare a slabei condiionri a matricelor Hilbert.Exemplul 10.6.1. Calculai inversa matricelor Hilbert de ordinele 3 i 25, att cu funcia invhilb ct i prin inversarea matricei H cu funcia inv. Urmrii diferenele rezultatelor. Cu secvena MATLAB:n=3IHl=invhilb(n);IH2=inv(hilbn));D=IH1-IH2;dmax=max(max(abs(D))) rezult cea mai mare diferen:dmax= 7.3896e-013 pentru n=3, i:dmax= 1.3872e+035pentru n=25. Rezultatul confirm existena unui algoritm specific implementat n funcia invhitb i atrage atenia asupra erorilor ce pot rezulta prin utilizarea unei funcii fr cunoaterea particularitilor acesteia.10.7. Tensorul KronekerFuncia K=kron(X,Y) calculeaz produsul tensorial Kronecker dintre matricele X i Y. Rezultatul este o matrice format din toate produsele posibile ntre elementele lui X i Y. Dac X este o matrice m x n, iar Y este o matrice I x p, atunci: K=/cron(X,Y) este o matrice cu dimensiunea ml x np. De reinut c produsul tensorial nu este comutativ:kron{X,Y) / kron(y,X) De exemplu, dac X este o matrice 2x3: X=[X(1,1) X(1,2) X(1,3)X(2,1) X(2,2) X(2,3)] atunci K=kron(X,Y) are ca rezultat matricea:K= [X(1,1)*YX(1,2)*YX(1,3)*YX(2,1)*YX(2,2)*YX(2,3)*Y]

s se calculeze produsele tensoriale Kroneker: XY i YX. Cu secvena MATLAB:X=[l 2; 3 4; 5 6] ;Y=[l 2; 3 4];Kl=kron(XrY)K2=kron(Y,X) se obin rezultatele:K1 =K2 =12 2 412 2 4346 834683 6 4 85 6 10 129 12 12 163 6 4 85 10 6 129 12 12 1615 20 18 2415 18 20 2410.8. Ptratul magicPtratul magic de ordinul n este o matrice n x n, construit cu ntregii de la 1 la n2, care are suma elementelor de pe fiecare linie, coloan, diagonal sau anti-diagonal principal, egal. Ptratul magic are suma scalat dublu stochastic. Funcia magic se apeleaz cu sintaxa:A=magic(n) unde argumentul n trebuie s fie mai mare sau egal cu 3.Exemplul 10.8.1. S se genereze ptratul magic de ordinul 4, Cu secvena MATLAB:M = magic(4) se obine rezultatul: M =16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1care este o matrice scalat dublu stochastic i care are suma elementelor pe fiecare coloan sau linie, ct i pe diagonal, egal cu 34.10.9. Matricea PascalMATLAB poate genera o matrice ptrat avnd elementele triunghiului lui Pascal. Triunghiul lui Pascal conine coeficienii binomiali ai decompunerii (a+b)n:

pentru orice numr natural n. De exemplu, triunghiul lui Pascal cu coeficienii decompunerii unui binom de ordinul patru are urmtoarea form:0i1ll2121313314146 41Dac numerotarea liniilor triunghiului lui Pascal se face ncepnd cu zero, aa cum este prezentat mai sus, fiecare linie din triunghi va conine coeficienii descompunerii binomului (a+b)n, unde n este numrul liniei. Astfel, linia cu numrul trei conine coeficienii descompunerii binomului (a+b)3, care sunt: 1, 3, 3, 1. Funcia pascal se apeleaz cu sintaxa:P=pasca/(n) Astfel, instruciunea:P=pascal(5)returneaz matricea Pascal de ordinul 5: P =11111 12 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 70la care elementele din partea stng a antidiagonalei principale sunt elementele triunghiului lui Pascal. De multe.ori ns, apelarea funciei pascal se face cu una dintre sintaxele:P-abs(pascal(n, 1))P=abs(pascal(n,2))Pentru n=5, instruciunile:Pl=abs(pascal(5,1))P2=abs(pascal(5,2)) returneaz rezultatele:P1 =P2 =10000 00001110 0 0 0 0 0 1412 10 0 0 0 13 613 3 10 0 12 3 414 6 4 1 11111Acestea conin elementele triunghiului lui Pascal ordonate astfel: matricea P1 conine elemetele triunghiului lui Pascal ordonate pe linie, n partea triunghiular din colul stng, n timp ce matricea P2 conine elemetele triunghiului lui Pascal ordonate pe coloan, n partea triunghiular din colul drept. De exemplu, pentru extragerea coeficienilor descompunerii binomiale (a+b)8, se folosete secvena:n=8P=abs(pascal(n+1,1));Coef=P(n+1,1:n+l) obinndu-se rezultatul:Coef = [ 1 8 28 56 70 56 28 8 1 ]10.10. Matricea ToeplitzMatricea Toeplitz este definit prin vectorii elementelor primei coloane i ai primei linii. O matrice Toeplitz simetric este definit doar de un singur vector. Funcia toeplitz se apeleaz cu una dintre sintaxele:T=toeplitz(c)T=toeplitz(c,\)Dac funcia toeplitz este apelat cu un singur vector argument, matricea retumat este o matrice Toeplitz ptrat, ale crei prim coloan i prim linie sunt elementele vectorului argument, iar pe diagonala principal i pe toate diagonalele paralele cu aceasta se gsesc elementele definite n linia sau coloana amintit. n schimb, dac funcia toeplitz este apelat cu doi vectori argument de dimensiuni m i n, matricea retumat are dimensiunea m x n, a crei prim coloan este definit de primul vector argument, iar prima linie de elementele celui de-al doilea vector argument. Dac primul element al primului vector (prima coloan) difer de primul element al celui de-al doilea vector (prima linie), elementul coloanei are prioritate fa de elementul liniei.Exemplul 10.10.1. S se genereze o matrice Toeplitz hermitic, definit de vectorul c = [1 2 3 4 5].. Cu secvena MATLAB:c = [1 2 3 4 5 ] ; TI = toeplitz(c) se obine rezultatul:T1 =12 3 4 52 12 3 43 2 12 34 3 2 125 4 3 2 1Exemplul 10.10.2. S se genereze o matrice Toepliz, definit de vectorii: c=[10 5 6 ] (prima coloan) i l= [1 2 3 4] (prima linie). Cu secvena MATLAB:c = [10 5 6 ];1= (12 3 41;T = toeplitz(c,l) se obine rezultatul: T =10 2 3 4510 2 365 10 2Se observ prioritatea elementului vectorului care definete prima coloan (primul vector argument, c) fa de elementul vectorului care definete prima linie (al doilea vector argument, I)10.11. Matricea VandermondeMatricea Vandermonde este definit de expresia:V(i,j) =c(i)