Para uma dada matriz Anxn cuja submatrizes principais so n, e
utilizando o seguinte teorema Ax=b, possvel reescrev-la atravs de duas matrizes, uma L que ser triangular inferior com diagonal unitria e uma matriz U que ser triangular superior. Prova: Ax=b Ux=y Ly=b Ax=Ly Ax=LUx A=LU
Ex.: A=|211| |321| |121|
=
L21*U11=1 L21*U12 + U22 = 4 L21= 1
=
1 2 1 4 1 0 L21 1 U11 U12 0 U22 1 2 1 4 1 0 1 1 1 2 0 2 Cdigo no matlab: A=[3 1 2; 4 10 4; 6 5 8]; [z,n]=size(A); U = zeros(n); for k=1:n U(k,k)=1; end L = zeros(n); for k=1:n L(k,k)=1; end p=n; for i=1:n p=p-1; for j=1:p m=i+j; U(m,i) = (A(m,i)/A(i,i))*(-1); L(m,i) = (A(m,i)/A(i,i)); end A=U*A; U = zeros(n); for k=1:n U(k,k)=1; end end
B=L*A
Print da tela: Print do comando LU do Matlab:
Print da comparao entre o algoritmo implementado e a funo do Matlab:
Definio de QR: Se baseando no teorema Ax=b, e dada uma matriz A, possivel escrever tal matriz em duas matrizes Q ortogonal, que utilizar um rotator para se escrita e R que ser triangular superior. Prova: Existe um rotator tal que: Q(transposto)A= r11, onde r11=(a11+a21)(elevado ao quadrado) 0
defina: r12 a12 r22 = Q(transposto)a22
Seja R= r11 r12 0 r22
Portanto temos: Q(transposto)A=R Ax=b Q(transposto)Ax= Q(transposto)b Rx=W ->resoluo por substituio para trs
Decomposio QR Q(transposto)A=R QQ(transposto)=QR IA=QR A=QR
Ex.:
x1=1 x2=1
cos = x1/ (sqrt)(x1 + x2) = 1/(sqrt)2 sen = x2/ (sqrt)(x1 + x2) = 1/(sqrt)2
Q =
Q = 1/(sqrt)2
R = Q(transposto)*A
R = 1/(sqrt)2
1 2 1 3 Cos -sen sen cos 1 -1 1 1 1 1 -1 1 1 2 1 3 R = 1/(sqrt)2
Implementao no Matlab: A = [2 4;6 8]; x1 = 1; x2 = 1; costeta = x1 / (sqrt((x1^2) + (x2^2))); senteta = x2 / (sqrt((x1^2) + (x2^2))); [z,n] = size(A); Q = zeros(n); for i=1:n for k = 1 : z if i==k Q(i,k) = costeta; elseif k>i Q(i,k) = senteta * (-1); else Q(i,k) = senteta; end end end Qt = Q' R = Qt * A B = Q * R
Print da tela no Matlab: 2 5 0 1 Print do comando no Matlab:
Print da comparao entre o algoritmo implementado e a funo do Matlab:
Definio do Mtodo Gauss-Siedel No mtodo de Gauss-Seidel, um sistema de equaes lineares Ax = b escrito de forma equivalente x = Cx + g por separao da diagonal. Seja x(0) uma aproximao inicial, pelo processo iterativo queremos calcular x(1), x(2)...x(k) por:
Portanto, no mtodo de Gauss-Seidel, quando calcularmos xj(k+1) usamos todos os valores de x1(k+1); : : : ; x j-1 (k+1) que j foram calculados e os valores x j+1 (k); : : : ; x(k) n restantes.
Ex.: Resolver o sistema abaixo pelo mtodo de Gauss-Seidel
10 x 1 + 2 x 2 3 x 3 + 2 x 4 = 32 2 x 1 15 x 2 + 3 x 3 2 x 4 = -59 1 x 1 3 x 2 + 20 x 3 + 2 x 4 = -38 2 x 1 + 2 x 2 1 x 3 + 30 x 4 = 160
Isola-se, da mesma maneira, em cada equao, uma varivel.
x 1 = (32 2 x 2 + 3 x 3 2 x 4 )/10 x 2 = (-59 - 2 x 1 3 x 3 + 2 x 4 )/(-15) x 3 = (-38 1 x 1 + 3 x 2 2 x 4 )/20 x 4 = (160 2 x 1 2 x 2 + 1 x 3 )/30
Sendo (0,0,0,0) T o ponto de partida, calcula-se x 1 neste ponto. x 1 = (32 0 + 0 0) / 10 = 3,2 J se usa este valor de x 1 no clculo de x 2 , isto : x 2 = (-59 2 x 3,2 + 0 0)/(-15) = 4,36 x 3 = (-38 3,2 + 3 x 4,36 0)/20 = -1,41 x 4 = (160 2 x 3,2 2 x 4,36 + (-1,41))/30 = 4,78