Processo de Gram-Schmidt

Os dois primeiros passos de um processo Gram–Schmidt

Em matemática e análise numérica, o processo de Gram-Schmidt é um método para ortonormalização de um conjunto de vetores em um espaço com produto interno, normalmente o espaço euclidiano Rn. O processo de Gram–Schmidt recebe um conjunto finito, linearmente independente de vetores S = {v1, …, vn} e retorna um conjunto ortonormal S' = {u1, …, un} que gera o mesmo subespaço S inicial.

O método leva o nome de Jørgen Pedersen Gram e Erhard Schmidt, mas pode ser encontrado antes nos trabalhos de Laplace e Cauchy. Em teoria de decomposição do grupo de Lie é generalizado pela decomposição de Iwasawa.[1]

A aplicação do processo de Gram-Schmidt aos vetores de uma coluna matricial completa de classificação produz a fatoração QR (decomposta numa matriz ortogonal e uma matriz triangular).

O processo de Gram-Schmidt

O processo de Gram-Schmidt modificado sendo executado em três vetores linearmente independentes, não-ortogonais de base R3. Clique na imagem para obter mais detalhes.

Define-se o operador projeção por:

p r o j u ( v ) = v , u u , u u , {\displaystyle \mathrm {proj} _{\mathbf {u} }\,(\mathbf {v} )={\langle \mathbf {v} ,\mathbf {u} \rangle \over \langle \mathbf {u} ,\mathbf {u} \rangle }\mathbf {u} ,}

no qual v , u {\displaystyle \langle \mathbf {v} ,\mathbf {u} \rangle } denota o produto interno dos vetores v e u. Esse operador projeta o vetor v ortogonalmente sobre a linha gerada pelo vetor u. Se u=0, define-se p r o j 0 ( v ) := 0 {\displaystyle \mathrm {proj} _{0}\,(\mathbf {v} ):=0} . i.e., o mapa projetado p r o j 0 {\displaystyle \mathrm {proj} _{0}} é o mapa zero, enviando cada vetor ao vetor zero.

O processo de Gram-Schmidt funciona então como denotado abaixo:

u 1 = v 1 , e 1 = u 1 u 1 u 2 = v 2 p r o j u 1 ( v 2 ) , e 2 = u 2 u 2 u 3 = v 3 p r o j u 1 ( v 3 ) p r o j u 2 ( v 3 ) , e 3 = u 3 u 3 u 4 = v 4 p r o j u 1 ( v 4 ) p r o j u 2 ( v 4 ) p r o j u 3 ( v 4 ) , e 4 = u 4 u 4         u k = v k j = 1 k 1 p r o j u j ( v k ) , e k = u k u k . {\displaystyle {\begin{aligned}\mathbf {u} _{1}&=\mathbf {v} _{1},&\mathbf {e} _{1}&={\mathbf {u} _{1} \over \|\mathbf {u} _{1}\|}\\\mathbf {u} _{2}&=\mathbf {v} _{2}-\mathrm {proj} _{\mathbf {u} _{1}}\,(\mathbf {v} _{2}),&\mathbf {e} _{2}&={\mathbf {u} _{2} \over \|\mathbf {u} _{2}\|}\\\mathbf {u} _{3}&=\mathbf {v} _{3}-\mathrm {proj} _{\mathbf {u} _{1}}\,(\mathbf {v} _{3})-\mathrm {proj} _{\mathbf {u} _{2}}\,(\mathbf {v} _{3}),&\mathbf {e} _{3}&={\mathbf {u} _{3} \over \|\mathbf {u} _{3}\|}\\\mathbf {u} _{4}&=\mathbf {v} _{4}-\mathrm {proj} _{\mathbf {u} _{1}}\,(\mathbf {v} _{4})-\mathrm {proj} _{\mathbf {u} _{2}}\,(\mathbf {v} _{4})-\mathrm {proj} _{\mathbf {u} _{3}}\,(\mathbf {v} _{4}),&\mathbf {e} _{4}&={\mathbf {u} _{4} \over \|\mathbf {u} _{4}\|}\\&{}\ \ \vdots &&{}\ \ \vdots \\\mathbf {u} _{k}&=\mathbf {v} _{k}-\sum _{j=1}^{k-1}\mathrm {proj} _{\mathbf {u} _{j}}\,(\mathbf {v} _{k}),&\mathbf {e} _{k}&={\mathbf {u} _{k} \over \|\mathbf {u} _{k}\|}.\end{aligned}}}

A sequência u1, ..., uk é o sistema de vetores ortogonais requerido, e o vetores normalizados e1, ..., ek formam um conjunto ortonormal. O cálculo da sequência u1, ..., uk é conhecido como ortogonalização Gram–Schmidt,enquanto o cálculo da sequência e1, ..., ek é conhecido como ortonormalização Gram–Schmidt, à medida que os vetores estão normalizados.

Para verificar se essas fórmulas produzem uma sequência ortogonal, primeiro calcule ‹ u1,u2 ›substituindo a fórmula acima por u2: obtém-se zero. Então proceda para o cálculo de ‹ u1,u3 › novamente substituindo a fórmula por u3: obtém-se mais uma vez zero. A prova geral procede por indução matemática.

Geometricamente, esse método se segue como: para calcular ui, projeta-se vi ortogonalmente sobre o subespaço U gerado por u1, ..., ui−1, que é o mesmo que o subespaço gerado por v1, ..., vi−1. O vetor ui então é definido como a diferença entre vi e essa projeção, garantido como ortogonal para todos os vetores no subespaço U.

O processo de Gram-Schmidt também se aplica a uma sequência de conjunto contável linear e independente {vi}i. O resultado é uma sequência ortogonal (ou ortonormal) {ui}i tal para número natural n: a extensão de algébrica v1, ..., vn é a mesma de que u1, ..., un.

Se o processo de Gram-Schmidt é aplicado a uma sequência linearmente dependente, ele emite 0 vetor em ith etapa, assumindo que vi é a combinação linear de v1, ..., vi−1. Se uma base ortonormal está a ser produzida, então o algoritmo deve testar para zero vetores na saída (output) e descartá-los porque nenhum múltiplo de um vetor zero pode ter um comprimento de valor 1. O número de vetores de saída dados pelo algoritmo será então a dimensão do espaço gerado pelos inputs originais.

Uma variante do processo de Gram-Schmidt utilizando indução transfinita aplicada a uma sequência infinita de vetores (possivelmente incontável) ( v α ) α < λ {\displaystyle (v_{\alpha })_{\alpha <\lambda }} produz um conjunto de vetores ortonormais ( u α ) α < κ {\displaystyle (u_{\alpha })_{\alpha <\kappa }} com κ λ {\displaystyle \kappa \leq \lambda } de tal modo que qualquer α λ {\displaystyle \alpha \leq \lambda } , o complemento do espaço de { u β : β < min ( α , κ ) } {\displaystyle \lbrace u_{\beta }:\beta <\min(\alpha ,\kappa )\rbrace } é o mesmo que { v β : β < α } {\displaystyle \lbrace v_{\beta }:\beta <\alpha \rbrace } . Particularmente, quando aplicado a uma base (algébrica) de um espaço de Hilbert (ou, mais geralmente, uma base de qualquer subespaço denso), produz-se uma base ortonormal (analítica-funcional). Note-se que, no caso geral, muitas vezes a desigualdade estrita κ < λ {\displaystyle \kappa <\lambda } preserva, mesmo que o conjunto inicial for linearmente independente, e o espaço de ( u α ) α < κ {\displaystyle (u_{\alpha })_{\alpha <\kappa }} não precisa ser um subespaço do espaço de ( v α ) α < λ {\displaystyle (v_{\alpha })_{\alpha <\lambda }} (pelo contrário, é um subespaço de sua conclusão).

Exemplo

Considerado o seguinte conjunto de vetores em R2 (com o produto interno convencional)

S = { v 1 = ( 3 1 ) , v 2 = ( 2 2 ) } . {\displaystyle S=\left\lbrace \mathbf {v} _{1}={\begin{pmatrix}3\\1\end{pmatrix}},\mathbf {v} _{2}={\begin{pmatrix}2\\2\end{pmatrix}}\right\rbrace .}

Então, proceda Gram–Schmidt, a fim de obter um conjunto ortogonal de vetores:

u 1 = v 1 = ( 3 1 ) {\displaystyle \mathbf {u} _{1}=\mathbf {v} _{1}={\begin{pmatrix}3\\1\end{pmatrix}}}
u 2 = v 2 p r o j u 1 ( v 2 ) = ( 2 2 ) p r o j ( 3 1 ) ( ( 2 2 ) ) = ( 2 2 ) ( 4 / 5 ) ( 3 1 ) = ( 2 / 5 6 / 5 ) . {\displaystyle \mathbf {u} _{2}=\mathbf {v} _{2}-\mathrm {proj} _{\mathbf {u} _{1}}\,(\mathbf {v} _{2})={\begin{pmatrix}2\\2\end{pmatrix}}-\mathrm {proj} _{({3 \atop 1})}\,({{\begin{pmatrix}2\\2\end{pmatrix}})}={\begin{pmatrix}2\\2\end{pmatrix}}-{\begin{pmatrix}4/5\end{pmatrix}}{\begin{pmatrix}3\\1\end{pmatrix}}={\begin{pmatrix}-2/5\\6/5\end{pmatrix}}.}

Verifica-se que os vetores u1 e u2 são de fato ortogonais:

u 1 , u 2 = ( 3 1 ) , ( 2 / 5 6 / 5 ) = 6 5 + 6 5 = 0 , {\displaystyle \langle \mathbf {u} _{1},\mathbf {u} _{2}\rangle =\left\langle {\begin{pmatrix}3\\1\end{pmatrix}},{\begin{pmatrix}-2/5\\6/5\end{pmatrix}}\right\rangle =-{\frac {6}{5}}+{\frac {6}{5}}=0,}

notando que, se o produto escalar de dois vetores for 0 , então eles serão ortogonais.

Para vetores diferentes de zero, pode-se normalizar os vetores dividindo seu tamanhos como mostrado acima: e 1 = 1 10 ( 3 1 ) {\displaystyle \mathbf {e} _{1}={1 \over {\sqrt {10}}}{\begin{pmatrix}3\\1\end{pmatrix}}}

e 2 = 1 40 25 ( 2 / 5 6 / 5 ) = 1 10 ( 1 3 ) . {\displaystyle \mathbf {e} _{2}={1 \over {\sqrt {40 \over 25}}}{\begin{pmatrix}-2/5\\6/5\end{pmatrix}}={1 \over {\sqrt {10}}}{\begin{pmatrix}-1\\3\end{pmatrix}}.}

Estabilidade numérica

Quando esse processo é executado em um computador, os vetores u k {\displaystyle \mathbf {u} _{k}} muitas vezes não são muito ortogonais, devido a erros de arredondamento. Para o processo de Gram-Schmidt, tal como descrito acima, (podendo ser referenciado eventualmente como "processo de Gram-Schmidt clássico") tal perda de ortogonalidade é algo particularmente ruim; Portanto, diz-se que o processo (clássico) de Gram-Schmidt é numericamente instável.

O processo de Gram-Schmidt pode ser estabilizado por meio de uma pequena modificação; tal versão do processo é por vezes referida como processo Gram-Schmidt modificado. Tal abordagem dá o mesmo resultado que a fórmula original numa aritmética exata e introduz erros menores na aritmética de finita-precisão. Ao invés de calcular o vetor uk como

u k = v k p r o j u 1 ( v k ) p r o j u 2 ( v k ) p r o j u k 1 ( v k ) , {\displaystyle \mathbf {u} _{k}=\mathbf {v} _{k}-\mathrm {proj} _{\mathbf {u} _{1}}\,(\mathbf {v} _{k})-\mathrm {proj} _{\mathbf {u} _{2}}\,(\mathbf {v} _{k})-\cdots -\mathrm {proj} _{\mathbf {u} _{k-1}}\,(\mathbf {v} _{k}),}

ele é calculado como

u k ( 1 ) = v k p r o j u 1 ( v k ) , u k ( 2 ) = u k ( 1 ) p r o j u 2 ( u k ( 1 ) ) , u k ( k 2 ) = u k ( k 3 ) p r o j u k 2 ( u k ( k 3 ) ) , u k ( k 1 ) = u k ( k 2 ) p r o j u k 1 ( u k ( k 2 ) ) . {\displaystyle {\begin{aligned}\mathbf {u} _{k}^{(1)}&=\mathbf {v} _{k}-\mathrm {proj} _{\mathbf {u} _{1}}\,(\mathbf {v} _{k}),\\\mathbf {u} _{k}^{(2)}&=\mathbf {u} _{k}^{(1)}-\mathrm {proj} _{\mathbf {u} _{2}}\,(\mathbf {u} _{k}^{(1)}),\\&\,\,\,\vdots \\\mathbf {u} _{k}^{(k-2)}&=\mathbf {u} _{k}^{(k-3)}-\mathrm {proj} _{\mathbf {u} _{k-2}}\,(\mathbf {u} _{k}^{(k-3)}),\\\mathbf {u} _{k}^{(k-1)}&=\mathbf {u} _{k}^{(k-2)}-\mathrm {proj} _{\mathbf {u} _{k-1}}\,(\mathbf {u} _{k}^{(k-2)}).\end{aligned}}}

Cada passo encontra um vetor u k ( i ) {\displaystyle \mathbf {u} _{k}^{(i)}} ortogonal a u k ( i 1 ) {\displaystyle \mathbf {u} _{k}^{(i-1)}} . Assim u k ( i ) {\displaystyle \mathbf {u} _{k}^{(i)}} também é ortogonalizado contra quaisquer erros introduzidos no cálculo de u k ( i 1 ) {\displaystyle \mathbf {u} _{k}^{(i-1)}} .

Este método é utilizado na animação anterior, quando o vetor intermediário v'3 é usado na ortogonalização do vetor azul v3.

Algoritmo

O algoritmo a seguir implementa a ortonormalização Gram-Schmidt estabilizada. Os vetores v1, ..., vk são substituídos por vetores ortonormais que abrangem o mesmo subespaço.

O custo desse algoritmo é assintoticamente 2nk2 operações de ponto flutuante, nas quais n é a dimensionalidade dos vetores (Golub & Van Loan 1996, §5.2.8).

Fórmula determinante

O resultado do processo de Gram-Schmidt pode ser expresso em uma fórmula não-recursiva usando determinantes.

e j = 1 D j 1 D j | v 1 , v 1 v 2 , v 1 v j , v 1 v 1 , v 2 v 2 , v 2 v j , v 2 v 1 , v j 1 v 2 , v j 1 v j , v j 1 v 1 v 2 v j | {\displaystyle \mathbf {e} _{j}={\frac {1}{\sqrt {D_{j-1}D_{j}}}}{\begin{vmatrix}\langle \mathbf {v} _{1},\mathbf {v} _{1}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{1}\rangle &\dots &\langle \mathbf {v} _{j},\mathbf {v} _{1}\rangle \\\langle \mathbf {v} _{1},\mathbf {v} _{2}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{2}\rangle &\dots &\langle \mathbf {v} _{j},\mathbf {v} _{2}\rangle \\\vdots &\vdots &\ddots &\vdots \\\langle \mathbf {v} _{1},\mathbf {v} _{j-1}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{j-1}\rangle &\dots &\langle \mathbf {v} _{j},\mathbf {v} _{j-1}\rangle \\\mathbf {v} _{1}&\mathbf {v} _{2}&\dots &\mathbf {v} _{j}\end{vmatrix}}}
u j = 1 D j 1 | v 1 , v 1 v 2 , v 1 v j , v 1 v 1 , v 2 v 2 , v 2 v j , v 2 v 1 , v j 1 v 2 , v j 1 v j , v j 1 v 1 v 2 v j | {\displaystyle \mathbf {u} _{j}={\frac {1}{D_{j-1}}}{\begin{vmatrix}\langle \mathbf {v} _{1},\mathbf {v} _{1}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{1}\rangle &\dots &\langle \mathbf {v} _{j},\mathbf {v} _{1}\rangle \\\langle \mathbf {v} _{1},\mathbf {v} _{2}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{2}\rangle &\dots &\langle \mathbf {v} _{j},\mathbf {v} _{2}\rangle \\\vdots &\vdots &\ddots &\vdots \\\langle \mathbf {v} _{1},\mathbf {v} _{j-1}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{j-1}\rangle &\dots &\langle \mathbf {v} _{j},\mathbf {v} _{j-1}\rangle \\\mathbf {v} _{1}&\mathbf {v} _{2}&\dots &\mathbf {v} _{j}\end{vmatrix}}}

na qual D 0=1 e, para j ≥ 1, D j é o determinante Gram

D j = | v 1 , v 1 v 2 , v 1 v j , v 1 v 1 , v 2 v 2 , v 2 v j , v 2 v 1 , v j v 2 , v j v j , v j | . {\displaystyle D_{j}={\begin{vmatrix}\langle \mathbf {v} _{1},\mathbf {v} _{1}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{1}\rangle &\dots &\langle \mathbf {v} _{j},\mathbf {v} _{1}\rangle \\\langle \mathbf {v} _{1},\mathbf {v} _{2}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{2}\rangle &\dots &\langle \mathbf {v} _{j},\mathbf {v} _{2}\rangle \\\vdots &\vdots &\ddots &\vdots \\\langle \mathbf {v} _{1},\mathbf {v} _{j}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{j}\rangle &\dots &\langle \mathbf {v} _{j},\mathbf {v} _{j}\rangle \end{vmatrix}}.}

Note que a expressão para uk é um determinante "formal", i.e. a matriz contém ambos os escalares e vetores; o significado dessa expressão é definido como sendo o resultado de um cofator de expansão ao longo da linha de vetores.

A fórmula determinante de Gram-Schmidt é computacionalmente mais lenta (exponencialmente mais lenta) do que os algoritmos recursivos descritos acima; é principalmente de interesse teórico.

Alternativas

Outros algoritmos de ortogonalização utilizam a transformação de Householder ou a rotação de Givens. Os algoritmos que utilizam a transformação de Householder são mais estáveis que o processo de Gram–Schmidt estabilizado. Por outro lado, o referido processo produz o j {\displaystyle j} th vetor ortogonalizado baseado na interação j {\displaystyle j} th, enquanto a ortogonalização utilizando a reflexão Householder produz todos os vetores apenas no final. Isso torno o processo de Gram–Schmidt aplicável ao método iterativo assim como a iteração Arnoldi.

Outra alternativa é motivada ainda pelo uso da decomposição de Cholesky para invertendo a matriz das equações normais de mínimos quadrados lineares. Tome-se V {\displaystyle \mathbf {V} } a estar num posto coluna cheia de uma matriz, cujas colunas precisam ser ortogonalizadas. A matriz V V {\displaystyle \mathbf {V} ^{*}\mathbf {V} } é uma matriz transposta conjugada e definida positiva, de tal modo que possa ser escrita V V = L L , {\displaystyle \mathbf {V} ^{*}\mathbf {V} =\mathbf {L} \mathbf {L} ^{*},} utilizando a decomposição de Cholesky. A matriz triangular inferior L {\displaystyle \mathbf {L} } com entradas diagonais estritamente positivas é inversa. As colunas da matriz U = V ( L 1 ) {\displaystyle \mathbf {U} =\mathbf {V} (\mathbf {L} ^{-1})^{*}} são ortonormais e abrangem o mesmo subespaço como as colunas da matriz original V {\displaystyle \mathbf {V} } . O uso explícito do conteúdo V V {\displaystyle \mathbf {V} ^{*}\mathbf {V} } torna o algoritmo instável, espacialmente se o produto do número de condicionamento for elevado. No entanto, esse algoritmo é utilizado na prática e implementado em alguns pacotes de software por conta de sua alta eficiência e simplicidade.

Em mecânica quântica existem vários esquemas de ortogonalização com características mais adequadas para certas aplicações do que os de Gram-Schmidt. No entanto, o Gram-Schmidt continua a ser um algoritmo popular e eficaz, mesmo para os maiores cálculos de estrutura eletrônica.[2]

Referências

  1. Cheney, Ward; Kincaid, David (2009). Linear Algebra: Theory and Applications. Sudbury, Ma: Jones and Bartlett. pp. 544, 558. ISBN 978-0-7637-5020-6 
  2. Hasegawa, et al., First-principles calculations of electron states of a silicon nanowire with 100,000 atoms on the K computer. 2011

Leituras adicionais

  • Bau III, David; Trefethen, Lloyd N. (1997), Numerical linear algebra, ISBN 978-0-89871-361-9, Philadelphia: Society for Industrial and Applied Mathematics .
  • Golub, Gene H.; Van Loan, Charles F. (1996), Matrix Computations, ISBN 978-0-8018-5414-9 3rd ed. , Johns Hopkins .
  • Greub, Werner (1975), Linear Algebra 4th ed. , Springer .
  • Soliverez, C. E.; Gagliano, E. (1985), «Orthonormalization on the plane: a geometric approach» (PDF), Mex. J. Phys., 31 (4): 743-758 .

Ligações externas

  • Portal da matemática
  • Hazewinkel, Michiel, ed. (2001), «Orthogonalization», Enciclopédia de Matemática, ISBN 978-1-55608-010-4 (em inglês), Springer 
  • Harvey Mudd College Math Tutorial on the Gram-Schmidt algorithm
  • Earliest known uses of some of the words of mathematics: G The entry "Gram-Schmidt orthogonalization" has some information and references on the origins of the method.
  • Demonstrações: Gram Schmidt process in plane e Gram Schmidt process in space
  • Gram-Schmidt orthogonalization applet
  • NAG Gram–Schmidt orthogonalization of n vectors of order m routine
  • Prova: Raymond Puzio, Keenan Kidwell. "proof of Gram-Schmidt orthogonalization algorithm" (version 8). PlanetMath.org.
  • v
  • d
  • e
Tópicos relacionados com álgebra linear
Conceitos básicos
Matrizes
Álgebra linear numérica