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