Professional Documents
Culture Documents
Captulo 11
Integrao e Interpolao
(Veja Applets para este tema no site http://www.cidse.itcr.ac.cr/cursos-linea/ NUMERICO/index.htm) bem conhecido que a maioria dos integrais definidas s podem ser calculadas numericamente. Neste capitulo, vamos estudar alguns mtodos numricos do tipo Newton-Ctes, que empregam os valores de f(x) para valores de x uniformemente espaados. Dois mtodos simples desse grupo so a regra dos trapzios e a regra de Simpson Regra dos trapzios Para obter a regra geral, dividimos a rea debaixo da curva y = f(x) entre x = a = x0 e x = b = xn em n faixas da mesma largura h = (b-a)/n. A integral ser aproximada pela seguinte soma de reas de trapzios:
b
h h f ( x)dx = ( f ( x0 ) + f ( x1 )) + ( f ( x1 ) + f ( x2 )) + ... 2 2
(1)
h ( f ( xn 1 ) + f ( xn )) = 2 h ( f ( x0 ) + f ( xn )) + h( f ( x1 ) + f ( x2 ) + ... + f ( xn 1 )) 2
A ltima expresso a regra dos trapzios composta. Nas duas figuras seguintes criamos duas diferentes funes VBA para avaliar esta frmula.
154 Para a =1, b = 2 , n = 6 obteremos o resultado 0,106189. Aumentando o valor de n, dar, evidentemente, melhores aproximaes. Na seguinte funo utilizamos o mtodo "Run", que requer um argumento nomeado: o nome da macro ou procedimento para ser executada, em nosso caso "Funcao". O mtodo Run retorna o que for retornado pela macro (pela Function Funcao) chamada. Os objetos passados so os valores de x.
O programa anterior parece ser prefervel para a maioria dos usurios. Para
2
calcular
1 + x2 ,
ln( x )
=Trapezio_Run( 1;2;6;"Funcao"):
155
Regra de Simpson
Como foi feito com a regra dos trapzios, deve-se subdividir o intervalo de integrao [a,b] em n subintervalos iguais de largura h. Com a regra de Simpson, o nmero n de subintervalos deve ser, porm, sempre par. A frmula composta de Simpson dada por
f ( x)dx 3 ( y0 + 4 y1 + 2 y2 + 4 y3 + 2 y4 + ...
+ 2 yn 2 + 4 yn 1 + yn )
(2)
Mas, a seguinte macro mais curta devido a um simples truco. Utiliza-se uma varivel w = 6 - w que, no programa, somente pode tomar os valores 2, 4, 2, 4 ... se comea-se com w = 4. Observe que o programa trabalha com uma soma s e que utilizamos somente um For To Loop.
156
chamada de srie trigonomtrica. Se esta srie converge, ela representa ento uma certa funo f(x) que se pode escrever como
a0 =
1 +
f ( x)dx (4)
an = bn =
1 +
f ( x)cos nx dx (n 0)
(5),(6)
f ( x)sen nx dx (n > 0)
Na maioria dos casos, impossvel calcular as integrais analiticamente. Em tais situaes devemos aplicar uma regra numrica, por exemplo a de Simpson.
157 Para poder fazer uma comparao entre integrao analtica e numrica, usamos uma funo simples, a saber f(x) = x2. Queremos, ento, desenvolver a funo f(x) = x2 em uma srie de Fourier em co-senos no intervalo (-,+). (Os coeficientes bn se anulam todos, se f(x) for par. Isso certo para f(x) = x2.) Utilizando o programa Simpson (ou Simpson1) podemos calcular os coeficientes an na tabela a seguir. Os resultados analticos so a0 = 22/3 e an = (-1)n (4/n2) para n > 0. numrico 3,2899 -3,9999 0,9995 -0,4432 0,2477 -0,1560 0,1046 -0,0715 analtico 3,2899 -4,0000 1,0000 -0,4444 0,2500 -0,1600 0,1111 -0,0816
A0 A1 A2 A3 A4 A5 A6 A7
= = = = = = = =
158 A verso como sub-rotina permite tambm a produo de uma tabela. O programa l os valores de a, b, n da planilha.
O desenvolvimento da funo f(x) = x2 em uma srie de Fourier em co-senos no intervalo (-,+) podemos escrever, ento, assim f(x) = x2 3,2899 - 3,9999cos(x) + 0,9995cos(2x) - 0,4432cos(3x) + + 0,2477cos(4x) 0,16cos(5x) O valor de , podemos calcular no cdigo VBA com Pi = 4*Atn(1), mas, na planilha, 4*ATAN(1).
Planilha de Excel
Tambm vale a pena criar uma planilha para trs formulas (Trapzios, Tangentes, Simpson). Repetimos as bases tericas utilizando as somas de Riemann. (A seguinte figura foi produzida em MuPAD cuja descrio pode-se encontrar no site do autor em http://www.geocities.com/Athens/Agora/6594/ .) Na figura superior esto desenhados os retngulos que tocam a curva de por debaixo. A soma das reas (soma inferior de Riemann) Si = (y0 + y1 + y2 + ... + yn-1)h Na figura temos n = 10 e a funo a parbola y = x2. x0 = 0 e x10 = 1.0
A soma superior, Su , dada por Su = (y1 + y2 + y3 + ... + yn)h Fazendo o clculo, obtemos Su = 0.385. O valor exato da integral 1/3, e o valor mdio Sm = (Si + Su)/2 = 0,335 muito prximo ao valor exato. fcil comprovar que este valor mdio, Sm , coincide com a frmula dos trapzios. Uma melhoria obteremos tambm, se usamos sempre duas faixas e se traamos por ymdio a tangente curva (ser preciso, utilizar um nmero par de faixas!). A frmula resultante ser St = 2h(y1 + y3 + y5 + ... + yn-1)
A frmula de Simpson dada pela seguinte expresso Simp = (2Sm + St)/3 A funo y = x2 (=A10*A10) fica na clula B10. Na clula D10, temos o resultado =I$2*(SOMA(B10:B20)- (B10+B20)/2). Em I10 fica =2*I$2*SOMA(F10:F20) e na I11 temos =(2*D10+I10)/3. Um problema reside no fato de que a planilha deve ser modificada, se trocarmos o valor de n. No caso n = 20, temos de copiar as frmulas at a linha 30 e as funes nas clulas D10, I10 devem conter B30 em vez de B20 e F30 em vez de F20. Sem dvida, nestes casos prefervel utilizar as macros que foram desenvolvidas mais acima. Exerccio: Calcule por meio da planilha a seguinte integral elptica:
I=
48
1 + cos 2 x dx
161 Resultados: Trapzios: 58,46239; Tangentes: 58,487679; Simpson: 58,4708211 Existem mtodos melhores dos que utilizamos acima, por exemplo o mtodo de Romberg, que d o valor I 58,47047 com 4 casas decimais corretas.
Suponhamos, alm disso, que se queira conhecer o valor de y para um x no tabelado. O mtodo de Newton resolve este problema determinando um polinmio, p(x), que passe pelos pontos dados e que permita determinar, aproximadamente, valores de y para pontos intermdios. (Devemos distinguir entre Interpolao e Regresso. Mais frente, falando sobre mtodos estadsticos, vamos estudar algumas tcnicas de tratamento e anlise de dados. Obviamente, a regresso vai ser uma destas tcnicas. Dentre os processos matemticos que resolvem problemas da regresso, com certeza, um dos mais utilizados o Mtodo dos Mnimos Quadrados de Gauss. Neste mtodo trata-se de determinar uma funo que passe o mais "prximo possvel" dos pontos dados e no se pede que passe pelos pontos mesmos.) Para no nos perdermos em consideraes tericas, apresentarei aqui a frmula de Newton para a obteno dum polinmio interpolador. (Fala-se de interpolao polinomial. Estes mtodos, por exemplo os de Newton, Lagrange e Bernstein, diferem uns dos outros na tctica aplicada para determinar o polinmio interpolador.) Consideremos uma tabela com n+1 pontos (x0,y0), (x1,y1), ... ,(xn,yn) e desejamos determinar um polinmio da forma p(x) = a0+a1(x-x0)+a2(x-x0)(x-x1)+ ... +an(x-x0)(x-x1)(x-xn-1) Pede-se determinar os coeficientes a0, a1, ..., an. O polinmio interpolador da tabela acima tem, como demonstraremos, a forma p(x) = -2 + (25x + 38x2 - 7x3 8x4)/6
162 Para um programa como MuPAD, Maple, Mathematica, etc. no nenhum problema calcular tal polinmio. Em MuPAD, por exemplo, temos
X um valor no tabelado. O mtodo de Newton adapta-se particularmente bem estrutura de uma planilha como o Excel, pois ele funciona segundo o seguinte esquema:
As expresses do lado direito significam a0 = y0 a1 = (y1 y0)/(x1 x0) := [x0,x1,y] a2 = ((y2 y1)/(x2 x1) (y1 y0)/(x1 x0))/(x2 x0) := [x0,x1,x2,y] ..................... an = [x0,x1,...,xn,y]
163 As entradas para esta planilha so F4: F6: F8: E5: x0 (=1); x1 (=3); x2 (=4); =F6F4; G4: G6: G8: E7: y0 (=3) y1 (=1) y2 (=6) =F8-F6; D6: =F8-F4
No lado direito (colunas H e I) calculamos as "diferenas divididas": H5: I6: =(G6-G4)/E5 (=a1); =(H7-H5)/D6 (=a2) H7: =(G8-G6)/E7
No numerador das fraes temos a diferena de valores da coluna anterior, no denominador temos a diferena de valores x, que encontramos no lado esquerdo do esquema na posio correspondente (por exemplo: a clula D6 corresponde clula I6). A partir desta regra, podemos construir para qualquer nmero de valores observados o esquema das diferenas divididas. Compare a seguinte planilha que contm os 5 valores j considerados acima.
O polinmio resultante j foi calculado pelo MuPAD: p(x) = 3 -3(x+2)+0.5(x+2)(x+1)+1.5(x+2)(x+1)(x)-4/3(x+2)(x+1)(x)(x-1) p(x) = -2 (25x + 38x2 7x3 8x4)/6 O grfico deste polinmio segue mais frente. Na realidade, podemos abrir mo do lado esquerdo do esquema e utilizar um esquema escalonado mais simples, veja a planilha a seguir, que vai servir para at 8 pares de valores observados (C4:D11).
164 Na coluna E temos: E4: =(D5-D4)/(C5-C4); E5: =SE(CONT.NM($C$4:$C$11)>=3;(D6-D5)/(C6C5);" ") A funo CONT.NM conta quantas clulas contm nmeros. No caso resulta CONT.NM(C4:C11) = 5, ento colocamos na clula E5 o resultado de (D6-D5)/(C6-C5) = (-2-0)/(0-(-1))= -2. E6: =SE(CONT.NM($C$4:$C$11)>=4;(D7-D6)/(C7-C6);" ") E7: =SE(CONT.NM($C$4:$C$11)>=5;(D8-D7)/(C8-C7);" ") E8: =SE(CONT.NM($C$4:$C$11)>=6;(D9-D8)/(C9-C8);" "), aqui escreve-se nada na clula E8, pois CONT.NM($C$4:$C$11)>=6 falso. Na clula E10 temos a ltima frmula nesta coluna: =SE(CONT.NM($C$4:$C$11)>=8;(D11D10)/(C11-C10);" ")) F4: =SE(CONT.NM($C$4:$C$11)>=3;(E5-E4)/(C6-C4);" ") F5: =SE(CONT.NM($C$4:$C$11)>=4;(E6-E5)/(C7-C5);" "). J podemos reconhecer o esquema detrs das frmulas. s necessrio copilas para baixo e aumentar "manualmente" os nmeros nas relaes >= . A ltima frmula fica em K4 e reza =SE(CONT.NM($C$4:$C$11)=8;(J5-J4)/ (C11-C4);" ")
Obviamente, muito desejvel ter uma macro VBA que capaz de fazer tudo isso mais rpido e praticamente com um s clique da mouse. O programa VBA que segue baseia-se num artigo de R. Pfeifer no site http://www.arstechnica.de/computer/msoffice/vba/vba0094.html (em alemo). Ele se mantm ao esquema pouco apresentado e trabalha com dois listas (Arrays) embutidas na macro. Desafortunadamente, o programa no pode determinar, explicitamente, o polinmio interpolador, como o vimos acima no caso do programa MuPAD. Porm, ele nos permite determinar o valor de p(x) para qualquer x fornecido por meio de uma InputBox. A sub-rotina "valor" contm os Arrays x, y dos dados observados e a funo "InterNewton" calcula para cada valor x a ser interpolado primeiro o polinmio que depois avaliado usando o mtodo de Horner, que estudamos no ltimo captulo.
165
Para produzir uma tabela inteira de valores interpolados, que nos permitiria mostrar tambm a curva interpolador, precisamos de desenhar outra macro, assim como a nossa "Interpol", veja o prximo programa. Na seguinte figura vemos o grfico do polinmio p(x) = -2 (25x + 38x2 7x3 8x4)/6, decorado com rtulos chamativos (veja embaixo para saber como se faz) nos marcadores dos pontos observados. Mas, o polinmio no foi utilizado. Os valores y na coluna B foram calculados pelo programa seguinte.
166
Uma vez calculadas as coordenadas, e colocadas automaticamente nas colunas A e B, inserimos os valores observados na coluna C. Em seguida selecionamos as clulas A5:C5 at C51 (com F5) e com Inserir>Disperso>Somente com Marcadores fazemos um grfico com pontos isolados. Clique, em seguida, sobre os pontos calculados e escolha Alterar Tipo de Grfico. Deve-se eleger Disperso>Linhas Suaves para obter algo parecido ao seguinte grfico.
167 Finalmente clique em um dos marcadores e use Adicionar Rtulos de Dados ... e, depois, Formatar Rtulos de Dados... para mold-los segundo o seu gosto.
p ( x) = y0 L0 ( x ) + y1L1 ( x) + ... + yn Ln ( x)
Calculam-se os polinmios de Lagrange, Li(x), pela seguinte expresso:
Li ( x) =
( x xk ) ; k i para i = 0,..., n xk ) k =0 i
(x
As frmulas tm um aspecto pouco amigvel, mas a aplicao bastante simples. Na planilha utilizamos para cada Li(x) uma nova coluna e os coeficientes de p(x) so os valores yj dos pares experimentais dados. Assim, para os trs pares (x0;y0) = (1;4), (x1;y1) = (3;6) e (x2;y2) = (4;12), o polinmio interpolador vai ser p(x) = 4L0(x) + 6L1(x) + 12L2(x). Observe, que no clculo de Li(x) fica excludo, no numerador, o valor de xi. No denominador aparecem todos os xi observados. Exemplo: Dados os pontos experimentais (1;4), (3;6), (4;12) Determine o polinmio de Lagrange para os pontos dados. Resoluo: L0 = (x-x1)(x-x2)/[(x0-x1)(x0-x2)]= (x-3)(x-4)/[(1-3)(1-4) L0 = (x2-7x+12)/6
168 L1(x) = (x-1)(x-4)/[(3-1)(3-4)] = (x2-5x+4)/(-2) L2(x) = (x-1)(x-3)/[(4-1)(4-3)] = (x2-4x+3)/3 Assim obtemos p(x) = 4L0+6L1+12L2 = 5x2/3 17x/3 + 8 Na planilha, temos na coluna A os valores de x para os quais queremos calcular os valores y (A2: =A1+0,1). Em B1 fica y0 = 4. A1 copiamos at A31 e na coluna B inserimos, nos lugares correspondentes, os valores y observados. C1: =($A1-3)*($A1-4)/((1-3)*(1-4)) (=L0). Esta frmula copiamos na D1 e E1 e depois a editamos: D1: =($A1-1)*($A1-4)/((3-1)*(3-4)) E1: =($A1-1)*($A1-3)/((4-1)*(4-3)) F1: 4*C1+6*D1+12*E1 (= p(x))
A representao no grfico deve conter os 3 pontos observados e todos os pontos calculados na coluna F1. Visto que esta coluna no adjacente, preciso fazer a seleo das clulas com o nosso mtodo F8-F5, que introduzimos no captulo 5. Em Inserir ser preciso eleger, primeiro, XY Linhas Suaves, e depois XY com Marcadores, para ver os pontos experimentais. (Os valores calculados constituem, agora, a Srie2 e no, como no caso da planilha de Newton, a Srie1.) No ser difcil generalizar a planilha para acomodar mais pontos.
169 O cdigo VBA para a interpolao de Lagrange pode ter a seguinte forma:
Na clula E3 inserimos o valor de x buscado e na clula H3 colocamos a frmula =Lagrange(...) com a qual calculamos o valor de y correspondente. O programa a seguir utiliza a funo MATCH do Excel.
Matriz_procurada
possveis de procura. Matriz_procurada precisa ser uma matriz ou uma referncia de matriz. A Matriz_procurada deve ser posicionada em ordem ascendente.
Se buscarmos na lista x = {-2,-1,0,1,2,3,4} o valor 1,5, ento a varivel pos assumir o valor 5 e i correr de 4 at 7, ou seja, o programa utilizar os 4 valores 1, 2, 3, 4 para calcular um polinmio de terceiro grau. Trata-se de uma interpolao cbica. (O programa no funciona com menos de 4 pontos, e sempre utiliza 4 pontos.)
Com os trs pontos padro (1;4), (3;6), (4;12) temos a seguinte planilha:
172
A regra de Simpson tem grande utilidade na matemtica numrica. Mais frente vamos us-la, por exemplo, no contexto das equaes diferenciais, discutindo os mtodos de Runge-Kutta. Por isso ser til dar uma deduo da regra com a notao da mecnica.
Uma partcula se move em t segundos de um ponto x(0) at x(t). A figura mostra trs valores da velocidade para trs instantes 0, t/2 e t. A verdadeira curva da velocidade ignoramos, por isso a substitumos por uma parbola que passa por P1, P2, P3. A equao da parbola v(t) = At2 + Bt + C Devemos determinar os trs coeficientes. Para t = 0 temos Para t = t/2 temos Para t = t temos v(0) = C (1) (2) (3)
A seguinte funo vai mostrar-se til, a definimos da seguinte maneira D:= v(0) + 4v(t/2) + v(t) = 6C + 2A(t)2 + 3Bt da resulta tD/6 = Ct + A(t)3/3 + B(t)2/2 (5) (4)
173
o t
(6)
Isto a primeira regra de Simpson ou tambm conhecida como a regra do 1/6. (s vezes fala-se da regra do 1/3, pois quando se utiliza h = t/2 como largura de um subintervalo, resulta otv(t)dt = h[v(0) + 4v(h) + v(2h)]/3.) A regra de Simpson que foi utilizada acima a regra de Simpson composta, pois se subdivide o intervalo de integrao [a,b] em n subintervalos iguais de largura h e a cada par de subintervalos aplica-se a 1a regra de Simpson. (Como a regra de Simpson aplicada em pares de subintervalos, o nmero n de subintervalos deve ser sempre par.) Exemplo: Queremos calcular a integral da seguridade estadstica definida por
S ( x) =
x x
1 f (t )dt com f (t ) = e 2
t 2 2
por meio da regra de Simpson composta utilizando (6) repetidas vezes. Soluo: Criamos uma planilha do Excel com o seguinte aspecto:
O mesmo resultado obtemos com o programa "Simpson". A frmula do 1/6 fica em E11: =H$3*(C10+4*D11+C11)/6, copiar at E30. O resultado em G11 calculamos como =SOMA(E11:E30). B10: =A10-H$4, B11: =B10+H$3