11.07.2015 Views

Probleme de examen

Probleme de examen

Probleme de examen

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2 SEMINAR 6. EXAMINARE6.1.1 Soluţia problemelor din setul nr. 1Observaţie Programele MATLAB <strong>de</strong> implementare a algoritmilor elaboraţi sunt prezentaţi în AnexaProblema 1. Matricea dată A ∈ IR n×n are elemente nenule numai pe diagonală şi pe primacoloană, astfel A este o matrice inferior triunghiulară cu următoarea structură.⎡A =⎢⎣a. Exploatând structura matricei avem:( ∑µ = ‖A‖ 1 = maxj=1:nν = ‖A‖ ∞ = maxi=1:n⎤a 11 0 0 · · · 0a 21 a 22 0 · · · 0a 31 0 a 33 · · · 0.... ... ⎥ .. ⎦a n1 0 0 · · · a nni=1:n( ∑j=1:n|a ij||a ij|))= max(= max( ∑i=1:n√ √√√a n∑ n∑ρ = ‖A‖ F = √ a 2 ij = 211 +i=1 j=1|a 11|, maxi=2:n)|a i1|, max (|ajj|) ,j=2:n)(|a i1| + |a ii|)n∑(a 2 i1 + a2 ii ).Astfel, un algoritm eficient care calculează cele trei norme ale matricei este:1. µ = 02. pentru i = 1 : n1. µ = µ + |a i1|3. pentru j = 2 : n1. dacă |a jj| > µ1. µ = |a jj|4. ν = |a 11|5. pentru i = 2 : n1. σ = |a i1| + |a ii|2. dacă σ > ν1. ν = σ6. ρ = a 2 117. pentru i = 2 : n1. ρ = ρ + a 2 i1 + a 2 ii8. ρ = √ ρb. Sistemul Ax = b, un<strong>de</strong> b ∈ IR n este dat, este inferior triunghiular şi are o soluţie unicădatorită faptului că matricea A este nesingulară, întrucât a ii ≠ 0 oricare ar fi i = 1 : n. Pentrua calcula x vom adapta algoritmul <strong>de</strong> substituţie înainte la structura matricei A. Ecuaţia i estea i1x 1 + a iix i = b i, aşadar vom folosi formula x i = (b i − a i1x 1)/a ii. Algoritmul estei=2,1. x 1 = b 1/a 112. pentru i = 2 : n1. x i = (b i − a i1x 1)/a ii


6.1. SETUL DE PROBLEME NR. 1 3c. Soluţia 1. Pentru a calcula X = A −1 vom rezolva sistemul liniar matriceal AX = I m, careeste echivalent cu rezolvarea sistemelor binare Ax j = e j, j = 1 : n, un<strong>de</strong> x j = X(:, j) este coloanaj a lui X şi e j = I m(:, j) este coloana j a matricei unitate I m. Observaţi mai întâi că matriceaX = A −1 este inferior triunghiulară <strong>de</strong>oarece A este inferior triunghiulară. Astfel x j(1 : j − 1) = 0.La fel, ca în cazul algoritmului general <strong>de</strong> inversare a matricelor inferior triunghiulare (vezi cursul),vectorul x j(j : n) este soluţia sistemului liniar inferior triunghiular⎡ ⎤10A(j : n, j : n)x j(j : n) = e 1, un<strong>de</strong> e 1 = e j(j : n) =⎢⎣.0⎥⎦ ∈ IRn−j+1 .Datorită structurii matricei A, pentru j = 2 : n matricea A(j : n, j : n) este una diagonală şi, astfel,soluţia sistemului <strong>de</strong> mai sus pentru j = 2 : n este⎡ ⎤x j(j : n) =⎢⎣1/a jj0.0⎥1⎦, astfel xj = e j ∈ IR n .a jjPrima coloană a lui X poate fi calculată <strong>de</strong> algoritmul <strong>de</strong> la punctul b) pentru b = e 1. În concluzie,matricea X = A −1 are aceeaşi structură ca şi A şi poate fi calculată eficient <strong>de</strong> următorul algoritm.1. x 11 = 1/a 112. pentru i = 2 : n1. x i1 = −a i1x 11/a ii3. pentru j = 2 : n1. pentru i = 1 : n1. x ij = 02. x jj = 1/a jjSoluţia 2. Fie D = diag(A) matricea diagonală nesingulară⎡a 11 0 · · · 0⎤0 0 · · · a nn 0 a 22 · · · 0D = ⎢⎣... ... ⎥ .. ⎦şi <strong>de</strong>finim⎡⎤1 0 · · · 0a 21/a 22 1 · · · 0M 1 = D −1 A = ⎢⎣... ... ..a n1/a nn 0 · · · 1⎥⎦ = In − m1eT 1 , un<strong>de</strong> m 1 =⎡⎢⎣0−a 21/a 22.−a n1/a nncare este o matrice inferior triunghiulară elementară <strong>de</strong> ordin n şi indice 1. Deci (vezi cursul),inversa sa este Y = M −11 = I n + m 1e T 1 . Astfel,⎡⎤ ⎡⎤1/a 11 0 · · · 01 0 · · · 00 1/a 22 · · · 0−a 21/a 22 1 · · · 0X = A −1 = D −1 M −11 = ⎢⎣... ... ⎥ ⎢ .. ⎦ ⎣... ... ⎥ .. ⎦ =0 0 · · · 1/a nn −a n1/a nn 0 · · · 1⎤⎥⎦


4 SEMINAR 6. EXAMINAREAlgoritmul explicit este=⎡⎢⎣⎤1/a 11 0 · · · 0−a 21/(a 22a 11) 1/a 22 · · · 0... ... ⎥ .. ⎦a n1/(a nna 11) 0 · · · 1/a nn1. x 11 = 1/a 112. pentru i = 2 : n1. x i1 = −a i1/(a 11a ii)3. pentru j = 2 : n1. pentru i = 1 : n1. x ij = 02. x jj = 1/a jjcu acelaşi număr <strong>de</strong> operaţii (flops) N fl ≈ 3n cu solutia 1.Observaţie. O soluţie e suficientă pentru a obţine punctajul maxim.Problema 2. a. Algoritmul <strong>de</strong> factorizare Crout fără pivotare pentru o matrice inferiorHessenberg H = L ∗ U poate fi obţinut în aceeaşi manieră ca şi algoritmul general (vezi cursul),calculând, în ordine directă, o coloana a matricei inferior triunghiulare L şi linia corespunzătoare amatricei superior triunghiulare unitate U. Utilizând i<strong>de</strong>ntitatea⎡⎤h 11 h 12 · · · 0 0. h 21 h .. 22 0 0⎢... .. . ... ..=⎥⎣⎦h n−1,1 h n−1,2 · · · h n−1,n−1 h n−1,nh n1 h n2 · · · h n,n−1 h nn⎡⎤ ⎡⎤l 11 0 · · · 0 0 1 u 12 · · · u 1,n−1 u 1nl 21 l 22 · · · 0 00 1 · · · u 2,n−1 u 2n=⎢... ... ... ..⎥ ⎢... ... ... ..⎥⎣l n−1,1 l n−1 · · · l n−1,n−1 0⎦ ⎣0 0 · · · 1 u⎦n−1,nl n1 l n2 · · · l n,n−1 l nn 0 0 · · · 0 1putem continua după cum urmează.Pas 1. Avem h i1 = l i1 ∗ 1, astfel l i1 = h i1, i = 1 : n. Atunci h 1,j = l 11 ∗ u 1j, astfel u 12 = h 12/l 11,şi u 2j = 0 pentru j = 3 : n. Observaţi că matricea U este bidiagonală pe prima linie.Pas k. Presupunem că am calculat primele k − 1 coloane ale matricei L şi primele k − 1 liniiale matricei U şi că matricea U este superior bidiagonală pe primele k − 1 linii. Avem h ik =l i,k−1 ∗ u k−1,k + l ik ∗ 1, astfell ik = h ik − l i,k−1 ∗ u k−1,k , i = 1 : n.Atunci, h k,j = l kk ∗ u kj şi datorită faptului că u kj = 0 pentru j = k + 2 : n avemu k,k+1 = h k,k+1 /l kk si u kj = 0 pentru j = k + 1 : n.Astfel, matricea U este bidiagonală pe linia k. Prin inducţie, matricea U va fi superior bidiagonală.Expresiile <strong>de</strong> mai sus pentru elementele matricelor L şi U duc la următorul algoritm Croutadaptat pentru matrice inferioare Hessenberg.


6.1. SETUL DE PROBLEME NR. 1 51. pentru i = 1 : n1. pentru j = 1 : n1. l ij = 02. u ij = 02. u ii = 12. pentru i = 1 : n1. l i1 = h i13. u 12 = h 12/l 114. pentru k = 2 : n1. pentru i = k : n1. l ik = h ik − l i,k−1 ∗ u k−1,k2. dacă k = n1. STOP3. u k,k+1 = h k,k+1 /l kkEvi<strong>de</strong>nt, matricea Hessenberg H poate fi suprascrisă <strong>de</strong> matricea L şi <strong>de</strong> matricea U (exceptânddiagonala). Numărul <strong>de</strong> operaţii (flops) necesar algoritmului este N fl ≈ 3n.b. Sistemul Dx = H −1 b este echivalent cu HDx = b şi folosind algoritmul <strong>de</strong> factorizare Crout<strong>de</strong> la punctul prece<strong>de</strong>nt sistemul se transformă în LUDx = b. Astfel, notând Dx = y şi Uy = z ovariantă eficientă pentru a calcula x este1. Se rezolvă sistemul inferior triunghiular Lz = b2. Se rezolvă sistemul superior bidiagonal Uy = z3. Se rezolvă sistemul diagonal Dx = ycare este <strong>de</strong>taliată în următorul algoritm1. z = LT RIS(L, b)2. y n = z n3. pentru i = n − 1 : −1 : 11. y i = z i − u i,i+1 ∗ z i+14. pentru i = 1 : n1. x i = y i/d iiEfortul <strong>de</strong> calcul este N fl ≈ n 2 operaţii (flops).Problema 3.a. Pentru a calcula B = U 1A, un<strong>de</strong> A ∈ IR m×n este dat, vom partiţiona B pe coloane, şivom calcula b j = U 1a j pentru j = 1 : n, un<strong>de</strong> b j = B(:, j) şi a j = A(:, j). Datorită faptului căU 1 = I m − u 1u T 1 /β 1 un<strong>de</strong> β 1 = ‖u 1‖ 2 /2, , avemb j = U 1a j = (I m − u 1u T 1 /β 1)a j = a j − (u 1u T 1 /β 1)a j = a j − τu 1,un<strong>de</strong> τ = (u T 1 a j)/β 1 = (∑ mi=1 ui1aij ) /β1. Astfel, un algoritm eficient pentru calcularea matriceiB = U 1A este1. β 1 = (∑ mi=1 i1) u2 /22. pentru j = 1 : n1. τ = (∑ )mi=1 ui1aij /β12. pentru i = 1 : m1. b ij = a ij − τu i1,şi necesită N fl ≈ 4mn operaţii (flops).b. Pentru a rezolva sistemul U 1x = b, vom folosi faptul că reflectorii U 1 sunt matrice simetriceşi ortogonale. Astfel, x = U −11 b = U T 1 b = U 1b iar algoritmul este


6 SEMINAR 6. EXAMINARE1. β 1 = (∑ mi=1 i1) u2 /22. τ = (∑ )mi=1 ui1bi /β13. pentru i = 1 : m1. x i = b i − τu i1,cerând N fl ≈ 6m operaţii (flops).Problema 4. (10p) Problema cere un algoritm care să calculeze m − 1 rotaţii G 1, G 2, . . . ,G m−1 astfel încât G m−1 . . . G 2G 1b = αe m, un<strong>de</strong> α = ‖b‖ 2, <strong>de</strong>ci avem nevoie să transformăm în zeroprimele elemente ale vectorului b. Pentru a face asta să calculăm matricea <strong>de</strong> rotaţie P ij pentrui < j astfel încât (P ijb)(i) = 0. Scalarii c şi s trebuiesc să fie o soluţie a sistemului{c 2 + s 2 = 1cerinţă care este satisfacută, <strong>de</strong> exemplu, <strong>de</strong>c =cb i + sb j = 0b j−b i√b , s = √b .2i+ b 2 2ji+ b 2 jFolosind astfel <strong>de</strong> rotaţii porblema este rezolvată dacă luăm spre exemplu G kîncât secvenţa următoareb ← P 1,m . . . P m−2,mP m−1,mb = αe mreprezintă schema <strong>de</strong> calcul.= P m−k,m , astfelAlgoritmul este1. pentru i = m − 1 : −1 : 11. Se calculează c i, s i adică rotaţia P im, astfel încât (P imb)(i) = 02. b ← P imb.1. pentru i = m − 1 : −1 : 11. ρ = √ b 2 i + b2 m2. c i = b m/ρ3. s i = −b i/ρ4. b i = 05. b m = ρşi necesită m − 1 extrageri <strong>de</strong> radical şi 5(m − 1) operaţii (flops).6.2 Setul <strong>de</strong> probleme nr. 21. Care sunt permutările <strong>de</strong> linii realizate când se aplică algoritmul GP P matricei A =[ 1 4 12 4 31 −3 −12. Fie A ∈ IR n×n o matrice inferior Hessenberg (a ij = 0, pentru j > i+1) având toate submatriceleA(1 : k, 1 : k) nesingulare.a. Scrieţi un algoritm eficient care să calculeze norma Frobenius a matricei A.b. Adaptaţi algoritmul <strong>de</strong> eliminare gaussiană (fără pivotare) pentru matricea A.c. Scrieţi un algoritm <strong>de</strong>taliat pentru rezolvarea sistemului A −p x = b, un<strong>de</strong> p ≥ 2 şi b ∈ IR nsunt <strong>de</strong> asemenea date.].


6.3. SETUL DE PROBLEME NR. 3 73. Dacă matricea A ∈ IR n×n este simetrică şi pozitiv <strong>de</strong>finită, elaboraţi un algoritm <strong>de</strong>taliat pentrucalculul factorizării Cholesky A = UU T , un<strong>de</strong> U este o matrice superior triunghiulară cu elementediagonale pozitive[ ]1 04. Calculaţi o forma Schur reală a matricei A = .2 36.3 Setul <strong>de</strong> probleme nr. 31. Care sunt permutările care apar la aplicarea algoritmului GP P matricei A =Aceeaşi întrebare pentru cazul în care se aplică GP C.[1 −3 −2−2 4 −21 2 32. Se poate utiliza în siguranţă algoritmul <strong>de</strong> eliminare Gaussiană (fără pivotare) pentru a calcula<strong>de</strong>terminantul unei matrice ? De ce ?3. Fie A ∈ IR n×n o matrice tridiagonală cu toate submatricele A(1 : j, 1 : j) nesingulare.a. Scrieţi un algoritm eficient care să calculeze eficient norma infinit a matricei A (‖A‖ ∞).b. Adaptaţi algoritmul Crout pentru A.4. Fie A ∈ IR n×n dat. Scrieţi <strong>de</strong>taliat un algoritm care săa. calculeze reflectorul Househol<strong>de</strong>r U 2 astfel încât (U 2A) i1 = 0, i = 3 : n;b. calculeze A ← U 2A;c. calculeze A ← AU 2.d. Ce valori proprii are matricea calculată după paşii a–c ? De ce ?]?6.4 Setul <strong>de</strong> probleme nr. 41. a. Calculaţi factorizarile Doolittle şi Crout ale matricei A =[1 23 1b. Găsiţi o matrice B 2 × 2 pentru care ‖B‖ 1 ≠ ‖B‖ ∞. Arataţi ca pentru toate matricele B2 × 2 avem 1 ‖B‖∞ ≤ ‖B‖1 ≤ 2‖B‖∞.22. Fie R ∈ IR n×n o matrice superior triunghiulară şi b ∈ IR n un vector. Scrieţi algoritmi <strong>de</strong>taliaţişi eficienţi care săa. calculeze ‖R‖ F ;b. calculeze b T RR T b;c. calculeze b T R −1 R −T b.d. Care este numărul <strong>de</strong> operaţii necesar pentru a calcula x 12, un<strong>de</strong> X = R −1 ? (celelalteelemente ale lui X nu se calculează).[ ]Rz T3. a. Adaptaţi algoritmul <strong>de</strong> triangularizare ortogonală pentru matricea A =R ∈ IR n×n este o matrice superior triunghiulară şi z ∈ IR n un vector, ambii daţi.]., un<strong>de</strong>b. Scrieţi un algoritm eficient care să rezolve sistemul supra<strong>de</strong>terminat Ax = b în sensul celormai mici pătrate, un<strong>de</strong> A este matricea <strong>de</strong> la punctul a şi b ∈ IR n+1 este un vector dat.


8 SEMINAR 6. EXAMINARE6.5 Bibliografie1. B. Jora, B. Dumitrescu, C. Oară, Meto<strong>de</strong> numerice, UPB, Bucuresti, 1995.2. G.W. Stewart, Introduction to Matrix Computations, Aca<strong>de</strong>mic Press, 1973.Observaţie. Pentru a rezolva problemele <strong>de</strong> la <strong>examen</strong> referinţa [1] este suficientă. Referinţa[2] poate, <strong>de</strong> asemenea să, fie <strong>de</strong> mare ajutor.


6.6. ANEXĂ 96.6 AnexăPrezentăm programele MATLAB pentru implementarea algoritmilor din acest seminar.1: function [ n1,ni,nF ]=norme2(A)2: %-------------------------------------------------------------------------3: % Seminar 6 Problema 1 punctul a4: % Functia calculeaza norma unu, norma infinit si norma Frobenius a unei5: % matrice patratice A, care are elemente nenule numai pe diagonala si pe6: % prima coloana. Cele trei norme sunt notate cu n1, ni respectiv nF.7: % Apelul: [ n1,ni,nF ] = norme2(A)8: %9: % Valentin Buta, mai, 200610: %-------------------------------------------------------------------------11:12: [ n,m ]=size(A);13: if n∼=m14: error(’Matricea nu este patratica!’);15: end16: for j=2:n17: if A[ 1,j ]∼=018: error(’Matricea nu este inferior triunghiulara!’);19: end20: end21: for i=2:n22: for j=i+1:n23: if A[ i,j ]∼=024: error(’Matricea nu este inferior triunghiulara!’);25: end26: if A[ j,i ]∼=027: error(’Matricea are elemente nenule sub diagonala care nu se afla pe prima coloana!’);28: end29: end30: end31:32: n1=0;33: for i=1:n34: n1=n1+abs(A(i,1));35: end36: for j=2:n37: if abs(A(j,j))>n138: n1=abs(A(j,j));39: end40: end41: ni=abs(A(1,1));42: for i=2:n43: sigma=abs(A(i,1))+abs(A(i,i));44: if sigma>ni45: ni=sigma;46: end47: end


10 SEMINAR 6. EXAMINARE48: nF=A(1,1)ˆ2;49: for i=2:n50: nF=nF+A(i,1)ˆ2+A(i,i)ˆ2;51: end52: nF=sqrt(nF);1: function [ x ]=rez sis(A,b)2: %------------------------------------------------------------------------3: % Seminar 6 Problema 1 punctul b4: % Functia calculeaza eficient solutia sistemului Ax=b un<strong>de</strong> A este o matrice5: % patratica cu elemente nenule numai pe diagonala si pe prima coloana.6: % Apelul: [ x ] = rez sis(A,b)7: %8: % Valentin Buta, mai, 20069: %-------------------------------------------------------------------------10:11: [ n,m ]=size(A);12: if n∼=m13: error(’Matricea nu este patratica!’);14: end15: if min(size(b))∼=116: error(’b nu este vector!’);17: end18: if n∼=max(size(b))19: error(’Vectorul b nu are dimensiunile corecte!’);20: end21: for j=2:n22: if A(1,j)∼=023: error(’Matricea nu este inferior triunghiulara!’);24: end25: end26: for i=2:n27: for j=i+1:n28: if A(i,j)∼=029: error(’Matricea nu este inferior triunghiulara!’);30: end31: if A(j,i)∼=032: error(’Matricea are elemente nenule sub diagonala care nu se afla pe prima coloana!’);33: end34: end35: end36:37: x(1)=b(1)/A(1,1);38: for i=2:n39: x(i)=(b(i)-A(i,1)*x(1))/A(i,i);40: end1: function [ X ]=invers1(A)


6.6. ANEXĂ 112: %-------------------------------------------------------------------------3: % Seminar 6 Problema 1 punctul c. Solutia 1.4: % Functia calculeaza eficient inversa matricei A un<strong>de</strong> A este o matrice5: % patratica cu elemente nenule numai pe diagonala si pe prima coloana.6: % Inversa matricei A va fi notata cu X.7: % Apelul: [ X ] = invers(A)8: %9: % Valentin Buta, mai, 200610: %-------------------------------------------------------------------------11:12: [ n,m ]=size(A);13: if n∼=m14: error(’Matricea nu este patratica!’);15: end16: for j=2:n17: if A(1,j)∼=018: error(’Matricea nu este inferior triunghiulara!’);19: end20: end21: for i=2:n22: for j=i+1:n23: if A(i,j)∼=024: error(’Matricea nu este inferior triunghiulara!’);25: end26: if A(j,i)∼=027: error(’Matricea are elemente nenule sub diagonala care nu se afla pe prima coloana!’);28: end29: end30: end31:32: X(1,1)=1/A(1,1);33: for i=2:n34: X(i,1)=-A(i,1)*X(1,1)/A(i,i);35: end36: for j=2:n37: for i=1:n38: X(i,j)=0;39: end40: X(j,j)=1/A(j,j);41: end1: function [ X ]=invers2(A)2: %-------------------------------------------------------------------------3: % Seminar 6 Problema 1 punctul c. Solutia 2.4: % Functia calculeaza eficient inversa matricei A un<strong>de</strong> A este o matrice5: % patratica cu elemente nenule numai pe diagonala si pe prima coloana.6: % Inversa matricei A va fi notata cu X.7: % Apelul: [ X ] = invers(A)8: %9: % Valentin Buta, mai, 2006


12 SEMINAR 6. EXAMINARE10: %-------------------------------------------------------------------------11:12: [ n,m ]=size(A);13: if n∼=m14: error(’Matricea nu este patratica!’);15: end16: for j=2:n17: if A(1,j)∼=018: error(’Matricea nu este inferior triunghiulara!’);19: end20: end21: for i=2:n22: for j=i+1:n23: if A(i,j)∼=024: error(’Matricea nu este inferior triunghiulara!’);25: end26: if A(j,i)∼=027: error(’Matricea are elemente nenule sub diagonala care nu se afla pe prima coloana!’);28: end29: end30: end31:32: X(1,1)=1/A(1,1);33: for i=2:n34: X(i,1)=-A(i,1)/(A(1,1)*A(i,i));35: end36: for j=2:n37: for i=1:n38: X(i,j)=0;39: end40: X(j,j)=1/A(j,j);41: end1: function [ L,U ]=Crout MH(H)2: %-------------------------------------------------------------------------3: % Seminar 6 Problema 2 punctul a.4: % Algoritmul calculeaza factorizarea Crout fara pivotare in cazul unei5: % matrice patratice inferior Hessenberg cu toate submatricele li<strong>de</strong>r principal6: % nesingulare.7: % Apelul: [ U,L ] = Crout MH(H)8: %9: % Valentin Buta, mai, 200610: %-------------------------------------------------------------------------11:12: [ n,m ]=size(H);13: if n∼=m14: error(’Matricea nu este patratica!’);15: end16: for i=1:n-217: for j=i+2:n


6.6. ANEXĂ 1318: if H(i,j)∼=019: error(’Matricea nu este inferior Hessenberg!’);20: end21: end22: end23: for i=1:n24: for j=1:n25: L(i,j)=0;26: U(i,j)=0;27: end28: U(i,i)=1;29: end30: for i=1:n31: L(i,1)=H(i,1);32: end33: U(1,2)=H(2,1)/L(1,1);34: for k=2:n35: for i=k:n36: L(i,k)=H(i,k)-L(i,k-1)*U(k-1,k);37: end38: if k∼=n39: U(k,k+1)=H(k,k+1)/L(k,k);40: end41: end1: function [ B ]=U1xA(U1,A)2: %-------------------------------------------------------------------------3: % Seminar 6 Problema 3 punctul a.4: % Algoritmul calculeaza eficient produsul a doua matrice U1 si A, un<strong>de</strong> U15: % este un <strong>de</strong> reflector elementar <strong>de</strong>finit <strong>de</strong> vectorul u1,6: % iar A este o matrice m*n oarecare.7: % Apelul: [ B ]=U1xA(U1,A)8: %9: % Valentin Buta, mai, 200610: %-------------------------------------------------------------------------11:12: [ m,n ]=size(A);13: beta1=0;14: for i=1:m15: for j=1:n16: B(i,j)=0;17: end18: end19: for i=1:m20: beta1=beta1+U1(i,1)*U1(i,1);21: end22: beta1=beta1/2;23: for j=1:n24: tau=0;25: for i=1:m


14 SEMINAR 6. EXAMINARE26: tau=tau+U1(i,1)*A(i,j);27: end28: tau=tau/beta1;29: for i=1:m30: B(i,j)=A(i,j)-tau*U1(i,1);31: end32: end1: function [ x ]=Sis U(U1,b)2: %-------------------------------------------------------------------------3: % Seminar 6 Problema 3 punctul b.4: % Algoritmul calculeaza eficient solutia sistemului U1 * x = b, un<strong>de</strong> U15: % este o matrice patratica m*m <strong>de</strong> reflectori elementari, iar b este un6: % vector dat.7: % Apelul: [ x ]=Sis U(U1,b)8: %9: % Valentin Buta, mai, 200610: %-------------------------------------------------------------------------11:12: [ m,n ]=size(U1);13: if min(size(b))∼=114: error(’b nu este vector!’);15: end16: if m∼=max(size(b))17: error(’Vectorul b nu are dimensiunile corecte!’);18: end19: beta1=0;20: tau=0;21: for i=1:m22: beta1=beta1+U1(i,1)ˆ2;23: tau=tau+U1(i,1)*b(i);24: end25: beta1=beta1/2;26: tau=tau/beta1;27: for i=1:m28: x(i)=b(i)-tau*U1(i,1);29: end

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!