You are on page 1of 21

153

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 )

usando 6 faixas, a macro deve ser chamada como

=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)

A implementao a seguir faz clara diferena entre os termos par e impar.

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

Aplicao: Sries de Fourier


Uma srie de senos e co-senos do tipo

a0 + (an cos nx + bn sen nx) 2 n =1

chamada de srie trigonomtrica. Se esta srie converge, ela representa ento uma certa funo f(x) que se pode escrever como

a0 f ( x) = + (an cos nx + bn sen nx) (3) 2 n =1


Podemos calcular os coeficientes an e bn, se conhecemos f(x). As frmulas so

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

= = = = = = = =

Aqui temos um exemplo: queremos calcular com Simpson1 o coeficiente A5:

Os valores para n = 30, 50, 100 podemos ver em B2:B4

Os valores numricos na tabela foram calculados com n = 30.

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

159 Para Si obtm-se o valor de 0.285 unidades de rea.

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)

160 Compare a planilha a seguir onde temos todas as frmulas incorporadas.

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

utilizando n = 100. (Copiar at linha 110)

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.

Interpolao de Newton (1643-1727)


Vamos supor que, por meio de um experimento, temos uma tabela de dados: x y -2 3 -1 0 0 -2 1 6 2 1

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.

Interpolao de Lagrange (1736-1813)


Se pode demonstrar que sempre existe o polinmio p(x) que interpola a funo f(x), desconhecida, em x0, x1, ..., xn e que nico. No entanto, existem vrias formas para se obter tal polinmio. Ao lado do mtodo de Newton bem conhecida a forma de interpolao segundo Lagrange que consta de uma soma de polinmios especiais (os polinmios de Lagrange). Buscamos, agora, um polinmio da forma

p ( x) = y0 L0 ( x ) + y1L1 ( x) + ... + yn Ln ( x)
Calculam-se os polinmios de Lagrange, Li(x), pela seguinte expresso:

Li ( x) =

( x x0 )( x x1 )...( x xi 1 )( x xi +1 )...( x xn ) ( xi x0 )( xi x1 )...( xi xi 1 )( xi xi +1 )...( xi xn )

Tambm podemos escrever 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:

No caso de muitos dados (experimentais), prefervel t-los numa planilha:

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.

170 Na verso portuguesa do Excel, escreve-se CORRESP com a sintaxe CORRESP(valor_procurado;matriz_procurada;tipo_correspondncia)

Valor_procurado pode ser um valor (nmero, texto ou valor lgico) ou uma


referncia de clula de um nmero, texto ou valor lgico.

Matriz_procurada

um intervalo contguo de clulas que contm valores

possveis de procura. Matriz_procurada precisa ser uma matriz ou uma referncia de matriz. A Matriz_procurada deve ser posicionada em ordem ascendente.

Tipo_correspondncia o nmero -1, 0 ou 1. Se tipo_correspondncia for 1,


CORRESP localizar o maior valor que for menor do que ou igual a valor_ procurado. Para poder usar MATCH num macro VBA, devemos introduzi-lo pelo objeto Application. Veja o captulo 7 onde isso foi usado e explicado.

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.)

171 Finalmente, aplicaremos o programa "Pontos" do ltimo captulo interpolao de Lagrange:

Com os trs pontos padro (1;4), (3;6), (4;12) temos a seguinte planilha:

172

Algumas consideraes tericas

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)

v(t/2 = A(t/2)2 + Bt/2 + v(0) v(t) = A(t)2 + Bt + v(0)

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)

Por outro lado temos

173
o t

v(t)dt = ot (At2+Bt+C)dt = A(t)3/3 + B(t)2/2 + Ct

Fazendo uso de (4) e (5) resulta


o t

v(t)dt = x(t) x(0) = t [v(0) + 4v(t/2) + v(t)]/6

(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

You might also like