Métodos Computacionais Numéricos e Algébricos com Maple Integração Numérica Fernando Deeke Sasse CCT - UDESC fernandodeeke@gmailcom Integração Numérica Quadratura de Gauss Métodos de Newton-Cotes Introdução As fórmulas de Newton-Cotes formam os esquemas mais comuns de integração numérica Eles consistem na estratégia de substituir um função complicada ou que não possui primitiva ou dada numa tabela por uma função aproximada que é fácil de integrar ou seja sendo um polinômio da forma O método mais simples consiste em escolher um polinômio constante que corresponde à soma de Riemann um conceito usado para introduzir o conceito de integral definida Normalmente a aproximação é feita num pequeno intervalo Uma integral definida num intervalo grande é então realizada somando-se as integrais aproximadas em um dado número de subintervalos Tal soma de Riemann pode ser realizada de diferentes modos correspondentes à posição escolhida que define a altura de cada retângulo Por exemplo consideremos a integral: O valor exato desta integral é with(student[calculus]): ApproximateInt(x^2 'partition' = 4 'method' = lower 'partitiontype' = subintervals 'output' = 'plot' 'boxoptions' = ['filled' = ['transparency'=5]]);
x A lower Riemann sum approximation of A soma de Riemann superior é dada por value(%); f x dx where f x = x 2 and the partition is uniform The approximate value of the integral is 2875 Number of partitions used: 4
x A lower Riemann sum approximation of f x dx where f x = x 2 and the partition is uniform The approximate value of the integral is 2875 Number of partitions used: 4 ApproximateInt(x^2 'partition' = 4 'method' = upper 'partitiontype' = subintervals 'output' = 'plot' 'boxoptions' = ['filled' = ['transparency'=5]]);
x An upper Riemann sum approximation of Uma melhor aproximação consiste na soma de Riemann de ponto médio: ApproximateInt(x^2 'partition' = 4 'method' = midpoint 'partitiontype' = subintervals 'output' = 'plot' 'boxoptions' = ['filled' = ['transparency'=5]]); f x dx where f x = x 2 and the partition is uniform The approximate value of the integral is 46875 Number of partitions used: 4
x A midpoint Riemann sum approximation of f x dx where f x = x 2 and the partition is uniform The approximate value of the integral is 32825 Number of partitions used: 4 Método Trapezoidal (2) Um método que dá resultados ainda melhores que o da soma de Riemann é o chamado método do trapézio que consiste em aproximar a integral da função em cada intervalo por um polinômio de primeiro grau A integral da função num intervalo qualquer é dada então pela soma das áreas de todos os trapézios Por exemplo consideremos novamente a integral: Tomando novamente 4 intervalos temos ApproximateInt(x^2 'partition' = 4 'method' = trapezoid 'partitiontype' = subintervals 'output' = 'plot' 'boxoptions' = ['filled' = ['transparency'=9]]);
x An approximation of f x dx using trapezoid rule where f x = x 2 and the partition is uniform The approximate value of the integral is 34375 Number of partitions used: 4 O valor exato da integral é Deduziremos agora uma fórmula para calcular a integral de uma função qualquer divergente em um dado intervalo Num dado subintervalo a área do correspondente trapézio é dada por não Suponhamos que temos pontos igualmente espaçados Consequentemente temos subintervalos de tamanho dado por A integral de no intervalo é dada por Usando a aproximação do trapézio em cada subintervalo temos
= Exemplo Calcule a integral utilizando o método do trapézio com Definamos o integrando: f:=x-x^2; O espaçamento dos intervalos para n:=:a:=:b:=: h:=(b-a)/n; Definimos a malha de pontos: X:=[seq(a+i*hi=n)]; intervalos é dado por (22) (222) (223) Implementemos a fórmula do método do trapézio: S:=h/2*(f(X[])+f(X[n+])+2*sum(f(X[k])k=2n)); (224) Definamos um procedimento que tem como entrada uma função um intervalo e o número de nós restart: trapezio:=proc(fabn) local hkxsg; g:=unapply(fx): h:=(b-a)/n; X:=[seq(a+i*hi=n)]; S:=evalf(h/2*(g(X[])+g(X[n+])+2*sum(g(X[k])k=2n))) ; end: G:=x^2; Portanto com trapezio(g2); 33375 Com trapezio(g); 333333335 Observamos que a convergência para o valor correto /3 é muito lenta (225) (226) (227) Erro no método trapezoidal simples Esta dedução segue este vídeo (http://wwwyoutubecom/watch?v=naiguh5i3io) do Prof L A F Coelho Consideremos o erro cometido na aplicação do método trapezoidal aplicado a
um único intervalo Se pudéssemos saber que a primitiva de é poderíamos escrever para a integral no intervalo : A integral aproximada é dada pela fórmula da área do trapézio: O erro cometido na integração numérica é então definido por Usando a expansão em série de Taylor temos Como Portanto a integral exata torna-se Por outro lado de modo que e Truncando a série em por temos que de acordo com o teorema de Taylor o erro é dado onde Erro no método trapezoidal composto Somando os erros individuais para os diversos trapézios temos usando o fato de que para nós igualmente espaçados / sendo um número no intervalo no intervalo e escrever: Na prática podemos estimar o erro maximizando
Na fórmula acima o somatório começa em pois temos pontos e intervalos Cada é definido dentro do intervalo Exemplo Utilizando a regra do trapézio calcule com erro de no máximo Solução Para calcular o erro máximo cometido devemos maximizar a segunda derivada de ou seja restart: f:=exp(-x^3+x^2); A segunda derivada desta função é dada por d2f:=diff(fx$2); Façamos o gráfico desta função: plot(abs(d2f)x=2); 3 (228) (229) 2 2 x Vemos imediatamente que o valor máximo procurado ou seja Como M:=abs(evalf(subs(x=d2f))); (22)
devemos agora calcular : eq:=^(-5)=(2-)^3*m/(2*n^2); (22) sol:=solve(eqn); (222) Portanto se o erro será garantidamente menor que Calculemos agora a integral usando a fórmula Temos aqui : n:=59: a:=:b:=2: h:=(b-a)/n: F:=x-exp(-x^3+x^2); X:=[evalf(seq(a+h*ii=59))]: Portanto Iap:=h/2*(F(X[])+F(X[6])+2*sum(F(X[i])i=259)); O Maple fornece uma aproximação ótima para esta integral: Iap2:=evalf(int(F(x)x=2)); Comparando este resultado com o do método do trapézio temos: Erro:=Iap-Iap2; Ou seja aproximadamente < (223) (224) (225) (226) Exemplo 2 Utilizando a regra do trapézio calcule com erro de no máximo /2 restart: f:=sin(x)/x; (227) A segunda derivada desta função é dada por d2f:=diff(fx$2); (228) Façamos o gráfico desta função: plot(abs(d2f)x=);
x Vemos imediatamente que o valor máximo procurado ou seja Como M:=abs(evalf(limit(d2fx=))); (229) devemos agora calcular : eq:=^(-5)/2=(-)*m/(2*n^2); (222) sol:=solve(eqn); (222) Portanto se o erro será garantidamente menor que /2 Calculemos agora a integral usando a fórmula Temos aqui : n:=75: a:=:b:=: h:=(b-a)/n: F:=x-sin(x)/x; (2222) X:=[evalf(seq(a+h*ii=75))]: Portanto Iap:=h/2*(limit(F(t)t=)+F(X[76])+2*sum(F(X[i])i=275)) ; (2223)
O Maple fornece uma aproximação ótima para esta integral: Iap2:=evalf(int(F(x)x=)); Comparando este resultado com o do método do trapézio temos: Erro:=Iap-Iap2; (2223) (2224) (2225) Ou seja aproximadamente < Exercício Calcule a integral utilizando o método trapezoidal composto com erro menor que Métodos de Simpson-Kepler O método do trapézio consistia em aproximar a área sob a curva entre por um polinômio interpolante de primeiro grau (reta) A partir de agora vamos generalizar este procedimento utilizando polinômios de graus superiores Método de Simpson /3 simples Aqui aproximamos a função por um polinômio do segundo grau como mostrado na Fig Ou seja com = Fig
Necessitamos de três pontos que serão interpolados por Além de e escolheremos o ponto médio Os coeficientes deste polinômio são definidos pelas condições de interpolação: Mais explicitamente restart: p:=x-a+a*x+a2*x^2; EQ:=[p(a)=f(a)p((a+b)/2)=f(m)p(b)=f(b)]; (23) (232) sol:=solve(eq[aaa2]); (233) O polinômio interpolante é então dado por assign(sol): p(x); (234) A integral correspondente é dada por int(p(x)x=ab); (235) simplify(%); (236)
factor(%); (236) (237) Portanto = Como = Método de Simpson /3 composto O método desenvolvido acima pode agora ser aplicado de maneira composta Na Fig 2 ilustramos tal aplicação para Fig 2 (Extraído de Pauls Online Notes) Temos então três parábolas que interpolam cada tríade e a integral total é a soma das áreas sob cada parábola: com
Portanto Notemos que os pontos com índices ímpares têm coeficiente 2 e os índices têm coeficiente 4 De modo geral temos Para implementar esta fórmula no Maple devemos notar que os pontos da malha têm índices que começam com índice e não Vamos então reescrever a fórmula acima como Exemplo 3 Resolvamos novamente a integral do Exemplo agora utilizando o método de Simpson /3 Tomemos 58 intervalos para fazer uma comparação deste resultado com o do Exemplo restart: f:=x-exp(-x^3+x^2); (238) a:=:n:=58:h:=evalf(/n): x:=[evalf(seq(a+h*ii=n))]: A integral aproximada é então dada por Iap :=(/3)*h*(f(x[])+4*(sum(f(x[2*j])j=(/2)*n))+2* (sum(f(x[2*k+])k=(/2)*n-))+f(x[n+])); (239) O valor dado pelo Maple é: Iap2:=evalf(int(f(t)t=2)); (23) O erro é dado por Iap-Iap2; (23) Ou seja o erro diminuiu quadraticamente relativamente àquele cometido pelo método trapezoidal com um número similar de intervalos De fato o erro no método de Simpson /3 composto é dado por Exemplo 4 Resolvamos a integral
pelo método de Simpson /3 composto com erro de até restart: f:=exp(-sin(x)); d4:=diff(fx$4); (232) (233) plot(d4x=); x Certamente o maior valor em módulo desta função é 3 em m:=evalf(subs(x=d4)); Então eq:=^(-5)=/(8*n^4)*m; (234) (235) e o número de intervalos deve ser nn:=fsolve(eqn); (236) Portanto devemos ter ao menos ( deve ser sempre um número par neste método) Definamos F:=unapply(fx); (237) Com a:=:n:=8:h:=evalf(/n);
x:=[evalf(seq(a+h*ii=n))]; (238) (239) a integral aproximada é então dada por Iap :=(/3)*h*(F(x[])+4*(sum(F(x[2*j])j=(/2)*n))+2* (sum(f(x[2*k+])k=(/2)*n-))+f(x[n+])); (232) A integral dada pelo Maple é Iap2:=evalf(int(F(t)t=)); O erro é Iap2-Iap; que é menor do que o limite superior estabelecido (como esperado) (232) (2322) Método de Simpson-Kepler 3/8 simples Aqui aproximamos a função por um polinômio do terceiro grau que intepola 4 pontos entre e como mostrado na Fig 3 (x y ) y = p(x) (x y ) (x y ) 2 2 (x y ) 3 3 y = f(x) x x x x 2 3 Fig 3 Regra de Simpson 3/8 x Ou seja com = Suponhamos que os quatro pontos que serão interpolados por são igualmente espaçados:
Ou seja Fazendo e os coeficientes deste polinômio são definidos pelas condições de interpolação: Mais explicitamente restart: X:=[aa+ha+2*ha+3*h]; (2323) Y:=map(fX); (2324) Geramos agora o polinômio que interpola estes pontos: p:=interp(xyx); (2325) Integrando no intervalo temos I:=int(px=aa+3*h); (2326)
Este resultado pode ser consideravelmente simplificado: I2:=simplify(I); (2327) Portanto = com Método de Simpson-Kepler 3/8 composto Fazendo a composição do método de Simpson-Kepler 3/8 no intervalo intervalos de comprimento temos com O erro tem a seguinte expressão: com Este erro é da mesma ordem daquele cometido no método de Simpson /3 Notemos que o número de intervalos agora pode ser ímpar mas deve ser divisível por 3 Exemplo 5 Resolvamos a integral pelo método de Simpson 3/8 composto com erro de até restart: f:=exp(-sin(x)); d4:=diff(fx$4); (2328) (2329) plot(d4x=);
x Certamente o maior valor em módulo desta função é 3 em eq:=^(-5)=/(8*n^4)*3; Então (233) e o número de intervalos deve ser nn:=fsolve(eqn); (233) Portanto devemos ter ao menos ( deve ser sempre um número divisível por 3 neste método) Definamos F:=unapply(fx); (2332) Com a:=:n:=9:m:=n/3;h:=evalf(/n); x:=[evalf(seq(a+h*ii=n))]; (2333) (2334) a integral aproximada é então dada por (lembrando que devemos deslocar o índice de uma unidade para fazer a implementação): Iap :=(3/8)*h*(sum(F(x[3*k-2])+3*F(x[3*k-])+3*F(x[3*k])+ F(x[3*k+])k=m)); (2335) A integral dada pelo Maple é Iap2:=evalf(int(F(t)t=)); (2336) O erro é Iap2-Iap; (2337) que é menor do que o limite superior estabelecido (como esperado) Exercícios
Use a regra de Simpson /3 com para calcular a integral de de a Calcule o erro verdadeiro e o erro estimado 2 Resolva a integral (a) Analiticamente (b) Usando uma única aplicação da regra do trapézio (c) Usando múltiplas aplicações da regra do trapézio com e (d) Uma única aplicação da regra de Simpson /3 (e) Múltiplas aplicações da regra de Simpson /3 com Em cada item estime o erro e compare com o erro exato comparando com (a) 3 Calcule a integral dos dados tabelados abaixo usando (a) a regra trapezoidal (b) a regra de Simpson /3 e (c) o polinômio interpolador dos dados 4 Calcule as integrais do exercício com usando Simpson /3 e estime o erro cometido Compare com os valores fornecidos pelo sistema 5 Determine (i) (ii) (iii) com um erro de no máximo utilizando: (a) O método dos trapézios (b) O método de Simpson /3 (c) Utilize o comando de integração numérica do sistema e verifique se o erro real é realmente menor ou igual ao previsto