2.8 Aplicação de Métodos Ortogonais ao Problema de Mínimos Quadrados 2.8.1 Introdução Na solução de problemas matriciais é importante utilizar transformações que preservem a solução do problema e ao mesmo tempo sejam útil na simplificação do problema. Nesta seção será visto a utilização de transformações ortogonais no problema de mínimos quadrados. Essas transformações tem a qualidade de não interferir na solução do problema e ao mesmo tempo simplificar a solução. Como mostrou-se na seção anterior, a solução do problema de mínimos quadrados, por meio da equação normal, pode apresentar dificuldades de solução por problemas de condicionamento numérico. A utilização de uma transformação que preserve a solução do problema é uma ferramenta que pode viabilizar a solução do problema de mínimos quadrados. 2.8.2 Matrizes Ortogonais Uma matriz real P é ortogonal, se satisfizer a seguinte relação: P T P PP T I A equação P T P I nos mostra que as colunas da matriz P formam um conjunto de vetores ortonormais. Do mesmo modo, PPT I nos mostra que as linhas da matriz P também formam um conjunto de vetores ortonormais. Propriedades: 1 – Se P é uma matriz ortogonal, então det( P) 1 . 2 – Se P e Q são matrizes ortogonais, então o produto PQ também é ortogonal. 3 – Se P é uma matriz ortogonal, então para x, y , tem-se: ( P x, P y) ( P x)T ( P y) x T y ( x, y) (preserva ângulo entre x e y ) P x x (preserva a magnitude de x ) P 1 4 – Se P e Q são matrizes ortogonais e A é uma matriz qualquer, então: PA AQ A 1 Esta última propriedade é que torna o uso de matrizes e transformações ortogonais atraentes do ponto de vista numérico, pois mostra que matrizes ortogonais não podem criar e nem eliminar números pequenos ou grandes durante operações numéricas. 2.8.3 Aplicação de Matrizes Ortogonais à Solução de Problemas de Mínimos Quadrados Como foi visto, na solução do problema de mínimos quadrados se minimiza a função custo: Min J (xˆ ) xˆ Onde: 2 J (xˆ ) z H xˆ 2 Expandindo a expressão, tem-se: J (xˆ) (z H xˆ)T (z H xˆ) Seja Q uma matriz ortogonal, portanto, é possível a sequência: J (xˆ) (z H xˆ)T QT Q (z H xˆ) J (xˆ ) (Qz QH xˆ )T (Qz QH xˆ ) 2 J (xˆ ) Q z QH xˆ 2 Suponha que Q seja escolhida de tal forma que: U Range de H (dim ensão n) QH 0 Subespaço Nulo (dim ensão m n) Sendo U triângular superior. Além disso: c Range de H (dim ensão n) Qz d Subespaço Nulo (dim ensão m n) 2 Tem-se: 2 2 c U xˆ c U xˆ J (xˆ ) d 0 2 d 2 O vetor x̂ que minimiza J (xˆ) está no Range de H, e portanto é obtido por: U xˆ c e a soma dos quadrados dos resíduos é dada por: 2 J (xˆ ) d 2 Como foi visto, este resíduo está no subespaço nulo (complemento ortogonal). Existem muitas formas para a obtenção da matriz Q, sendo as principais: Transformações de Givens Transformações de Householder Transformações de Gran-Schmidt 2.8.4 Fatoração QR Utilizando Tranformações de Givens Seja a matriz A mn , utilizando transformações ortoganais, chega-se a decomposição: A QR Onde: Q mm é ortogonal. R mn é triangular superior. Supondo: c s Q s c Como Q é ortogonal: c s c s 1 0 QT Q s c s c 0 1 Portanto: c2 s2 1 Determinação de c e s: 3 Tem-se: A QR a11 a 21 a12 c s r11 a 22 s c 0 r12 r22 Pré-multiplicando esta equação por Q T , chega-se a: c s a11 a12 r11 r12 s c a 21 a 22 0 r22 Desta expressão, tem-se uma nova equação: sa11 ca21 0 Tem-se o sistema de equações: sa11 ca 21 0 c2 s2 1 Resultando em: Se a 21 0 c a11 s e s a 21 Se a11 0 c a 21 s e s a11 a 21 2 2 a11 a 21 a11 2 2 a11 a 21 Os elementos de R são determinados por: r11 0 r12 ca11 sa 21 r22 0 Algoritmo c s a r s c b 0 Function [c,s]=givens(a,b) if b 0 4 ca12 sa 22 sa12 ca 22 c 1; s 0; else if b a s a ; b 1 1 2 ; c s else b ; a 1 c ; 2 1 s c end end Exemplo: a11 a A 21 a31 a 41 a12 a 22 a32 a 42 a13 a 23 a33 a 43 a (1) 11 T A (1) Q21 A 0 a31 a 41 c a11 2 2 a11 a 21 s (1) a12 (1) a 22 a 32 a 42 (1) a13 c s s c (1) a 23 T onde: Q 21 0 0 a33 0 0 a 43 a 21 c a11 Mudam os elementos das linhas 1 e 2 da matriz A: 5 0 0 1 0 0 0 0 1 (1) a11 ca11 sa 21 (1) a12 ca12 sa 22 (1) a13 ca13 sa 23 (1) a 22 sa12 ca 22 (1) a 23 sa13 ca 23 a ( 2) 11 0 T A ( 2) Q21 A 0 a 41 c a11 s 2 2 a11 a31 ( 2) a12 (1) a 22 ( 2) a 32 a 42 ( 2) a13 c 0 (1) a 23 T onde: Q21 ( 2) s a 33 0 a 43 a31 c a11 Mudam os elementos das linhas 1 e 3 da matriz A: ( 2) a11 ca11 sa 31 ( 2) a12 ca12 sa 32 ( 2) a13 ca13 sa 33 ( 2) a32 sa12 ca32 ( 2) a33 sa13 ca33 O processo continua até a triangularização: a (3) 11 0 A ( 6) 0 0 (3) a12 ( 5) a 22 0 0 (3) a13 ( 5) a 23 ( 6) a 33 0 T T T T T T R Q43 Q42 Q32 Q41 Q31 Q21 A A Q21 Q31 Q41 Q32 Q42 Q43 R QR Exemplo Numérico: 6 0 s 1 0 0 c 0 0 0 0 0 1 2 3 A 5 4 8 9 A= 2 5 8 3 4 9 Qtransp = -0.3714 -0.9285 0 0.9285 -0.3714 0 0 0 1.0000 A= -5.3852 -4.8281 0.0000 1.2999 8.0000 9.0000 Qtransp = 0.5584 0 -0.8296 0 1.0000 0 0.8296 0 0.5584 A= -9.6437 -10.1621 0.0000 1.2999 0 1.0206 Qtransp = 1.0000 0 0 0 0.7865 0.6175 0 -0.6175 0.7865 7 A= -9.6437 -10.1621 0.0000 1.6526 0.0000 0 Q= -0.2074 0.5400 -0.8157 -0.5185 -0.7678 -0.3765 -0.8296 0.3448 0.4392 Programa de Decomposição QR Utilizando Transformadas de Givens function givens m=input('Entre com o Número de Linhas: '); n=input('Entre com o Número de Colunas: '); load datagivens; % A matriz de coeficientes A deve se salva pela tela no arquivo % datagivens,por meio do comando "save datagivens A . disp('Matriz de Coeficientes') A Q=eye(m,m); for i=1:n-1 for j=i+1:m if A(j,i)~=0 [c,s]=givens(A(i,i),A(j,i)); for l=1:n qq=A(i,l); A(i,l)=c*qq-s*A(j,l); A(j,l)=s*qq+c*A(j,l); end for l=1:m qq1=Q(l,i); qq2=Q(l,j); Q(l,i)=c*qq1-s*qq2; Q(l,j)=s*qq1+c*qq2; end end end end for l=n+1:m if A(l,n)~=0 [c,s]=givens(A(n,n),A(l,n)); for k=1:n qq=A(n,k); A(n,k)=c*A(n,k)-s*A(l,k); A(l,k)=s*qq+c*A(l,k); end for k=1:m 8 qq1=Q(k,n); qq2=Q(k,l); Q(k,n)=c*qq1-s*qq2; Q(k,l)=s*qq1+c*qq2; end end end disp('Matriz Triangular Superior na Dimensão do Range e Zeros na Dimensão do Subespaço Zero') A disp('Matriz de Coeficientes') Q function [c,s]=givens(a,b) if b==0 c=1; s=0; else if abs(b)>abs(a) t=-a/b; s=1/sqrt(1+t^2); c=s*t; else t=-b/a; c=1/sqrt(1+t^2); s=c*t; end end 2.8.5 Solução de Sistemas Lineares Utilizando Decomposição QR Ax b QR x b R x QT b Exemplo: Solucionar o sistema linear utilizando transformações ortogonais e eliminação de Gauss: 10 x1 x 2 11 3x1 0.3x 2 3.3 Observe que a matriz de coeficientes é singular. A= 10.0000 1.0000 3.0000 0.3000 9 Vetor Independente b= 11.0000 3.3000 Warning: Divide by zero. > In C:\MATLABR11\work\ortosystem.m at line 32 Matriz Triangularizada por Meio de Transformações de Givens A= 10.4403 1.0440 0 0 Vetor Solução b= Inf -Inf Solução Obtida pelo Comando x=A\b Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 4.629787e-018. > In C:\MATLABR11\work\ortosystem.m at line 40 x= -0.5000 16.0000 Programa para Solução de Sistemas Lineares Utilizando Transformadas de Givens function givens n=input('Entre com Dimensão do Sistema: '); load datasystem; % A matriz de coeficientes A e vetor independente b % devem ser salvos pela tela no arquivo datasystem, % por meio do comando "save datasystem A b. disp('Matriz de Coeficientes') A disp('Vetor Independente') b for i=1:n-1 for j=i+1:n 10 if A(j,i)~=0 [c,s]=givens(A(i,i),A(j,i)); for l=1:n qq=A(i,l); A(i,l)=c*qq-s*A(j,l); A(j,l)=s*qq+c*A(j,l); end b1=b(i); b2=b(j); b(i)=c*b1-s*b2; b(j)=s*b1+c*b2; end end end for j=n:-1:1 soma=0; for k=j+1:n soma=soma+A(j,k)*b(k); end b(j)=(1/A(j,j))*(b(j)-soma); end disp('Matriz Triangularizada por Meio de Transformações de Givens') A disp('Vetor Solução') b load datasystem disp('Solução Obtida pelo Comando x=A\b') x=A\b function [c,s]=givens(a,b) if b==0 c=1; s=0; else if abs(b)>abs(a) t=-a/b; s=1/sqrt(1+t^2); c=s*t; else t=-b/a; c=1/sqrt(1+t^2); s=c*t; end end 11