Google Classroom

Aula 13 · 03/11 (ter) · Módulo 3 · laboratório

Bases ortogonais e processo de Gram-Schmidt

Nesta aula você estuda bases ortonormais, as matrizes com colunas ortonormais, cuja multiplicação preserva comprimentos e produtos internos, e o processo de Gram-Schmidt, que constrói uma base ortonormal a partir de vetores linearmente independentes. Se q1, …, qn formam uma base ortonormal de ℝn, as coordenadas de um vetor b nessa base são os produtos internos q1Tb, …, qnTb, e não é preciso resolver um sistema linear. Na bancada, você aplica o processo passo a passo em ℝ2 e em ℝ3 até a fatoração QR e examina matrizes ortogonais do plano; em ℝn, compara duas versões do processo em ponto flutuante e comprime sinais numa base ortonormal de cossenos.

Modo da bancada

Gram-Schmidt passo a passo

A = QR

A matriz A tem como colunas os vetores de entrada a1, a2 e, em ℝ3, a3. Antes da normalização, o quadro escreve A como o produto da matriz dos vetores ortogonais por uma matriz triangular superior U. Depois dela, escreve A = QR: a matriz Q tem como colunas os vetores ortonormais q1, q2 e, em ℝ3, q3, e a matriz R é triangular superior, com entradas rij = qiTaj para i ≤ j.

Exemplos

Vetores de entrada

Cada coluna da matriz é um vetor de entrada: a primeira é a1, a segunda é a2 e, em ℝ3, a terceira é a3. As entradas podem ser inteiros, frações como 3/2 ou decimais como 0,5.

O que mostrar

Pelo teclado: clique numa figura e use as setas; a barra de espaço alterna o vetor ou o ponto que se move. Quando o quadro Gram-Schmidt passo a passo mostra vetores de ℝ3 e nenhum vetor ou ponto está escolhido, as setas giram a vista.

Em dimensão n

Arredondamento e compressão

Num computador, o processo de Gram-Schmidt é executado em ponto flutuante, e o resultado de cada operação é arredondado. Para medir quanto as colunas calculadas q1, …, qn deixam de ser ortonormais, formamos a matriz Q com essas colunas e usamos o maior valor absoluto das entradas de QTQ − I, que chamamos de desvio de ortogonalidade. Fora da diagonal, essas entradas são os produtos internos qiTqj; na diagonal, são as diferenças qiTqi − 1. Em aritmética exata, todas seriam 0. Os vetores de entrada são quase linearmente dependentes quando algum deles fica muito perto do subespaço gerado pelos anteriores, em comparação com o seu comprimento, e então a ordem das contas importa. O Gram-Schmidt clássico calcula todos os coeficientes com o vetor original; o modificado subtrai uma projeção de cada vez do vetor já corrigido. Nos dois exemplos da bancada, o clássico perde a ortogonalidade muito antes do modificado. Na segunda parte, um sinal é um vetor x ∈ ℝn de amostras. Os coeficientes de x numa base ortonormal de ℝn formada por cossenos são produtos internos, e guardar apenas os k coeficientes de maior valor absoluto dá uma aproximação de x descrita por k números: é a compressão do sinal. O painel Experimento mostra uma parte de cada vez, com os seus quadros.

Perda de ortogonalidade

Para cada número n de vetores, os vetores calculados q1, …, qn formam as colunas de uma matriz Q. O gráfico mostra, em escala logarítmica, o desvio de ortogonalidade, isto é, o maior valor absoluto das entradas de QTQ − I, no Gram-Schmidt clássico e no modificado.

As entradas de QTQ − I

Experimento

Cada experimento tem os seus quadros e controles, e só os do experimento escolhido aparecem. Os desafios escolhem o experimento que usam.

Gram-Schmidt em ponto flutuante

Conceitos da aula

Bases ortonormais e o processo de Gram-Schmidt

Uma guia por conceito, cada um com a definição, um exemplo resolvido e o lugar da bancada em que ele aparece. A notação é a do livro-texto (seção 3.4).

Na Aula 12, dois vetores u, v ∈ ℝn foram chamados de ortogonais quando o produto interno uTv é zero. Uma base formada por vetores ortogonais dois a dois e de comprimento 1 simplifica as contas com coordenadas e com projeções.

Vetores ortonormais

Definição

Os vetores q1, …, qk ∈ ℝn são ortogonais se qiTqj = 0 para quaisquer i ≠ j. Eles são ortonormais se, além disso, cada um tem comprimento 1:

qiTqj = 0  para  i ≠ j,

qiTqi = 1  para  i = 1, …, k.

Uma base ortonormal de um subespaço V de ℝn é uma base de V formada por vetores ortonormais.

O comprimento de um vetor v ∈ ℝn é ‖v‖ = √(vTv). Normalizar um vetor v ≠ 0 é dividi-lo pelo seu comprimento: o vetor v/‖v‖ tem a mesma direção e o mesmo sentido de v e comprimento 1. O vetor nulo não pode ser normalizado.

Vetores ortonormais são linearmente independentes

Teorema

Se q1, …, qk ∈ ℝn são ortonormais, então eles são linearmente independentes. Em particular, n vetores ortonormais de ℝn formam uma base ortonormal de ℝn.

Por quê. Sejam λ1, …, λk escalares tais que λ1q1 + ⋯ + λkqk = 0. Multiplicando os dois lados por qiT, os termos λjqiTqj com j ≠ i se anulam, e sobra λiqiTqi = λi = 0, para cada i = 1, …, k. Como n vetores linearmente independentes de ℝn formam uma base de ℝn (Aula 7), a segunda afirmação segue da primeira.

Exemplo

Os vetores q1 = (1, 1)T/√2 e q2 = (1, −1)T/√2 formam uma base ortonormal de ℝ2:

q1Tq2 = (1 · 1 + 1 · (−1))/2 = 0,

q1Tq1 = (12 + 12)/2 = 1,

q2Tq2 = (12 + (−1)2)/2 = 1.

Já os vetores (3, 4)T e (−4, 3)T são ortogonais, pois 3 · (−4) + 4 · 3 = 0, mas não são ortonormais: os dois têm comprimento 5. Normalizando, obtemos (3/5, 4/5)T e (−4/5, 3/5)T, que são ortonormais.

Na bancada: no modo Gram-Schmidt passo a passo, avance até o passo de normalização, o penúltimo. O quadro Gram-Schmidt passo a passo mostra os vetores ortonormais q1, q2 e, em ℝ3, q3, com marcas de ângulo reto; no plano, as pontas de q1 e q2 ficam sobre o círculo unitário tracejado.

Pondo vetores ortonormais nas colunas de uma matriz Q, as condições qiTqj = 0 para i ≠ j e qiTqi = 1 se resumem numa só igualdade de matrizes, QTQ = I.

Matrizes com colunas ortonormais

Teorema

Seja Q uma matriz m × n com colunas q1, …, qn ∈ ℝm. As colunas de Q são ortonormais se, e somente se, QTQ = I, a identidade n × n. Nesse caso, para quaisquer u, v ∈ ℝn,

(Qu)T(Qv) = uTv  e  ‖Qu‖ = ‖u‖.

Por quê. A entrada (i, j) de QTQ é o produto da linha i de QT, que é qiT, pela coluna j de Q, que é qj. Logo QTQ = I diz exatamente que qiTqj = 0 para i ≠ j e qiTqi = 1. Além disso, (Qu)T(Qv) = uTQTQv = uTv; com v = u, obtemos ‖Qu‖2 = ‖u‖2. Como o cosseno do ângulo entre dois vetores não nulos u e v é uTv / (‖u‖ ‖v‖), a multiplicação por Q também preserva ângulos.

Definição

Uma matriz ortogonal é uma matriz quadrada Q cujas colunas são ortonormais. Para ela, QTQ = I significa que QT é a inversa de Q: Q−1 = QT. Por isso também vale QQT = I, e as linhas de Q também são ortonormais.

Se Q tem colunas ortonormais, mas é m × n com m > n, ela não é chamada de ortogonal e não tem inversa. Vale QTQ = I, mas QQT ≠ I: como n < m, existe b ≠ 0 ortogonal a todas as colunas de Q, isto é, com QTb = 0, e para ele QQTb = 0 ≠ b.

Exemplos no plano

Exemplo

A rotação de 90° no sentido anti-horário tem matriz Q = 0−110, cujas colunas (0, 1)T e (−1, 0)T são ortonormais. Para u = (3, 4)T,

Qu = (−4, 3)T,

‖Qu‖ = √(16 + 9) = 5 = ‖u‖.

As matrizes ortogonais 2 × 2 são de dois tipos. A primeira coluna q1 tem comprimento 1; por isso, se θ é o ângulo da parte positiva do eixo x até q1, medido no sentido anti-horário, então q1 = (cos θ, sen θ)T. A segunda coluna, por ter comprimento 1 e ser ortogonal a q1, só pode ser um destes dois vetores:

  • (−sen θ, cos θ)T: Q é a rotação de ângulo θ no sentido anti-horário, com det Q = cos2 θ + sen2 θ = 1;
  • (sen θ, −cos θ)T: Q é a reflexão em relação à reta que passa pela origem e faz ângulo θ/2 com o eixo x, com det Q = −cos2 θ − sen2 θ = −1.

As matrizes de permutação (Aula 5) também são ortogonais: as suas colunas são os vetores da base canônica, em outra ordem.

Na bancada: no modo Matriz ortogonal Q, arraste u, v e a ponta de q1 no quadro Comprimentos e ângulos. A leitura abaixo do quadro mostra ‖Qu‖ = ‖u‖, ‖Qv‖ = ‖v‖ e (Qu)T(Qv) = uTv, e o quadro A matriz Q e o produto QᵀQ mostra QTQ = I. No painel A matriz Q, marque Reflexão para trocar a rotação por uma reflexão.

Numa base qualquer, encontrar as coordenadas de um vetor exige resolver um sistema linear. Numa base ortonormal, cada coordenada é um único produto interno, e a projeção sobre o subespaço gerado por alguns vetores da base é uma soma de projeções sobre retas.

Coordenadas numa base ortonormal

Teorema

Se q1, …, qn é uma base ortonormal de ℝn e Q é a matriz com essas colunas, então todo b ∈ ℝn satisfaz

b = (q1Tb)q1 + ⋯ + (qnTb)qn.

Isto é, as coordenadas de b nessa base são yi = qiTb, para i = 1, …, n. Em forma matricial, com y = (y1, …, yn)T, vale y = QTb.

Por quê. Como q1, …, qn é uma base, existem escalares únicos y1, …, yn tais que b = y1q1 + ⋯ + ynqn. Multiplicando por qiT, os termos yjqiTqj com j ≠ i se anulam, e sobra qiTb = yi. Em forma matricial, b = Qy, e multiplicar por QT dá QTb = QTQy = y. Não é preciso eliminação: o produto QTb custa n2 multiplicações, contra cerca de n3/3 para resolver Qy = b por eliminação.

Exemplo

Na base q1 = (1, 1)T/√2, q2 = (1, −1)T/√2, as coordenadas de b = (3, 1)T são

y1 = q1Tb = (3 + 1)/√2 = 2√2,

y2 = q2Tb = (3 − 1)/√2 = √2.

De fato, 2√2 q1 + √2 q2 = (2, 2)T + (1, −1)T = (3, 1)T.

Projeção sobre o espaço gerado por vetores ortonormais

Teorema

Sejam q1, …, qk ∈ ℝn vetores ortonormais e Q a matriz n × k com essas colunas. Para todo b ∈ ℝn, a projeção de b sobre o subespaço ger{q1, …, qk} é

p = (q1Tb)q1 + ⋯ + (qkTb)qk,

p = QQTb.

A matriz de projeção é P = QQT.

Por quê. Na Aula 12, a projeção de b sobre C(A), para A com colunas linearmente independentes, é p = A(ATA)−1ATb. Com A = Q, vale QTQ = I, e a fórmula se reduz a p = QQTb. Cada parcela (qiTb)qi é a projeção de b sobre a reta gerada por qi: como os vetores qi são ortogonais, a projeção sobre o subespaço é a soma das projeções sobre essas retas. Se os vetores w1, …, wk forem apenas ortogonais e não nulos, basta aplicar a fórmula a qi = wi/‖wi‖:

p = (w1Tb / w1Tw1)w1 + ⋯ + (wkTb / wkTwk)wk.

Exemplo

Os vetores w1 = (1, −1, 0)T e w2 = (1, 1, −2)T são ortogonais. Para projetar b = (3, −3, 3)T sobre o plano ger{w1, w2}, calculamos w1Tb = 6, w1Tw1 = 2, w2Tb = −6 e w2Tw2 = 6. A projeção é

p = (6/2)w1 + (−6/6)w2 = 3w1 − w2,

p = (2, −4, 2)T.

O erro b − p = (1, 1, 1)T é ortogonal a w1 e a w2.

Na bancada: no modo Matriz ortogonal Q, arraste b no quadro Coordenadas na base ortonormal. A leitura abaixo do quadro mostra y1 = q1Tb e y2 = q2Tb, e as setas largas e claras sobre as retas geradas por q1 e por q2 são as projeções y1q1 e y2q2. A projeção sobre um plano como soma de duas projeções aparece no passo 4 do modo Gram-Schmidt passo a passo, em ℝ3.

O processo de Gram-Schmidt parte de vetores linearmente independentes a1, …, an e constrói vetores ortonormais q1, …, qn tais que, para cada j, os vetores q1, …, qj geram o mesmo subespaço que a1, …, aj. De cada vetor de entrada, ele subtrai a projeção sobre o subespaço gerado pelos anteriores e, no fim, divide cada resultado pelo seu comprimento.

O processo

Definição

Sejam a1, …, an ∈ ℝm os vetores de entrada. O processo de Gram-Schmidt calcula os vetores ortogonais w1, …, wn e os vetores ortonormais q1, …, qn em três etapas:

  1. o primeiro vetor ortogonal é o primeiro vetor de entrada: w1 = a1;
  2. para j = 2, …, n, nessa ordem, wj é aj menos a sua projeção sobre o subespaço gerado por w1, …, wj−1, calculada como na guia Coordenadas e projeções: wj = aj − ∑i < j (wiTaj / wiTwi) wi; se algum wi for nulo, o seu termo é omitido da soma;
  3. depois do último passo, cada vetor ortogonal não nulo é normalizado: qj = wj/‖wj‖.

Teorema

Se a1, …, an são linearmente independentes, então wj ≠ 0 para todo j, os vetores q1, …, qn são ortonormais e, para cada j = 1, …, n,

ger{q1, …, qj} = ger{a1, …, aj}.

Por quê. A prova é por indução em j. Para j = 1, w1 = a1 é não nulo, pois um conjunto linearmente independente não contém o vetor nulo, e ger{w1} = ger{a1}. Para j ≥ 2, suponha que w1, …, wj−1 são ortogonais dois a dois, não nulos e geram o mesmo subespaço que a1, …, aj−1. Então:

  1. wj é ortogonal a w1, …, wj−1: a soma subtraída de aj é a projeção de aj sobre esse subespaço (guia Coordenadas e projeções), e o erro de uma projeção é ortogonal ao subespaço;
  2. wj ≠ 0: se fosse nulo, aj seria igual à sua projeção, que é combinação linear de a1, …, aj−1, o que contradiz a independência linear;
  3. ger{w1, …, wj} = ger{a1, …, aj}: wj é aj menos uma combinação linear de a1, …, aj−1, e aj é wj mais uma combinação linear de w1, …, wj−1.

Por fim, dividir cada wj pelo seu comprimento dá vetores de comprimento 1 e não muda a ortogonalidade nem os subespaços gerados.

A bancada usa a mesma notação: os vetores de entrada são a1, a2 e, em ℝ3, a3, e os vetores ortogonais são w1, w2 e, em ℝ3, w3.

Um exemplo e o caso dependente

Exemplo

Para a1 = (1, −1, 0)T, a2 = (2, 0, −2)T e a3 = (3, −3, 3)T:

w1 = a1 = (1, −1, 0)T,

w2 = a2 − (2/2)w1 = (1, 1, −2)T,

w3 = a3 − (6/2)w1 − (−6/6)w2,

w3 = (1, 1, 1)T.

As frações são os coeficientes w1Ta2 / w1Tw1 = 2/2, w1Ta3 / w1Tw1 = 6/2 e w2Ta3 / w2Tw2 = −6/6. Normalizando, q1 = w1/√2, q2 = w2/√6 e q3 = w3/√3.

Vetores dependentes. Se os vetores de entrada forem linearmente dependentes, existe um primeiro índice j em que aj é combinação linear de a1, …, aj−1; para j = 1, isso quer dizer a1 = 0. Os vetores anteriores a aj são linearmente independentes, e o teorema vale para eles: ger{w1, …, wj−1} = ger{a1, …, aj−1}. Então a projeção de aj sobre esse subespaço é o próprio aj, e wj = 0, que não pode ser normalizado. Por exemplo, se a3 = a1 + a2, o passo de a3 dá w3 = 0. Assim, o processo também serve para decidir se vetores são linearmente independentes: eles são independentes se, e somente se, o processo chega ao fim sem encontrar um wj nulo.

Na bancada: no modo Gram-Schmidt passo a passo, escolha o exemplo Resultados inteiros no painel Exemplos e use os botões de passo abaixo da figura do quadro Gram-Schmidt passo a passo; o texto abaixo dos botões mostra as contas de cada passo, com frações exatas. Os exemplos Vetores dependentes e Outra ordem mostram o que acontece com a3 = a1 + a2 e com os mesmos vetores em outra ordem.

Escrito com matrizes, o processo de Gram-Schmidt dá uma fatoração da matriz A cujas colunas são os vetores de entrada. Os vetores ortonormais obtidos formam as colunas de uma matriz Q; cada coluna de A é combinação linear das colunas de Q, e os coeficientes formam uma matriz triangular superior R, com A = QR.

A fatoração A = QR

Teorema

Seja A uma matriz m × n com colunas a1, …, an linearmente independentes, e sejam q1, …, qn os vetores obtidos pelo processo de Gram-Schmidt. Então A = QR, em que Q = [q1 ⋯ qn] tem colunas ortonormais e R é a matriz n × n de entradas

rij = qiTaj  se  i ≤ j,

rij = 0  se  i > j.

A matriz R é triangular superior, e a sua diagonal é formada pelos comprimentos dos vetores ortogonais wj da guia Processo de Gram-Schmidt: rjj = ‖wj‖ > 0. Por isso, R é invertível.

Por quê. Pelo processo, aj pertence a ger{q1, …, qj}. Então a projeção de aj sobre esse subespaço é o próprio aj e, pela guia Coordenadas e projeções,

aj = (q1Taj)q1 + ⋯ + (qjTaj)qj.

A coluna j de QR é a combinação linear das colunas de Q com os coeficientes da coluna j de R, que são exatamente q1Taj, …, qjTaj, seguidos de zeros. Além disso, rjj = qjTaj = qjTwj = ‖wj‖, pois aj − wj pertence a ger{q1, …, qj−1}, cujos vetores são ortogonais a qj. Multiplicando A = QR por QT, obtemos também R = QTA.

Um exemplo e os mínimos quadrados

Exemplo

Para os vetores a1, a2 e a3 do exemplo da guia Processo de Gram-Schmidt, Q = [w1/√2  w2/√6  w3/√3] e

R = √2√23√20√6−√600√3.

Na terceira coluna estão q1Ta3 = 6/√2 = 3√2, q2Ta3 = −6/√6 = −√6 e q3Ta3 = 3/√3 = √3. De fato,

3√2 q1 − √6 q2 + √3 q3 = 3w1 − w2 + w3,

3w1 − w2 + w3 = (3, −3, 3)T = a3.

Mínimos quadrados. Na Aula 12, a solução de mínimos quadrados de Ax = b é a solução x̂ das equações normais ATAx̂ = ATb. Com A = QR, temos ATA = RTQTQR = RTR e ATb = RTQTb. Como RT é invertível, as equações normais equivalem a

Rx̂ = QTb,

um sistema triangular superior, resolvido por substituição regressiva. Assim, não é preciso formar ATA, uma conta que amplia os erros de arredondamento quando as colunas de A são quase linearmente dependentes.

Na bancada: no modo Gram-Schmidt passo a passo, o quadro A = QR mostra primeiro a igualdade [a1 a2 a3] = [w1 w2 w3]U, com os vetores ortogonais e uma matriz U triangular superior, e, depois da normalização, as matrizes Q e R. No último passo, as setas tracejadas do quadro Gram-Schmidt passo a passo mostram o último vetor de entrada como combinação linear de q1, q2 e, em ℝ3, q3, com os coeficientes da última coluna de R.

Num computador, as contas com vetores de ℝn são feitas em ponto flutuante, e o resultado de cada operação é arredondado. Duas versões do processo de Gram-Schmidt dão os mesmos vetores em aritmética exata, mas resultados muito diferentes com arredondamento quando os vetores de entrada são quase linearmente dependentes. Já uma base ortonormal pronta, a base de cossenos, permite comprimir sinais.

Gram-Schmidt clássico e modificado

Nas duas versões, cada qj é normalizado no seu passo. No passo j, elas partem do vetor v = aj, subtraem de v as projeções sobre os vetores q1, …, qj−1 já calculados e terminam com qj = v/‖v‖. A diferença está no cálculo dos coeficientes dessas projeções:

  • o clássico calcula todos os coeficientes com o vetor original, rij = qiTaj para i < j, e faz v = aj − r1jq1 − ⋯ − rj−1,jqj−1;
  • o modificado, para i = 1, …, j − 1, nessa ordem, calcula rij = qiTv com o vetor v já corrigido e troca v por v − rijqi.

Em aritmética exata, as duas versões dão os mesmos vetores: quando chega a vez de qi, o modificado só subtraiu de aj múltiplos de q1, …, qi−1, que são ortogonais a qi, e por isso qiTv = qiTaj.

O que se mede. Com as colunas calculadas q1, …, qn numa matriz Q, a entrada (i, j) de QTQ − I é qiTqj se i ≠ j e qiTqi − 1 se i = j. Em aritmética exata, todas seriam 0. A perda de ortogonalidade é medida pelo maior valor absoluto dessas entradas, que chamamos de desvio de ortogonalidade.

Por que o clássico acumula erros. Em ponto flutuante de 64 bits, cada operação tem erro relativo de até cerca de 10−16, e os vetores q1, …, qj−1 já calculados não são exatamente ortonormais. Diremos que aj é quase combinação linear dos vetores anteriores quando a distância de aj ao subespaço gerado por eles é muito menor que ‖aj‖. Nesse caso, v é a diferença entre dois vetores quase iguais, aj e a sua projeção, e ‖v‖ é muito menor que ‖aj‖. Os erros dessas contas, da ordem de 10−16‖aj‖, deixam em v componentes nas direções de q1, …, qj−1, e a normalização divide essas componentes por ‖v‖. No clássico, nenhum passo remove essas componentes: os produtos internos de qj com q1, …, qj−1 ficam muito maiores que 10−16, e os passos seguintes partem desses vetores. Com as potências de t da bancada, o desvio de ortogonalidade do clássico cresce com o número n de vetores até ficar perto de 1.

No modificado, cada coeficiente qiTv inclui a componente que v tem naquele momento na direção de qi, seja qual for a sua origem, e essa componente é subtraída. O modificado também perde ortogonalidade com vetores quase linearmente dependentes, mas muito mais devagar: com as potências de t e n = 16, o desvio dele é cerca de 10−6, contra cerca de 1 no clássico.

Exemplo

Com ε = 10−8, sejam a1 = (1, ε, 0, 0)T, a2 = (1, 0, ε, 0)T e a3 = (1, 0, 0, ε)T. Em ponto flutuante, ‖a1‖2 = 1 + ε2 = 1 + 10−16 é arredondado para 1, e as duas versões calculam

q1 = (1, ε, 0, 0)T,

q2 = (0, −1, 1, 0)T/√2.

A primeira entrada de q2, que em aritmética exata é cerca de ε/√2, saiu 0. No passo de a3, as duas versões chegam a v = a3 − q1 = (0, −ε, 0, ε)T e diferem no coeficiente de q2:

  • o clássico calcula q2Ta3 = 0, em vez de cerca de ε/√2, e obtém q3 = (0, −1, 0, 1)T/√2, com q2Tq3 = 1/2: um ângulo de 60° entre q2 e q3, em vez de 90°;
  • o modificado calcula q2Tv = ε/√2, pois a primeira entrada de v já é 0, e obtém q3 = (0, −1, −1, 2)T/√6, com q2Tq3 = 0.

A base de cossenos e a compressão

Definição

Para i = 0, 1, …, n − 1, seja qi ∈ ℝn o vetor de entradas

(qi)j = si cos(πi(2j − 1)/(2n)),

para j = 1, …, n, com s0 = 1/√n e si = √(2/n) para i ≥ 1. Pode-se mostrar que esses n vetores são ortonormais. Eles formam a base de cossenos de ℝn, usada na transformada discreta de cossenos. O índice i se chama frequência de qi: quando j vai de 1 a n, o argumento do cosseno vai de πi/(2n) a πi − πi/(2n), e as entradas de qi descrevem cerca de i/2 períodos do cosseno.

Um sinal de n amostras é um vetor x ∈ ℝn, cuja entrada xj é a amostra j. A energia do sinal é ‖x‖2 = x12 + ⋯ + xn2.

Seja Q = [q0 ⋯ qn−1] a matriz da base de cossenos. As coordenadas de x nessa base, que aqui se chamam coeficientes, são y = QTx, isto é, yi = qiTx, e x = Qy = y0q0 + ⋯ + yn−1qn−1. Como Q é ortogonal, ‖y‖ = ‖x‖: a energia do sinal é a soma dos quadrados dos coeficientes. Guardando só alguns coeficientes e trocando os outros por 0, obtemos a reconstrução x̃, a soma dos termos yiqi guardados. O erro x − x̃ é a soma dos termos yiqi descartados e, como os vetores qi são ortonormais, ‖x − x̃‖2 é a soma dos yi2 descartados. Por isso, para guardar k coeficientes com o menor erro, basta escolher os k de maior valor absoluto. Quando o sinal varia pouco de uma amostra para a seguinte, a maior parte da energia costuma ficar nos coeficientes de frequência baixa: no sinal Temperatura da bancada, com n = 64, os 6 coeficientes de frequência 0 a 5 guardam 99,96% da energia. A compressão de imagens no formato JPEG usa essa ideia, com a versão bidimensional dessa base em blocos de 8 × 8 pixels.

Exemplo

Para n = 2, a base de cossenos é formada por q0 = (1, 1)T/√2 e q1 = (1, −1)T/√2, os vetores do exemplo da guia Vetores ortonormais, lá chamados de q1 e q2. Para x = (3, 1)T:

y0 = q0Tx = 4/√2 = 2√2,

y1 = q1Tx = 2/√2 = √2,

‖y‖2 = 8 + 2 = 10 = ‖x‖2.

Guardando só y0, a reconstrução é x̃ = y0q0 = (2, 2)T, que guarda 8/10, ou 80%, da energia. O erro é ‖x − x̃‖2 = ‖(1, −1)T‖2 = 2, igual a y12.

Na bancada: na parte Em dimensão n, com o experimento Gram-Schmidt em ponto flutuante escolhido no painel Experimento, escolha Quase iguais e n = 3 para ver o exemplo acima no quadro As entradas de QᵀQ − I, ou Potências de t para comparar as duas versões no quadro Perda de ortogonalidade. Com o experimento Compressão de sinais, escolha um sinal no painel Sinal e compressão e mude o controle Coeficientes guardados k.

Para pensar

Trocar a ordem dos vetores de entrada a1, a2 e a3 muda a base que o processo de Gram-Schmidt dá?

Em geral, sim. O primeiro vetor da base, q1, é sempre a normalização do primeiro vetor de entrada. No exemplo Outra ordem, que começa por (3, −3, 3)T, o processo dá q1 = (1, −1, 1)T/√3, e não (1, −1, 0)T/√2. O que não depende da ordem é o subespaço gerado por todos os vetores: se os vetores de entrada forem linearmente independentes, em qualquer ordem, os vetores q1, q2, q3 formam uma base ortonormal de ger{a1, a2, a3}. Se os vetores de entrada já forem ortogonais e não nulos, trocar a ordem apenas troca a ordem dos vetores qj.

Uma matriz Q com colunas ortonormais, mas não quadrada, satisfaz QQT = I?

Não. Se Q é m × n com m > n, vale QTQ = I, mas QQT é a matriz m × m de projeção sobre C(Q). Por exemplo, para Q = (1, 1)T/√2, de tamanho 2 × 1, temos QTQ = 1, mas QQT = 1/21/21/21/2: o vetor (1, −1)T, ortogonal à coluna de Q, é levado no vetor nulo.

Por que a energia do sinal não muda na base de cossenos?

Porque a matriz Q da base de cossenos é ortogonal. Para os coeficientes y = QTx de um sinal x, isso dá ‖y‖2 = ‖QTx‖2 = xTQQTx = xTx = ‖x‖2, pois QQT = I para uma matriz quadrada com QTQ = I. Por isso, ao descartar coeficientes, a energia perdida, ‖x − x̃‖2, é exatamente a soma dos quadrados dos coeficientes descartados.