Anda di halaman 1dari 18

101

Captulo 8
Mtodos iterativos para equaes no lineares
Usando o Goal Seek (Atingir meta)
O mtodo mais simples de achar as solues (ou razes) duma equao "complicada" da forma f(x) = 0 consiste em traar o grfico da funo, para ter uma idia da localizao aproximativa das razes. Depois disso, podemos usar a ferramenta "Atingir meta" do Excel (Dados>Ferramentas de Dados>Teste de Hipteses>Atingir meta). (O Excel tem uma segunda ferramenta, o "Solver", para achar numericamente os zeros de funes e para tratar problemas da estatstica e anlise de dados. Veja no captulo 14 para mais detalhes.) Exemplo: No estudo da radiao trmica aparece a equao

e x +

x 1 = 0 5

O grfico desta funo tem um ponto zero perto de x=5. Para obter este valor com maior exatido, ativamos Atingir meta.

O resultado ser: x = 4,965105 com f(x) = -1,8E-06. Temos que falar um pouco sobre "Mtodos iterativos" que servem, entre outras coisas, para encontrar solues de equaes no lineares como x4 - 4 x3 - x + 5 = 0 ou 2ex - x sen(x+3) = 0. No primeiro caso, existe uma frmula resolvente geral, como no caso da equao cbica, mas, ela complicada, e no segundo caso, no existe nenhuma frmula resolvente. Um mtodo iterativo, consiste de um modo geral, numa aproximao inicial x0, tambm designada iterada inicial, e num processo de obter sucessivamente novas iteradas xn+1 a partir das anteriores xn,... Desta forma,

102 pretendemos obter uma sucesso que convirja para z, soluo da equao f(x) = 0, tambm designada por raiz da equao, ou zero da funo f. Um processo clssico para ilustrar uma iterao o algoritmo der Heron para determinar a raiz quadrada de um nmero N>=0. Segundo Heron, comea-se com x1 = 1 como primeira estimativa para N1/2. Depois calcula-se com a frmula

1 N x2 = x1 + 2 x1
um novo, oxal melhor, valor para N1/2. (Esta frmula de Heron segue do mtodo iterativo de Newton, veja mais adiante.) O novo valor utiliza-se como x1, e, de novo, calcula-se um valor melhorado x2 etc. Veja o seguinte esquema

que contm na coluna A os valores xn e na coluna B os novos valores xn+1 A5: A6: 1; B5: =B5; B6: =0,5*(A5+B$1/A5) =0,5*(A6+B$1/A6)

Copie A6:B6 at que dois iteraes sucessivas diferem em menos de um nmero pequeno (psilon), por exemplo = 10-6. A execuo do algoritmo termina, se Abs(x2-x1) for menor ou igual a . O ltimo valor de x2 representa a raiz quadrada de N com a preciso estabelecida pelo . Geralmente, escreve-se a frmula de Heron na forma

1 a xn +1 = xn + , onde n = 0,1, 2,... 2 xn


x0 a aproximao inicial. Para calcular a p-sima raiz de um nmero positivo a, podemos utilizar a seguinte frmula de iterao

103

xn +1 =

1 a ( p 1) x + n p 1 p xn

A Sub-rotina "Heron" contm a constante de preciso como critrio de parar o algoritmo.

Segue aqui tambm uma verso Funo "Heron(a)" com sua janela "Heron"

Aps digitar esta funo, pode-se voltar para a planilha Excel e escrever =Heron(1000), para extrair a raiz quadrada do nmero 1000 com a exatido .

104

Mtodo de Newton-Raphson A raiz quadrada de a a soluo da equao f(x) = x2 a = 0. Para o clculo duma raiz da equao f(x) = 0 utiliza-se muitas vezes o algoritmo de NewtonRaphson, dada pela seguinte frmula de iterao (frmula recursiva)

xn +1 = xn

f ( xn ) f '( xn )

onde xn um valor aproximativo da raiz buscada e xn+1 uma melhoria de xn . J mais acima dissemos que para a maioria das equaes no existe nenhuma frmula resolvente geral, para determinar as razes. Nesse caso, usamos mtodos numricos para obter uma soluo aproximativa, to perto quanto queiramos da soluo exata. A seqncia {xn} convergir para a raiz, se f(x), f'(x) e f"(x) forem contnuas no intervalo que contm a raiz. A derivada da funo f(xn) = xn2 a f'(xn) = 2 xn , o que permite deduzir a frmula de Heron imediatamente como caso especial da frmula de Newton. (A frmula de Newton-Raphson obtida tomando uma srie de Taylor para f(x) = 0, retendo os termos de primeira ordem.) Primeiro, vamos escrever uma funo VBA usando as idias aplicadas na funo "Heron". Tomemos o caso especial da funo

f ( x ) = ax 3 + bx 2 + cx + d
partindo com a aproximao x0. Como exemplo particular, calculamos a raiz de f(x) = x3 - 5x2 + x + 3 com x0 = 4 (valor que se tira do grfico da funo).

105

A funo tem os seguintes trs zeros: x1= -0,645751, x2 = 1, x3 = 4,645751

Na maioria dos casos, basta aproximar a derivada por

f '( x)

f ( x + h) f ( x ) h

Na seguinte figura vemos uma implementao do processo de Newton-Raphson numa planilha do Excel utilizando esta expresso para a derivada na coluna E. Pretendemos determinar as trs solues reais da equao x x 0, 2 = 0 .
5

Sabemos (grfico!) que elas devem ficar perto de -0,5; 1; -1. Na planilha buscamos a terceira raiz utilizando como valor initial x0 = -0,9. (Os valores, exatos com quatro casas decimais, so -0,2003; 1,0448; -0,9421.)

106

Uma vez criada a planilha, nos ser somente preciso introduzir a funo em questo na clula B7, o resto faz uma macro, que ser ativada com Ctrl-i. A planilha feita da seguinte maneira: A7: B7: C7: E7: G7: A8: =G$2 aqui introduz-se o termo da funo, em nosso caso =A7^5-A7-0,2 =A7+G$3, copiar at C15 (8 iteraes) =(D7-B7)/G$3, copiar at E15 =A15 (resultado depois de 8 iteraes) =A7-B7/E7, copiar at A15

As colunas A, C e E no se mudam mais. Com uma macro copiamos B7 at B15, depois B7 at D7. Em seguida copia-se D7 at D15. A macro faz isso com Ctrl-i. (J escrevemos varias macros para o Excel 2003. No Excel 2007 utilizamos o caminho Desenvolvedor>Cdigo>Gravar Macro. Na seo Cdigo aparecer depois Parar Macro.) Para analisar, depois, uma nova funo, s preciso introduzir o seu termino na clula B7, dar um valor inicial na G2 e ativar a macro com Ctrl-i. Por exemplo =EXP(-A7)+A7/5-1 para a equao

e x +

x 1 = 0 5
3

ou =A7^3-2*A7-5 para a famosa equao de Wallis x 2 x 5 = 0 (soluo: 2,094552..)

A macro pode ser inspecionada por meio do Cdigo>Visual Basic no Desenvolvedor.

107

Primeiro, selecionada B7 e copiada, com a ala de preenchimento, at B15. Retorna-se para B7 e copia-se o contedo dela para a clula D7. Tambm esta clula ser copiada at a linha 15. Finalmente, estaciona-se o marcador na clula G7 do resultado.

O Mtodo de Bolzano (1781-1848)


No mtodo da bisseo ou mtodo de Bolzano divide-se o intervalo [a,b], onde espera-se o zero da funo em estudo, sucessivamente ao meio at encontrar o zero com a exatido desejada. Seja f(x) = e-x + x/5 -1 a funo cujo zero, z, espera-se que fique entre a = 4 e b = 6. x = (a+b)/2 o centro do intervalo. Tomemos f(a) como valor de comparao. Se o meio x do intervalo j for o ponto zero, ento sero f(x) e f(a)f(x) = 0, e no nos quedaria mais nada para fazer. Mas, geralmente, f(x) no ser 0. (Em nosso caso temos x = 5 e f(5) = 0,00673795...) Se o zero z da funo f ficar do lado esquerdo do meio x, ento temos f(a)f(x) < 0. Neste caso, seguimos buscando s no intervalo [a,x], ou seja, ns escolhemos b = x e calculamos o novo ponto mdio x = (a+b)/2, em nosso exemplo x = (4+5)/2 = 4,5. Se o zero fica direita do ponto mdio, resulta f(a)f(x) > 0. Nos tomamos, ento, a = x e dividimos o intervalo do lado direito ao meio. O processo repetido at que seja obtida uma aproximao para a raiz exata z com uma tolerncia desejada. O mtodo no muito rpido. Se buscarmos uma soluo com a exatido de z x < , teremos de fazer N divises. Pode-se demonstrar que

108

N (ln(b a ) ln( )) / ln 2 1
Ou seja, para um dado intervalo [a,b] so necessrias, no mnimo, N iteraes para se calcular a raiz z com tolerncia . Para obter, em nosso caso, um resultado correto com trs casas decimais ( = 0,001), temos de fazer N > 10 divises (iteraes). A seguinte planilha confirma este clculo, pois o valor x = 4,965... aparece apenas na clula C15.

Uma vez montada a planilha, s colocar a funo na clula E5 e ativar a macro com Ctrl+b. (O cursor deve estar sobre E5.) B5: =E$1; C5: =(B5+D5)/2; D5: =E$2 (copiar C5 at C20 ou mais embaixo) E5: escreva a forma analtica da funo f(x), por exemplo =EXP(-B5)+B5/5-1. Depois, copiamos ela por meio duma macro a F5 e, em seguida, at onde queiramos, por exemplo, at a linha 20. Em B6 temos =SE(E5*F5>0;C5;B5) e em D6: =SE(E5*F5<0;C5;D5). Copie B6 e D6 at B20, D20 ou mais embaixo. A macro "Bolzano" copia s os contedos das colunas E e F at a linha 30

109 O cdigo VBA "Bolzano" com a funo f muito simples

O mtodo de Bolzano (bisseo) no exige o conhecimento das derivadas, mas tem uma convergncia lenta. O mtodo de Newton-Raphson tem, no entanto, uma convergncia extraordinariamente rpida. Para concluir esta seo, d-se, a seguir, uma prova do critrio da convergncia do mtodo da bisseo. Como a cada iterao o intervalo [a,b] dividido ao meio, na n-sima iterao, o comprimento do intervalo dado por bn an = (b a ) .
n

Isso podemos expressar como

xn xn 1 =

ba 2n +1

introduzindo uma tolerncia para o valor da raiz desconhecida z. n = 0,1,2,... Esta uma relao para o error absoluto do clculo e, ao mesmo tempo, nos da uma frmula para o nmero mximo de iteraes necessrias para obter o valor da raiz desconhecida z. Pois, da ltima desigualdade resulta

ba (n + 1)ln 2 ln ba ln 1 n ln 2 .

110 Isso significa, que no mtodo da bisseo conhece-se de ante-mo o nmero mximo de iteraes necessrias para alcanar uma tolerncia desejada.

Mtodo da falsa posio (regula falsi)


A idia deste mtodo a de tomar, em contraste com o mtodo de Newton, dois valores iniciais: x1 e x2, posicionados de tal maneira que a raiz exata da equao f(x) = 0 esteja no intervalo [x1,x2], ou seja, que se cumpra a desigualdade f(x1)f(x2) < 0, porque as ordenadas f(x1) e f(x2) tm sinais opostos. (Trata-se dum mtodo de bisseo junto com uma interpolao linear.) A distncia entre x1 e x2 deve ser o suficientemente pequena para que possamos estar seguros de que no fique outra raiz no intervalo [x1,x2]. Por meio da seguinte frmula de iterao

xn + 2 = xn f ( xn )

xn +1 xn f ( xn +1 ) f ( xn )

calculamos uma srie de novas posies xi que, geralmente, acercam-se pouco a pouco raiz buscada. (Se f uma funo contnua em um intervalo [a,b] e f(a)f(b) < 0, ento o mtodo da falsa posio converge.) Para escrever o cdigo VBA aconselhvel reescrever a frmula de iterao da seguinte forma:

x=

af (b) bf (a) f (b) f (a )

Exemplo: Utilize a macro "falspos", veja mais em frente, para encontrar as razes da funo f(x) = sen(x)e-x . Primeiro, traamos o grfico da funo para ver onde, mais ou menos, esto localizados os zeros. Como demonstra a seguinte figura, podemos esperar duas razes no intervalo [1,7]. (Efetivamente trata-se de e de 2.)

111

112 Falta ainda uma planilha do Excel para a Regula falsi:

Entradas: A7: B7: =F$2; C7: =G$2 =SE(A7="";"";EXP(-A7)*SEN(A7)) { trata-se de f(x) = sen(x)e-x }. Copiar at B20, depois para as clulas D7:D20. Em D7 temos ento =SE(C7="";"";EXP(-C7)*SEN(C7)) =SE(A7="";"";+C7-D7*(A7-C7)/(B7-D7)), copiar at E20 =SE(ABS(A7-C7)>F$3;+C7;""); copiar at A20 =SE(A8="";"";+E7); copiar at C20

E7: A8: C8:

Mtodo de Gauss-Seidel

Para a resoluo de sistemas de equaes lineares existe um mtodo iterativo desenvolvido por Gauss e melhorado por Seidel. Este mtodo funciona, quando os coeficientes dos elementos na diagonal principal tem valores absolutos muito majores do que os coeficientes dos outros elementos. Vejamos o seguinte exemplo:

25 x + 2 y + z = 69 2 x + 10 y + z = 63 x + y + 4 z = 43

113
Primeiro, extramos as variveis da forma

x = (69 2 y z ) / 25 y = (63 2 x z ) /10 z = (43 x y ) / 4


Somando os valores absolutos dos coeficientes das variveis no lado direito, d para a primeira equao (2+1)/25 = 0,12, para a segunda 0,3 e para a terceira 0,5. Pode-se demonstrar, que o mtodo convirja para a soluo exata, se estas somas de coeficientes so menores que 1. (Trata se de um critrio suficiente.) Comea-se dando aos coeficientes das variveis valores iniciais arbitrrios, por exemplo zero. Primeira iterao:

x (1) = (69 2 y (0) z (0) ) / 25 = 2,76 y (1) = (63 2 x (1) z (0) ) /10 = 5,748 z (1) = (43 x (1) y (1) ) / 4 = 8,623
Observe, que os valores j calculados so utilizados para obter o valor da varivel na nova iterao. isso a vantagem do mtodo de Seidel com relao ao mtodo de Gauss. A implementao desse esquema numa planilha do Excel de uma simplicidade surpreendente. Podemos escolher um esquema horizontal com C10: =(69-2*B6B7)/25; C11: =(63-2*C10-B7)/10; C12: =(43-C10-C11)/4. Isso copiamos at conseguir uma convergncia aceitvel. Em nosso caso, paramos depois de 6 iteraes. As solues exatas so x = 2; y = 5, z = 9

114

No esquema vertical utilizamos as frmulas B11: =(69-2*C10-D10)/25; C11: =(63-2*B11-D10)/10; D11: =(43-B11-C11)/4

O nmero das iteraes pode ser bem alto. Por exemplo precisamos para o seguinte sistema 77 Iteraes para obter as solues {2;1;-3}

2x x

=6 =1

+3 y +2 z = 1

3 x +4 y +3 z

Mas, se mudarmos na ltima equao 3z por 4z, obteremos as solues x=2,272727; y=-0,36364; z=-1,0909 depois 29 iteraes apenas.

115

Aplicao de Gauss-Seidel (Distribuio de Temperatura)

Um mtodo parecido ao mtodo de Gauss-Seidel usado para determinar a distribuio de temperatura numa placa metlica quadrada.

As bordas da placa metlica so submetidas a fontes de temperaturas fixas de 0 e 100 graus. A temperatura no interior da rea vai variar (subir) at um valor limite. Temos escolhido 4 pontos no interior da placa cujas temperaturas T1, T2, T3 e T4 devem ser calculadas. (Trabalhamos pelo momento com s 4 pontos, para poder explicar com mais facilidade o mtodo a usar. O mtodo de resoluo desse problema consiste, na prtica, em dividir a superfcie em uma grade com um grande nmero de pontos.) As temperaturas nas bordas no tem de ser 0, pode-se escolher qualquer outro valor. O algoritmo consiste em calcular para cada ponto a mdia das temperaturas dos pontos da vizinhana. T1 = (0+100+T2+T3)/4 = 25; no incio, temos T2 = T3 = 0. Este valor de T1 utilizamos j para calcular T2: T2 = (T1+100+0+T4)/4 = (25+100+0+T4)/4 = 31,25 T3 = (0+T1+T4+0)/4 = (0+25+0+0)/4 = 6,25 T4 = (T4+T2+0+0)/4 = (6,25+31,25+0+0) = 9,375 Os valores de T1,..,T4 recalculamos (iteramos) at que se perceba claramente uma certa tendncia (um valor limite). Fazemos uma segunda iterao com os mesmos valores de contorno: T1 T2 T3 T4 = = = = (0+100+31,25+6,25)/4 = 34,375 (34,375+100+0+9,375)/4 = 35,9375 (0+34,375+9,375+0)/4 = 10,9375 (10,9375+35,9375+0+0)/4 = 11,71875

Agora vamos criar uma planilha. Primeiro, introduzimos os valores de contorno 0 e 100. Depois, escrevemos em B3 a frmula =(A3+B2+C3+B4)/4. Excel vai

116 anunciar que esta frmula contm uma referncia circular. (Quando uma frmula volta a fazer referncia sua prpria clula, tanto direta como indiretamente, este processo chama-se referncia circular. Em nosso caso, queremos calcular B3 = (A3+B2+C3+B4)/4, mas C3 =(B3+C2+D3+C4)/4 e B4 =(A4+B3+C4+B5)/4 precisam o valor de B3, ou seja, eles referem-se de volta B3.) A referncia circular indicada por setas. Mas, voc pode mover-se entre as clulas em uma referncia circular clicando duas vezes nas setas. Em nosso caso, trata se de uma referncia circular desejada. Para poder trabalhar com este "erro", temos que clicar em Office>Excel Options e eleger "Manual" e "Iterao". Cada Iterao efetua-se com F9. (Em 2003 v a Ferramentas> Opes>Clculo e escolha "Manual" e "Iterao".) A frmula em B3 deve ser copiada at F7. Depois de 24 iteraes, aparece em D5 o valor de 25 graus exatos. Depois de mais 5 iteraes, no haver mais mudanas nos valores da planilha.

A determinao da distribuio de temperatura numa superfcie, conhecidas as temperaturas nas fronteiras, obedece seguinte equao (equao de Laplace):

2T 2T + = 0 (1) x 2 y 2
ou tambm na forma

2T = 0
A equao de Laplace pertence as equaes diferenciais parciais elpticas. A equao leva o seu nome em honra a Pierre-Simon de Laplace (1780). No entanto, a equao apareceu pela primeira vez num artigo de Euler sobre hidrodinmica em 1752. A soluo no caso de uma placa de 10*10 unidades de longitude dada por

117
n

T ( x, y ) =

400 n n x senh( (10 y )) sen n senh(n ) 10 10


n= 1,3,5,...

(2)

O mtodo de resoluo desse problema consiste em dividir a superfcie em uma grade de pontos, ou clulas, convertendo-o em um problema de diferenas finitas. Para calcular a srie (2) com Excel, podemos preparar uma planilha da seguinte forma

Soma-se 10 termos da srie (2) para os valores x = 1,3 e y = 2. Os fatores ficam nas colunas A at G. Na coluna H formamos as somas parciais. Na clula H14 temos a soma total 33,91706. Os valores de senh foram calculados com a frmula

senh( x ) = (e x e x ) / 2 (3)
Mas o Excel tem embutido a formula =SENH(), que houvssemos podido usar em vez da formula (3), ou seja, =SENH(B5) em vez de =(EXP(B5)-EXP(-B5))/2 em C5. Observe que em H5 fica =G5, mas em H6: =SOMA(G$5:G6) copiar at H14. A5: 1 A6: =A5+2 B5: =A5*PI() D5: =B5*(10-E$5)/10 E5: =(EXP(D5)-EXP(-D5))/2, ou =SENH(D5) F5: =SEN(B5*E$1/10) G5: =400*E5*F5/(B5*C5), =primeira parte da soma H5: =G5 H6: =SOMA(G$5:G6), = soma dos dois primeiros termos

118