Processo de Gram-Schmidt

Fonte: testwiki
Saltar para a navegação Saltar para a pesquisa
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:

proj𝐮(𝐯)=𝐯,𝐮𝐮,𝐮𝐮,

no qual 𝐯,𝐮 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 proj0(𝐯):=0. i.e., o mapa projetado proj0 é o mapa zero, enviando cada vetor ao vetor zero.

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

𝐮1=𝐯1,𝐞1=𝐮1𝐮1𝐮2=𝐯2proj𝐮1(𝐯2),𝐞2=𝐮2𝐮2𝐮3=𝐯3proj𝐮1(𝐯3)proj𝐮2(𝐯3),𝐞3=𝐮3𝐮3𝐮4=𝐯4proj𝐮1(𝐯4)proj𝐮2(𝐯4)proj𝐮3(𝐯4),𝐞4=𝐮4𝐮4    𝐮k=𝐯kj=1k1proj𝐮j(𝐯k),𝐞k=𝐮k𝐮k.

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 Predefinição:Nowrap. 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α)α<λ produz um conjunto de vetores ortonormais (uα)α<κ com κλ de tal modo que qualquer αλ, o complemento do espaço de {uβ:β<min(α,κ)} é o mesmo que {vβ:β<α}. 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 κ<λ preserva, mesmo que o conjunto inicial for linearmente independente, e o espaço de (uα)α<κ não precisa ser um subespaço do espaço de (vα)α<λ (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={𝐯1=(31),𝐯2=(22)}.

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

𝐮1=𝐯1=(31)
𝐮2=𝐯2proj𝐮1(𝐯2)=(22)proj(31)((22))=(22)(4/5)(31)=(2/56/5).

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

𝐮1,𝐮2=(31),(2/56/5)=65+65=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:𝐞1=110(31)

𝐞2=14025(2/56/5)=110(13).

Estabilidade numérica

Quando esse processo é executado em um computador, os vetores 𝐮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

𝐮k=𝐯kproj𝐮1(𝐯k)proj𝐮2(𝐯k)proj𝐮k1(𝐯k),

ele é calculado como

𝐮k(1)=𝐯kproj𝐮1(𝐯k),𝐮k(2)=𝐮k(1)proj𝐮2(𝐮k(1)),𝐮k(k2)=𝐮k(k3)proj𝐮k2(𝐮k(k3)),𝐮k(k1)=𝐮k(k2)proj𝐮k1(𝐮k(k2)).

Cada passo encontra um vetor 𝐮k(i) ortogonal a 𝐮k(i1). Assim 𝐮k(i) também é ortogonalizado contra quaisquer erros introduzidos no cálculo de 𝐮k(i1).

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 Predefinição:Harv.

Fórmula determinante

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

𝐞j=1Dj1Dj|𝐯1,𝐯1𝐯2,𝐯1𝐯j,𝐯1𝐯1,𝐯2𝐯2,𝐯2𝐯j,𝐯2𝐯1,𝐯j1𝐯2,𝐯j1𝐯j,𝐯j1𝐯1𝐯2𝐯j|
𝐮j=1Dj1|𝐯1,𝐯1𝐯2,𝐯1𝐯j,𝐯1𝐯1,𝐯2𝐯2,𝐯2𝐯j,𝐯2𝐯1,𝐯j1𝐯2,𝐯j1𝐯j,𝐯j1𝐯1𝐯2𝐯j|

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

Dj=|𝐯1,𝐯1𝐯2,𝐯1𝐯j,𝐯1𝐯1,𝐯2𝐯2,𝐯2𝐯j,𝐯2𝐯1,𝐯j𝐯2,𝐯j𝐯j,𝐯j|.

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 jth vetor ortogonalizado baseado na interação jth, 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 𝐕 a estar num posto coluna cheia de uma matriz, cujas colunas precisam ser ortogonalizadas. A matriz 𝐕*𝐕 é uma matriz transposta conjugada e definida positiva, de tal modo que possa ser escrita 𝐕*𝐕=𝐋𝐋*, utilizando a decomposição de Cholesky. A matriz triangular inferior 𝐋 com entradas diagonais estritamente positivas é inversa. As colunas da matriz 𝐔=𝐕(𝐋1)* são ortonormais e abrangem o mesmo subespaço como as colunas da matriz original 𝐕. O uso explícito do conteúdo 𝐕*𝐕 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]

Predefinição:Referências

Leituras adicionais

Ligações externas

Predefinição:Portal

Predefinição:Álgebra linear

  1. Predefinição:Citar livro
  2. Hasegawa, et al., First-principles calculations of electron states of a silicon nanowire with 100,000 atoms on the K computer. 2011