• Nenhum resultado encontrado

Sistemas mal-condicionados e refinamento de solu¸ c˜ ao

3.5.1 Sistemas mal-condicionados

Na teoria, se um sistema linear Au= bsatisfaz detA6= 0, ent˜ao existe uma e s´o uma solu¸c˜aou. Na pr´atica, por´em, quando resolvemos o sistema via computador, erros podem se acumular e a solu¸c˜ao se afastar da solu¸c˜ao verdadeira. Isso pode ser parcialmente sanado pela Condensa¸c˜ao Pivotal, descrita no Cap´ıtulo 3, e pelo M´etodo de Refinamento, do qual daremos uma id´eia abaixo.

O principal problema vem do fato de que muitas vezes os coeficientes do sistema e os termos independentes s˜ao retirados de medidas f´ısicas ou de modelos aproximados.

Para alguns sistemas, a solu¸c˜ao pode depender sensivelmente de seus coeficientes, a ponto de pequenas incertezas em seus valores provocarem grandes altera¸c˜oes na solu¸c˜ao final. Esses sistemas s˜ao chamados demal-condicionados.

Para exemplificar, consideremos o sistema 2×2 x + y = 1

99x + 100y = 99.5 ,

que tem solu¸c˜ao ´unica e exatax= 0.5, y= 0.5. Agora considere o sistema x + y = 1

99.4x + 99.9y = 99.2 ,

com altera¸c˜oes de n˜ao mais do que 0.5% nos coeficientes originais (o que ´e bastante razo´avel para uma medida experimental). Sua solu¸c˜ao ´unica e exata ´ex= 1.4,y=−0.4, radicalmente diferente da anterior.

Para entender porque isso acontece, experimente o leitor, para cada um dos dois sistemas, desenhar as retas que correspondem a cada uma das equa¸c˜oes. Nota-se que o problema ´e devido ao fato de que as retas correspondentes a cada equa¸c˜ao s˜ao quase

3.5. SISTEMAS MAL-CONDICIONADOS E REFINAMENTO DE SOLUC¸ ˜AO 51 paralelas, o que faz com que o ponto de intersec¸c˜ao das duas seja muito sens´ıvel a pequenas mudan¸cas nos coeficientes.

A id´eia vale em dimens˜oes mais altas, se pensarmos em hiperplanos quase paralelos, no lugar de retas. Podemos tamb´em pensar nos vetores-coluna de A(ou nos vetores-linha): se Ae1, Ae2, . . . , Aen forem “quase” linearmente dependentes, ent˜ao o sistema ser´a mal-condicionado.

Uma maneira de se “medir” o condicionamento da matriz seria calculando seu deter-minante (embora muitas vezes s´o possamos conhecˆe-lo depois de escalonar a matriz). O determinante ´e o hipervolume (com sinal) do hiperparalelep´ıpedo formado pelos vetores-colunaAe1, Ae2, . . . , Aen. Se esses vetores forem quase linearmente dependentes, ent˜ao o hiperparalelep´ıpedo ser´a “achatado”, e portanto ter´a volume pequeno. O argumento s´o falha no sentido de que o volume n˜ao depende somente do grau de achatamento do hi-perparalelep´ıpedo, mas tamb´em do comprimento de cada vetor. Ent˜ao uma medida mais confi´avel seria tomar o hipervolume do hiperparalelep´ıpedo formado pela normaliza¸c˜ao desses vetores, isto ´e, pelos vetores

vi= Aei

kAeik .

Esse n´umero estar´a entre 0 e 1, e quando estiver perto de zero significa que a matriz ´e mal-condicionada.

Em resumo, o n´umero de condicionamento pode ser achado assim: (i) substitua cada colunaAei da matriz pelo vetor vi = kAeAei

ik, lembrando que a norma (euclideana) kuk de um vetor u = (x1, . . . , xn) ´e dada por kuk = (x21+. . .+x2n)1/2; (ii) calcule o valor absoluto do determinante da nova matriz; (iii) observe se o n´umero obtido est´a pr´oximo de zero ou de um: se estiver perto de zero ent˜ao a matrizA´e mal-condicionada.

H´a outras medidas do condicionamento de uma matriz, assim como h´a f´ormulas que relacionam o erro cometido no M´etodo de Escalonamento com essas medidas e com o n´umero de algarismos significativos utilizados nas contas. Isso tudo no entanto foge ao escopo dessas notas. Al´em do mais, medidas de condicionamento s˜ao dificilmente aplic´aveis na pr´atica, pois s˜ao t˜ao (ou mais) dif´ıceis de serem obtidas quanto a pr´opria solu¸c˜ao do sistema linear.

3.5.2 Matrizes de Hilbert

Para que o leitor se familiarize melhor com o problema do mau condicionamento, suge-rimos que acompanhe o seguinte Exemplo.

Considere o sistema

x1 + 12x2 + 13x3 = 1

1

2x1 + 13x2 + 14x3 = 1

1

3x1 + 14x2 + 15x3 = 1 .

52 CAP´ITULO 3. O M ´ETODO DE ESCALONAMENTO Resolvendo o sistema por escalonamento (sem troca de linhas, pois n˜ao s˜ao ne-cess´arias para a condensa¸c˜ao pivotal), e fazendo contas com fra¸c˜oes exatas, obtemos a solu¸c˜ao exata (x1, x2, x3) = (3,−24,30).

Se, por outro lado, usarmos dois algarismos significativos (13 = 0.33, por exemplo) e seguirmos exatamente o mesmo procedimento, obteremos (0.9,−11,17). Com trˆes algarismos significativos, chegaremos em (2.64,−21.8,27.8), resultado mais pr´oximo mas ainda estranhamente longe da solu¸c˜ao exata.

Matrizes do tipo

1 12 13 · · · n1

1

2 1

3 1

4 · · · n+11

... ... ... ... ...

1

n 1

n+1 1

n+2 · · · 2n11

 .

s˜ao chamadas de matrizes de Hilbert, e aparecem naturalmente no problema do ajuste polinomial, como veremos mais adiante (vide Subse¸c˜ao 6.7.2).

3.5.3 Refinamento

Uma das maneiras de sanar o problema de se encontrar uma solu¸c˜ao “ruim”, causada pelo mau condicionamento do sistema, ´e fazer orefinamento, que consiste em obter uma solu¸c˜ao ˆudeAu=b, mesmo que n˜ao correta (por causa dos erros de arredondamento), e depois melhor´a-la.

Para melhorar ˆu, definimos a diferen¸ca w = u−uˆ para a solu¸c˜ao verdadeira u, e tentamos calcularw. Como u= ˆu+w, ent˜ao

b=Au=A(ˆu+w), logo

Aw=b−Aˆu .

Ou seja, a diferen¸ca w entre u e ˆu ´e a solu¸c˜ao de um sistema linear, onde os termos independentes s˜ao dados por b−Aˆue os coeficientes s˜ao os mesmos do sistema linear original (o que facilita as coisas do ponto de vista de programa¸c˜ao).

O m´etodo pode ser implementado assim: calcula-se a primeira solu¸c˜ao aproximada u(0). Calcula-se ent˜aow(0)=u−u(0) resolvendo-se o sistema

Aw(0)=b−Au(0).

Se a solu¸c˜ao desse sistema n˜ao contivesse erros, ent˜ao u = u(0)+w(0) seria a solu¸c˜ao correta. Como erros s˜ao inevit´aveis, u(0)+w(0) pode n˜ao ser a solu¸c˜ao exata, e ser´a chamada deu(1). Calcula-se ent˜aow(1)=u−u(1), resolvendo-se

Aw(1)=b−Au(1),

3.5. SISTEMAS MAL-CONDICIONADOS E REFINAMENTO DE SOLUC¸ ˜AO 53 e em seguida define-seu(2)=u(1)+w(1). E assim por diante.

Vejamos um exemplo ilustrativo. Na Se¸c˜ao 3.2, usamos 3 algarismos significativos para resolver

3 1 2 | −1

1 1 0 | 2

2 2 −1 | 1

 .

Os passos do escalonamento ali usados s˜ao importantes para n˜ao se repetir as mesmas contas a cada etapa do refinamento.

A solu¸c˜ao obtida pode ser considerada uma primeira aproxima¸c˜ao, chamada deu(0):

u(0)=

−4.47 6.44 2.96

 .

Calculamos ent˜aoAu(0), que ´e o teste usual para ver seu(0)´e realmente solu¸c˜ao. Obte-mos

Au(0)=

−1.04 1.97

1

 ,

sempre usando 3 algarismos significativos, e ent˜ao tiramos a diferen¸ca

b−Au(0)=

 0.04 0.03 0

 .

Agora queremos obterw do sistema Aw=b−Au(0), para chegar `a etapa seguinte, comu(1)=u(0)+w. Ou seja, temos que resolver o sistema

3 1 2 | 0.04 1 1 0 | 0.03 3 2 −1 | 0

 .

Se procedermos ao escalonamento, seguiremos exatamente os mesmos passos feitos na Se¸c˜ao 3.2. Ent˜ao n˜ao precisamos fazer tudo de novo no lado esquerdo, somente no vetor de termos independentes do lado direito.

As transforma¸c˜oes do lado direito s˜ao

 0.04 0.03 0

−→(i)

 0.04 0.0167

−0.0267

−→(ii)

 0.04

−0.0267 0.0167

(iii)

−→

 0.04

−0.0267 0.0301

 ,

54 CAP´ITULO 3. O M ´ETODO DE ESCALONAMENTO onde em (i) subtra´ımos da segunda linha 0.333 vezes a primeira linha e da terceira linha subtra´ımos 0.667 vezes a primeira linha, em (ii) trocamos as posi¸c˜oes da segunda e da terceira linhas e em (iii) subtra´ımos da terceira linha 0.502 vezes a segunda linha. O sistema escalonado fica

3 1 2 | 0.04

0 1.33 −2.33 | −0.0267 0 0 0.504 | 0.0301

 ,

e da´ı chegamos a w = (w1, w2, w3) = (−0.0543,0.0842,0.0597). Somando com u(0) obtemosu(1)= (−4.52,6.52,3.02), com erro absoluto m´aximo de 0.02.

Para conferir, notamos queAu(1)= (−1.04,2,0.94), nada muito melhor do queAu(0). De fato, mesmo com a possibilidade de refinamento, a solu¸c˜ao de partida j´a era bastante razo´avel. Vale a pena o leitor fazer mais algumas etapas, e conferir os seguintes valores:

u(2)=

−4.44 6.44 2.96

 , u(3)=

−4.53 6.53 3.02

 .

Com a limita¸c˜ao do n´umero de algarismos significativos, n˜ao ´e certeza que o refina-mento levar´a `a melhor aproxima¸c˜ao da solu¸c˜ao correta. Melhores resultados s˜ao obtidos se, no c´alculo de b−Au(i), for usada precis˜ao dupla(isto ´e, o dobro de algarismos sig-nificativos), uma vez que b e Au(i) s˜ao vetores cujas coordenadas tˆem valores muito pr´oximos. Obviamente os benef´ıcios da precis˜ao dupla podem ser usados nos computa-dores e calculadoras modernos, quando se escrevem v´arias opera¸c˜oes concatenadas na mesma linha e o arredondamento para precis˜ao simples s´o ´e feito no final. Isto diminui sensivelmente o ac´umulo de erros.

E preciso tamb´em colocar um´ crit´erio de parada, principalmente no caso de se fazer a implementa¸c˜ao no computador. O crit´erio pode ser feito nas solu¸c˜oes u(i) ou nos testesAu(i). Por exemplo, se u(i) = (u1, u2, . . . , un) eu(i+1) = (ˆu1,uˆ2, . . . ,uˆn), pode-se comparar o quanto as coordenadas variam, relativamente, da etapaipara a etapai+ 1, olhando para os n´umeros

|u1−uˆ1|

|u1| , . . . , |un−uˆn|

|un| , . . . ,

e pedindo que eles sejam menores do que um certo valor (por exemplo, 0.05, significando 5% de varia¸c˜ao). O problema ´e quando o denominador ´e igual a zero. Pode-se conven-cionar que: (i) seuj = 0 e ˆuj= 0 ent˜ao a varia¸c˜ao ´e zero; (ii) se uj= 0 e ˆuj 6= 0, ent˜ao a varia¸c˜ao ´e igual a 1 (o que, em geral, far´a com que o processo continue).

Exerc´ıcio. Melhorar o programa que implementa o M´etodo de Escalonamento com condensa¸c˜ao pivotal, acrescentando o refinamento, com algum crit´erio de parada. Para

3.5. SISTEMAS MAL-CONDICIONADOS E REFINAMENTO DE SOLUC¸ ˜AO 55 fazer o refinamento, o programa deve utilizar o “hist´orico” do escalonamento, isto ´e, os multiplicadores e as trocas de linha (para que n˜ao se repita tudo a cada etapa).

Exerc´ıcio. Tome o sistema discutido na Subse¸c˜ao 3.5.2 e sua solu¸c˜ao obtida com 2 algarismos significativos, chamando-a de u(0). Obtenha o refinamento u(1), calculando b−Au(0) com dupla precis˜ao.

Exerc´ıcio. Considere o sistema

1/2 1/3 1/4 | −1 1/3 1/4 1/5 | 0 1/4 1/5 1/6 | 1

 . 1. Ache sua solu¸c˜ao exata.

2. Resolva-o com dois algarismos significativos.

3. Agora fa¸ca a seguinte experiˆencia: escreva o mesmo sistema, arredondando para dois algarismos significativos, mas a partir da´ı ache sua solu¸c˜ao usando o m´aximo de algarismos significativos que sua calculadora permite. Compare com a solu¸c˜ao exata. Isto mostra que o refinamento tamb´em ´e limitado pelo arredondamento inicial que, num sistema mal-condicionado, pode alterar drasticamente a solu¸c˜ao.

Documentos relacionados