Prévia do material em texto
Integração numérica em Python Prof. David Fernandes Cruz Moura Descrição Emprego de modelos matemáticos para resolução de problemas clássicos em Engenharia por meio de integração numérica. Propósito A aplicação de modelos matemáticos para resolução de integrais é uma ferramenta fundamental para a compreensão de situações clássicas em Engenharia, como a análise de ondas de choque em explosões, a análise de resistência e tenacidade de materiais, taxas de geração de gás carbônico e de consumo de oxigênio, entre outras situações-problema da Engenharia. Preparação A aplicação de modelos matemáticos para resolução de integrais é uma ferramenta fundamental para a compreensão de situações clássicas em Engenharia, como a análise de ondas de choque em explosões, a análise de resistência e tenacidade de materiais, taxas de geração de gás carbônico e de consumo de oxigênio, entre outras situações-problema da Engenharia. Objetivos Módulo 1 Métodos de interpolação (Newton-Cotes: retângulos) Aplicar o método de interpolação de Newton-Cotes, Método dos Retângulos, por meio da implementação computacional em Python. Módulo 2 Métodos de interpolação (Newton-Cotes: trapézios) Aplicar o método de interpolação de Newton-Cotes, Método dos Trapézios, por meio da implementação computacional em Python. Módulo 3 Métodos de interpolação (Newton-Cotes: Regras de Simpson) Aplicar o método de interpolação de Newton-Cotes, Método de Simpson, por meio da implementação computacional em Python. Módulo 4 Métodos de extrapolação (Romberg) Aplicar o método de extrapolação de Romberg, por meio da implementação computacional em Python. Neste conteúdo, veremos formas de emprego de modelos matemáticos para solucionar um problema clássico em Engenharia – a resolução numérica de integrais definidas. São modelos matemáticos para resolução de integrais definidas. Ondas de choque em explosões, análise de resistência e tenacidade de materiais, taxas de geração de gás carbônico e de consumo de oxigênio são alguns problemas do contexto da Engenharia, nos quais podem ser aplicados tais modelos. Introdução 1 - Métodos de interpolação (Newton-Cotes: retângulos) Ao �nal deste módulo, você será capaz de aplicar o método de interpolação de Newton-Cotes, Método dos Retângulos, por meio da implementação computacional em Python. Introdução ao Método dos Retângulos Segundo Moura (2017), a integral definida apresenta a seguinte notação: Dessa maneira, conheceremos os métodos mais tradicionais de resolução de integrais definidas com o emprego de técnicas numéricas. Inicialmente, estudaremos os métodos de interpolação numérica para integração, empregando diversas variantes do método de Newton-Cotes (retângulos, trapézios e de Simpson). Em seguida, estudaremos o método de extrapolação numérica, como foco na técnica de Romberg. Em ambos os casos, aplicaremos os métodos estudados, por meio da implementação computacional de programas em Python. Vamos lá? b Assim, temos que o resultado da expressão indicada é equivalente à área definida sob a curva f(x) no plano cartesiano, entre os pontos a e b. Veja a região hachurada da imagem: Gráfico: Integral Definida de f(x) no intervalo entre a e b. Extraído de: Moura, 2017. Para prosseguirmos, vamos relembrar o conceito de integral? Pois bem: a integral definida e sua aplicação são muito úteis em diversas áreas, como Física, Engenharia e Economia, entre outras. No entanto, o cálculo matemático da integral definida nem sempre é fácil. Por vezes, a função é difícil de integrar ou de impossível integração. Mesmo quando o resultado é conhecido, há situações em que o cálculo somente pode ser obtido de modo aproximado. Qual é o princípio fundamental para esses métodos de integração numérica? A resposta é simples: a lembrança de que a integral de uma função equivale a uma área. Com base nesse ∫ b a f(x)dx Resumindo Existem diversas situações que mostram que nem sempre é possível calcular a integral de uma função f(x) em um intervalo [a,b]. Nesses casos, aplicam-se métodos numéricos de integração – os denominados métodos de integração numérica. princípio, foram criados diversos métodos que dividem a área a ser calculada em vários elementos, de pequena dimensão. Logo, temos um dilema: complexidade ou precisão? Para resolver a integral e permitir que você chegue a uma conclusão, temos diversos métodos em que a função f(x) passa a ser aproximada por funções polinomiais de grau cada vez maior: 0 (função constante), 1 (função linear), 2 (função quadrática) e assim por diante. De acordo com Moura (2017), o método básico envolvido nessa aproximação é a denominada quadratura numérica. Esse método consiste em aproximar a integral definida por uma expressão do tipo: , Em que os valores são reais (peso da função) e . Comentário Conforme exposto em Moura (2017), a soma das pequenas partes resulta na área total equivalente à integral que se deseja calcular – a menos de erros de aproximação inerentes ao modelo utilizado. Quanto menor for o intervalo de integração de cada uma dessas partes, menor o erro; no entanto, isso implica em aumento da quantidade necessária de operações – ou seja, um aumento da ordem de complexidade do algoritmo. ∑ni=1 αif (xi) αi ∀xi ∈ R ⇒ xi ∈ [a, b] Atenção! É importante sabermos desde já que o emprego de funções de maior grau acaba promovendo melhor captura do comportamento da função a ser integrada. Dessa maneira, conseguimos reduzir a quantidade de operações matemáticas requeridas, bem como os erros de aproximação já citados. Método dos Retângulos O método que veremos neste módulo é o Método dos Retângulos. Nesse método, o princípio básico para fazer a aproximação da integral definida por é dividir o intervalo de integração [a,b] em h partes iguais. Dessa maneira, a integral é calculada de acordo com a expressão apresentada a seguir: Rotacione a tela. Método dos Retângulos Veja só como funciona essa técnica, analisando a imagem apresentada a seguir: Gráfico: Integral como soma de 5 subáreas (retângulos azuis) – Método dos Retângulos. Extraído de: Moura, 2017. Nesse exemplo, nosso objetivo é calcular a integral dada por (em que f(x) é a linha indicada em vermelho). Para fazer essa operação, dividimos o intervalo de integração [2,3] em 5 intervalos iguais, indicados na cor azul. Naturalmente, como o intervalo de integração tem tamanho 1, cada intervalo apresenta dimensão h, dada por: ∫ ba f(x)dx n ∑ i=1 αif (xi) = h n ∑ i=1 f ( xi + xi+1 2 ) ∫ 32 f(x)dx = ∫ 3 2 x 2 + cos(x)dx Rotacione a tela. Em cada um dos 5 intervalos, adota-se como referência o valor da função no ponto médio de cada intervalo, em que o dito ponto médio é dado por . Dessa maneira, percebemos que os cálculos ficam como está exposto na tabela a seguir: Intervalo Limite inferior Limite superior Valor da função no ponto médio 1 2 2.2 2 2,2 2,4 3 2,4 2,6 4 2,6 2,8 5 2,8 3,0 Feitos esses cálculos, conseguimos chegar a uma aproximação para a integral de , dada por: h = 3 − 2 5 = 0, 2 xi+xi+1 2 = xi+(xi+h) 2 Atenção! Repare que cada ponto corresponde ao valor de seu antecessor , adicionado do tamanho de cada intervalo (h). (xi+1) (xi) f(2)+f(2,2) 2 = 3, 9177 f(2,2)+f(2,4) 2 = 4, 6371 f(2,4)+f(2,6) 2 = 5, 4629 f(2,6)+f(2,8) 2 = 6, 4004 f(2,8)+f(3,0) 2 = 4, 6371 f(x) = x2 + cos(x) Rotacione a tela. Rotacione a tela. Continuando nosso estudo, aplicaremos os conhecimentos obtidos na resolução de algumas integrais, de acordo com os métodos aprendidos. Vamos lá? Para tal, vamos calcular a integral de , no intervalo de 0 a 1, empregando o método dos retângulos. Como já vimos, a resolução do problema de integração numérica em um intervalo definido requer que o enunciado forneça alguns elementos importantes, como: A função a ser integrada; O valor inicial do intervalo de integração; O valor final do intervalo de integração; A quantidade de intervalos (ou o tamanho de cada intervalo).Neste exemplo, temos que: A função a ser integrada é ; O valor inicial do intervalo de integração é 0; n ∑ i=1 αif (xi) = h n ∑ i=1 f ( xi + xi+1 2 ) = 0, 2 5 ∑ i=1 f ( (2 + i ∗ 0, 2) + [2 + (i − 1) ∗ 0, 2] 2 ) → 0, 2 ∗ 3, 91 + 0, 2 ∗ 4, 62 + 0, 2 ∗ 5, 45 + 0, 2 ∗ 6, 39 + 0, 2 ∗ 7, 44 = 0, 2 ∗ (3, 91 + 4, 62 + 5, 45 + 6, 39 + 7, 44) = 5, 562 Comentário Como já era esperado, o resultado obtido apresenta uma diferença em relação ao valor exato da integral proposta que conseguimos ao realizar a operação dita analítica (5,5652). x2 − x + 2 f(x) = x2 − x + 2 O valor final do intervalo de integração é 1. Quanto ao intervalo de integração, vamos fazer de algumas maneiras diferentes, para que você veja o comportamento de cada método, com 5, 10 e 20 intervalos, considerando 2 casas decimais. Assim, aplicando o Método dos Retângulos com 5 intervalos, temos: X x2 – x + 2 f(x).Δx 0 2 0,4 0,2 1,84 0,37 0,4 1,76 0,35 0,6 1,76 0,35 0,8 1,84 0,37 Desse modo, fazendo a soma dos elementos na coluna da direita, temos 0,4 + 0,37 + 0,35 + 0,35 + 0,37 = 1,84. Já para o mesmo método, mas com 10 intervalos, temos os valores intermediários apresentados a seguir: X x2 – x + 2 f(x).Δx 0 2 0,2 0,1 1,91 0,19 0,2 1,84 0,18 0,3 1,79 0,18 0,4 1,76 0,18 0,5 1,75 0,17 X x2 – x + 2 f(x).Δx 0,6 1,76 0,18 0,7 1,79 0,18 0,8 1,84 0,18 0,9 1,91 0,19 Agora, fazendo a soma dos elementos na coluna da direita, temos: 0,2 + 0,19 + 0,18 + 0,18 + 0,18 + 0,17 + 0,18 + 0,18 + 0,18 + 0,19 = 1,83. Por fim, ainda com o Método dos Retângulos, mas com 20 intervalos, temos os valores intermediários apresentados a seguir: X x2 – x + 2 f(x).Δx 0 2 0,10 0,05 1,95 0,10 0,1 1,91 0,10 0,15 1,87 0,09 0,2 1,84 0,09 0,25 1,81 0,09 0,3 1,79 0,09 0,35 1,79 0,09 0,4 1,76 0,09 0,45 1,75 0,09 X x2 – x + 2 f(x).Δx 0,5 1,75 0,09 0,55 1,75 0,09 0,6 1,76 0,09 0,65 1,77 0,09 0,7 1,79 0,09 0,75 1,81 0,09 0,8 1,84 0,09 0,85 1,87 0,09 0,9 1,91 0,10 0,95 1,95 0,10 Com essa configuração, fazendo a soma dos elementos na coluna da direita, temos: 0,1 + 0,1 + 0,1 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,1 + 0,1 + 0,1 = 1,83. Prosseguindo na aplicação dos conhecimentos obtidos para resolução numérica de integrais definidas, vamos calcular a integral de no intervalo de 0 a 1, empregando o Método dos Retângulos. Como já vimos, a resolução do problema de integração numérica em um intervalo definido requer que o enunciado forneça alguns elementos importantes, como: 1. A função a ser integrada; 2. O valor inicial do intervalo de integração; 3. O valor final do intervalo de integração; 4. A quantidade de intervalos (ou o tamanho de cada intervalo). Neste exemplo, temos que: 1. A função a ser integrada é ; cos(x) − 3. sen(x) f(x) = cos(x) − 3. sen(x) 2. O valor inicial do intervalo de integração é 0; 3. O valor final do intervalo de integração é 1. Quanto ao intervalo de integração, vamos fazer de algumas maneiras diferentes, para que você veja o comportamento de cada método, com 5, 10 e 20 intervalos, considerando 2 casas decimais. Assim, aplicando o Método dos Retângulos com 5 intervalos, temos: X cos(x) – 3.sen(x) f(x).Δx 0 1 0,2 0,2 0,38 0,08 0,4 -0,25 -0,05 0,6 -0,87 -0,17 0,8 -1,46 -0,29 Desse modo, fazendo a soma dos elementos na coluna da direita, temos 0,2 + 0,08 + (-0,05) + (-0,17) + (-0,29) = -0,24. Já para o mesmo método, mas com 10 intervalos, temos os valores intermediários apresentados a seguir: X cos(x) – 3.sen(x) f(x).Δx 0 1 0,1 0,1 0,70 0,07 0,2 0,38 0,04 0,3 0,07 0,01 0,4 -0,25 -0,02 0,5 -0,56 -0,06 X cos(x) – 3.sen(x) f(x).Δx 0,6 -0,87 -0,09 0,7 -1,17 -0,12 0,8 -1,46 -0,15 0,9 -1,73 -0,17 Agora, fazendo a soma dos elementos na coluna da direita, temos: 0,1 + 0,07 + 0,04 + 0,01 + (-0,02) + (-0,06) + (-0,09) + (-0,12) + (-0,15) + (-0,17) = -0,39. Por fim, ainda com o Método dos Retângulos, mas com 20 intervalos, temos os valores intermediários apresentados a seguir: X cos(x) – 3.sen(x) f(x).Δx 0 1 0,05 0,05 0,85 0,04 0,1 0,70 0,03 0,15 0,54 0,03 0,2 0,38 0,02 0,25 0,23 0,01 0,3 0,07 0,00 0,35 -0,09 -0,00 0,4 -0,25 -0,01 0,45 -0,40 -0,02 0,5 -0,56 -0,03 X cos(x) – 3.sen(x) f(x).Δx 0,55 -0,72 -0,04 0,6 -0,87 -0,04 0,65 -1,02 -0,05 0,7 -1,17 -0,06 0,75 -1,31 -0,07 0,8 -1,46 -0,07 0,85 -1,53 -0,08 0,9 -1,73 -0,09 0,95 -1,86 -0,09 Com essa configuração, fazendo a soma dos elementos na coluna da direita, temos: 0,05 + 0,04 + 0,03 + 0,03 + 0,02 + 0,01 + 0,00 + (-0,00) + (-0,01) + (-0,02) + (-0,03) + (-0,04) + (-0,04) + (-0,05) + (-0,06) + (-0,07) + (-0,07) + (-0,08) + (-0,09) + (-0,09) = -0,46. Implementação do Método dos Retângulos em Python Vamos ver um exemplo de integração em Python? Agora, nós calcularemos a integral da função no intervalo [2, 3]. Em Python, podemos implementar o Método dos Retângulos para efetuar essa aproximação da seguinte maneira: Python x2 import numpy as np import math f = lambda x: x**2 a = 2; b = 3; N = 5 x = np.linspace(a,b,N+1) y = f(x) 1 2 3 4 5 6 Resolução de exercícios com o Python Neste bate-papo, serão resolvidos exercícios com o método de interpolação (Retângulos) utilizando o Python. Vem que eu te explico! Os vídeos a seguir abordam os assuntos mais relevantes do conteúdo que você acabou de estudar. dx = (b-a)/N x_medio = np.linspace(dx/2,b - dx/2,N) soma_retangulo = np.sum(f(x_medio) * dx) print("Integral:",soma_retangulo) 7 8 9 10 Módulo 1 - Vem que eu te explico! Resolver problemas de integração numérica, quando é necessário? Módulo 1 - Vem que eu te explico! Apresentação do método de Newton-Cotes Vamos praticar alguns conceitos? Falta pouco para atingir seus objetivos. Questão 1 Calcule o valor de . Para tal, utilize o Método dos Retângulos, dividindo o intervalo de integração em 4 partes: ∫ 20 sen(x)dx A 1,43101 B 1,53101 C 1,63101 D 1,73101 E 1,83101 Responder Questão 2 Calcule o valor de . Para tal, utilize o Método dos Retângulos, dividindo o intervalo de integração em 4 partes: ∫ 20 2. sen(x)dx A 2,86202 B 2,76202 C 2,66202 D 2,56202 E 2,46202 Responder 2 - Métodos de interpolação (Newton-Cotes: trapézios) Ao �nal deste módulo, você será capaz de aplicar o método de interpolação de Newton-Cotes, Método dos Trapézios, por meio da implementação computacional em Python. Método dos Trapézios Você pode se perguntar: tem como fazer melhor? Podemos fazer, pelo menos, de duas formas diferentes: reduzindo o tamanho do intervalo h ou aprimorando a função de aproximação – o que veremos a seguir, com a apresentação do Método dos Trapézios. Nesse método, a estratégia para fazer o cálculo da aproximação da integral definida por também consiste em dividir do intervalo de integração [a,b] em h partes iguais. Só que a expressão de cálculo dentro de cada intervalo é diferente daquela que vimos para o método anterior. Nesse caso, a integral é calculada de acordo com a expressão apresentada a seguir: Rotacione a tela. ∫ ba f(x)dx n ∑ i=1 αif (xi) = h n ∑ i=1 f (xi) + f (xi+1) 2 Método dos Trapézios Para entender melhor como isso é feito, veja a imagem apresentada a seguir: Gráfico: Integral da função f(x) (em vermelho) como soma de 4 subáreas (trapézios hachurados em azul) – Método dos Trapézios. Extraído de: Moura, 2017. Para ajudar, vamos utilizar o mesmo exemplo que vimos no Método dos Retângulos, calculando . Como mencionado há pouco, vamos dividir o intervalo de integração [2,3] em 5 intervalos iguais de tamanho: Rotacione a tela. Aqui, vem a diferença: em cada um desses 5 intervalos, adota-se como função de referência a média entre os valores da função nos pontos-limite de cada intervalo, ou seja . Mais uma vez, note que cada ponto corresponde ao valor de seu antecessor , adicionado do tamanho de cada intervalo (h). Dessa maneira, neste segundo exemplo, temos a situação exposta na tabelaapresentada a seguir: Intervalo Limite inferior Limite superior Valor da função no ponto médio 1 2 2.2 ∫ 3 2 f(x)dx = ∫ 3 2 x2 + cos(x)dx h = 3 − 2 5 = 0, 2 f(xi)+f(xi+h) 2 (xi+1) (xi) f(2)+f(2,2) 2 = 3, 9177 Intervalo Limite inferior Limite superior Valor da função no ponto médio 2 2,2 2,4 3 2,4 2,6 4 2,6 2,8 5 2,8 3,0 Com isso, tem-se a seguinte aproximação para a integral de , dada por: Rotacione a tela. Rotacione a tela. Agora, vamos calcular novamente a integral de no intervalo de 0 a 1, empregando o Método dos Trapézios. Como vimos, a resolução do problema de integração numérica em um intervalo definido requer que o enunciado forneça alguns elementos importantes, como: A função a ser integrada; O valor inicial do intervalo de integração; O valor final do intervalo de integração; A quantidade de intervalos (ou o tamanho de cada intervalo). f(2,2)+f(2,4) 2 = 4, 6371 f(2,4)+f(2,6) 2 = 5, 4629 f(2,6)+f(2,8) 2 = 6, 4004 f(2,8)+f(3,0) 2 = 4, 6371 f(x) = x2 + cos(x) n ∑ i=1 αif (xi) =h n ∑ i=1 f (xi) + f (xi+1) 2 = 0, 2 5 ∑ i=1 f(2 + (i − 1) ∗ 0, 2) + f[2 + i ∗ 0, 2] 2 → 0, 2 ∗ (3, 9177 + 4, 6371 + 5, 4629 + 6, 4004 + 7, 4539) = 5, 5744 x2 − x + 2 Neste exemplo, temos que: A função a ser integrada é ; O valor inicial do intervalo de integração é 0; O valor final do intervalo de integração é 1. Quanto ao intervalo de integração, vamos fazer de algumas maneiras diferentes, para que você veja o comportamento de cada método, com 5, 10 e 20 intervalos, considerando 2 casas decimais. Será que o comportamento observado no módulo anterior se mantém com outras técnicas? Vamos agora aplicar o Método dos Trapézios com 5 intervalos: X x2 – x + 2 f(x).Δx 0 2 0,38 0,2 1,84 0,36 0,4 1,76 0,35 0,6 1,76 0,36 0,8 1,84 0,38 Desse modo, fazendo a soma dos elementos na coluna da direita, temos: 0,38 + 0,36 + 0,35 + 0,36 + 0,38 = 1,83. Já para o mesmo método, mas com 10 intervalos, temos os valores intermediários apresentados a seguir: X x2 – x + 2 f(x).Δx 0 2 0,2 0,1 1,91 0,19 0,2 1,84 0,18 0,3 1,79 0,18 f(x) = x2 − x + 2 X x2 – x + 2 f(x).Δx 0,4 1,76 0,18 0,5 1,75 0,18 0,6 1,76 0,18 0,7 1,79 0,18 0,8 1,84 0,19 0,9 1,91 0,20 Agora, fazendo a soma dos elementos na coluna da direita, temos: 0,2 + 0,19 + 0,18 + 0,18 + 0,18 + 0,18 + 0,18 + 0,18 + 0,19 + 0,20 = 1,83. Por fim, ainda com o Método dos Trapézios, mas com 20 intervalos, temos os valores intermediários apresentados a seguir: X x2 – x + 2 f(x).Δx 0 2 0,10 0,05 1,95 0,10 0,1 1,91 0,09 0,15 1,87 0,09 0,2 1,84 0,09 0,3 1,79 0,09 0,35 1,77 0,09 0,4 1,76 0,09 X x2 – x + 2 f(x).Δx 0,45 1,75 0,09 0,5 1,75 0,09 0,55 1,75 0,09 0,6 1,76 0,09 0,65 1,77 0,09 0,7 1,79 0,09 0,75 1,81 0,09 0,8 1,84 0,09 0,85 1,87 0,09 0,9 1,91 0,10 0,95 1,95 0,10 Com essa configuração, fazendo a soma dos elementos na coluna da direita, temos: 0,1 + 0,1 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,1 + 0,1 = 1,83. Prosseguindo na aplicação dos conhecimentos obtidos para resolução numérica de integrais definidas, vamos calcular a integral de no intervalo de 0 a 1, empregando o Método dos Trapézios. Como vimos neste tema, a resolução do problema de integração numérica em um intervalo definido requer que o enunciado forneça alguns elementos importantes, como: A função a ser integrada; O valor inicial do intervalo de integração; O valor final do intervalo de integração; A quantidade de intervalos (ou o tamanho de cada intervalo). cos(x) − 3. sen(x) Neste exemplo, temos que: A função a ser integrada é ; O valor inicial do intervalo de integração é 0; O valor final do intervalo de integração é 1. Quanto ao intervalo de integração, vamos fazer de algumas maneiras diferentes, para que você veja o comportamento de cada método, com 5, 10 e 20 intervalos, considerando 2 casas decimais. Será que o comportamento obtido no módulo anterior se mantém com outras técnicas? Vamos aplicar o Método dos Trapézios com 5 intervalos: X cos(x) – 3.sen(x) f(x).Δx 0 1 0,14 0,2 0,38 0,01 0,4 -0,25 -0,11 0,6 -0,87 -0,23 0,8 -1,46 -0,34 Desse modo, fazendo a soma dos elementos na coluna da direita, temos 0,14 + 0,01 + (-0,11) + (-0,23) + (-0,34) = -0,54. Já para o mesmo método, mas com 10 intervalos, temos os valores intermediários apresentados a seguir: X cos(x) – 3.sen(x) f(x).Δx 0 1 0,08 0,1 0,70 0,05 0,2 0,38 0,02 0,3 0,07 -0,01 f(x) = cos(x) − 3. sen(x) X cos(x) – 3.sen(x) f(x).Δx 0,4 -0,25 -0,04 0,5 -0,56 -0,07 0,6 -0,87 -0,10 0,7 -1,17 -0,13 0,8 -1,46 -0,16 0,9 -1,73 -0,19 Agora, fazendo a soma dos elementos na coluna da direita, temos: 0,08 + 0,05 + 0,02 + (-0,01) + (-0,04) + (-0,07) + (-0,10) + (-0,13) + (-0,16) + (-0,19) = -0,54. Por fim, ainda com o Método dos Trapézios, mas com 20 intervalos, temos os valores intermediários apresentados a seguir: X cos(x) – 3.sen(x) f(x).Δx 0 1 0,05 0,05 0,85 0,04 0,1 0,70 0,03 0,15 0,54 0,02 0,2 0,38 0,02 0,25 0,23 0,01 0,3 0,07 -0,00 0,35 -0,09 -0,01 0,4 -0,25 -0,02 X cos(x) – 3.sen(x) f(x).Δx 0,45 -0,40 -0,02 0,5 -0,56 -0,03 0,55 -0,72 -0,04 0,6 -0,87 -0,05 0,65 -1,02 -0,05 0,7 -1,17 -0,06 0,75 -1,31 -0,07 0,8 -1,46 -0,08 0,85 -1,53 -0,08 0,9 -1,73 -0,09 0,95 -1,86 -0,10 Com essa configuração, fazendo a soma dos elementos na coluna da direita, temos 0,05 + 0,04 + 0,03 + 0,02 + 0,02 + 0,01 + (-0,00) + (-0,01) + (-0,02) + (-0,02) + (-0,03) + (-0,04) + (-0,05) + (-0,05) + (-0,06) + (-0,07) + (-0,08) + (-0,08) + (-0,09) + (-0,10) = -0,54. Implementação do Método dos Trapézios em Python Vamos ver um exemplo de integração em Python? Calcularemos a integral da função no intervalo [2, 3]. Em Python, podemos implementar o Método dos Trapézios para efetuar essa aproximação, de modo que o cálculo pode ser feito da seguinte maneira: Python x2 import numpy as np import math 1 2 Resolução de exercícios com o Python Neste bate-papo, serão resolvidos exercícios com o método de interpolação (Trapézios) utilizando o Python. Vem que eu te explico! f = lambda x: x**2 a = 2; b = 3; N = 5 x = np.linspace(a,b,N+1) y = f(x) y_maior = y[1:] y_menor = y[:-1] dx = (b-a)/N soma_trapezio = (dx/2) * np.sum(y_maior + y_menor) print("Integral:",soma_trapezio) 3 4 5 6 7 8 9 10 11 Os vídeos a seguir abordam os assuntos mais relevantes do conteúdo que você acabou de estudar. Módulo 2 - Vem que eu te explico! Aplicar interpolações de Lagrange para o Método dos Trapézios, como relacionar com o método anterior Módulo 2 - Vem que eu te explico! Método de interpolação de Newton-Cotes (trapézios). Qual é a vantagem? Vamos praticar alguns conceitos? Falta pouco para atingir seus objetivos. Questão 1 Calcule o valor de . Para tal, utilize o Método dos Trapézios, dividindo o intervalo de integração em 8 partes: ∫ 2 1 cos(x)dx A 0,0677 B 0,0777 C 0,0877 D 0,09771 E 0,0577 Responder Questão 2 Calcule o valor de . Para tal, utilize o Método dos Trapézios, dividindo o intervalo de integração em 8 partes: ∫ 2 1 2. cos(x)dx A 0,13547 B 0,15547 C 0,11547 D 0,17547 E 0,19547 Responder 3 - Métodos de interpolação (Newton-Cotes: regras de Simpson) Ao �nal deste módulo, você será capaz de aplicar o método de interpolação de Newton-Cotes, Método de Simpson, por meio da implementação computacional em Python. Método de Simpson Como imaginávamos, o resultado obtido ainda apresenta uma diferença em relação ao valor exato da integral proposta (5,5652), mas a diferença foi reduzida. Mesmo assim, o resultado pode ser melhor: podemos reduzir o tamanho do intervalo h ou aprimorar a função de aproximação, empregando o denominado Método de Simpson para n = 3. No Método de Simpson para n = 3, como nos métodos anteriores, o princípio básico para calcular consiste em dividir o intervalo de integração [a,b] em h partes iguais. Assim, a integral é calculada de acordo com a expressão apresentadaa seguir: ∫ b a f(x)dx Rotacione a tela. Vamos ver qual é o efeito dessa modificação? Mais uma vez utilizando o exemplo anterior, considere o cálculo de . Como nos demais casos, dividimos o intervalo de integração [2,3] em 5 intervalos iguais de tamanho: Rotacione a tela. Conforme exposto em Moura (2017), em cada um desses 5 intervalos, adota-se como referência uma aproximação quadrática entre os valores da função nos pontos-limite de cada intervalo, considerando-se como ponto focal da parábola o ponto médio do intervalo, ou seja: Rotacione a tela. De igual modo ao que fizemos nos casos anteriores, cada ponto equivale ao valor de seu antecessor ( ), adicionado do tamanho de cada intervalo (h). Vamos ver como ficam os cálculos neste terceiro caso? Veja a tabela apresentada a seguir: Intervalo Limite inferior Limite superior Ponto médio V n ∑ i=1 αif (xi) = h n ∑ i=1 f (xi) + 4f(y) + f (xi+1) 6 , onde y = xi + xi+1 2 ∫ 32 f(x)dx = ∫ 3 2 x 2 + cos(x)dx h = 3 − 2 5 = 0, 2 f (xi) + 4f(y) + f (xi+1) 6 , onde y = xi + xi+1 2 (xi+1) (xi) Intervalo Limite inferior Limite superior Ponto médio V 1 2 2,2 2,1 2 2,2 2,4 2,3 3 2,4 2,6 2,5 4 2,6 2,8 2,7 5 2,8 3,0 2,9 Com isso, tem-se a seguinte aproximação para a integral de , com resultado igual a 5,5652. Eis os cálculos: 0,2 Rotacione a tela. Como você pode ver, o resultado alcançado é equivalente ao valor exato da integral proposta (5,5652) – era de se esperar que nós encontrássemos uma aproximação melhor do que a oferecida pelos métodos anteriores, mas nem sempre se chegará a um resultado exato com tão poucos intervalos. f(x) = x2 + cos(x) h n ∑ i=1 f (xi) + 4f(y) + f (xi+1) 6 =0, 2 5 ∑ i=1 f(a + (i − 1)h) + 4f(y) + f(a + ih) 6 , onde y = (a + (i − 1)h) + (a + ih) 2 ∗ f(2) + 4f(2, 1) + 2f(2, 2) + 4f(2, 3) + 2f(2, 4) + 4f(2, 5) + 2f(2, 6) + 4f(2, 7) + 2f(2, 8) + 4 6 →= 5, 5652 Para concluir, aplicaremos o Método de Simpson para calcular a integral de no intervalo de 0 a 1. Como vimos, a resolução do problema de integração numérica em um intervalo definido requer que o enunciado forneça alguns elementos importantes, como: A função a ser integrada; O valor inicial do intervalo de integração; O valor final do intervalo de integração; A quantidade de intervalos (ou o tamanho de cada intervalo). Neste exemplo, temos que: A função a ser integrada é ; O valor inicial do intervalo de integração é 0; O valor final do intervalo de integração é 1. Quanto ao intervalo de integração, vamos fazer de algumas maneiras diferentes, para que você veja o comportamento de cada método, com 5, 10 e 20 intervalos, considerando 2 casas decimais. Como feito nos casos anteriores, vamos começar com 5 intervalos: X x2 – x + 2 f(x).Δx 0 2 0,38 0,2 1,84 0,36 0,4 1,76 0,35 0,6 1,76 0,36 0,8 1,84 0,38 Atenção! Já tratamos disso anteriormente, mas não custa repetir: podemos encontrar uma aproximação ainda melhor, reduzindo o tamanho do intervalo h ou aprimorando a função de aproximação – a partir de funções cúbicas, quárticas ou de ordem superior. x2 − x + 2 f(x) = x2 − x + 2 Desse modo, fazendo a soma dos elementos na coluna da direita, temos 0,38 + 0,36 + 0,35 + 0,36 + 0,38 = 1,83. Já para o mesmo método, mas com 10 intervalos, temos os valores intermediários apresentados a seguir: X x2 – x + 2 f(x).Δx 0 2 0,2 0,1 1,91 0,19 0,2 1,84 0,18 0,3 1,79 0,18 0,4 1,76 0,18 0,5 1,75 0,18 0,6 1,76 0,18 0,7 1,79 0,18 0,8 1,84 0,19 0,9 1,91 0,20 Agora, fazendo a soma dos elementos na coluna da direita, temos 0,2 + 0,19 + 0,18 + 0,18 + 0,18 + 0,18 + 0,18 + 0,18 + 0,19 + 0,20 = 1,83. Por fim, ainda com o Método de Simpson, mas com 20 intervalos, temos os valores intermediários apresentados a seguir: X x2 – x + 2 f(x).Δx 0 2 0,10 0,05 1,95 0,10 X x2 – x + 2 f(x).Δx 0,1 1,91 0,09 0,15 1,87 0,09 0,2 1,84 0,09 0,25 1,81 0,09 0,3 1,79 0,09 0,35 1,77 0,09 0,4 1,76 0,09 0,45 1,75 0,09 0,5 1,75 0,09 0,55 1,75 0,09 0,6 1,76 0,09 0,65 1,77 0,09 0,7 1,79 0,09 0,75 1,81 0,09 0,8 1,84 0,09 0,85 1,87 0,09 0,9 1,91 0,10 0,95 1,95 0,10 Com essa configuração, fazendo a soma dos elementos na coluna da direita, temos: 0,1 + 0,1 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,09 + 0,1 + 0,1 = 1,83. Prosseguindo na aplicação dos conhecimentos obtidos para resolução numérica de integrais definidas, vamos calcular a integral de cos(x) – 3. sen(x) no intervalo de 0 a 1, agora empregando o Método de Simpson. Como vimos, a resolução do problema de integração numérica em um intervalo definido requer que o enunciado forneça alguns elementos importantes, como: A função a ser integrada; O valor inicial do intervalo de integração; O valor final do intervalo de integração; A quantidade de intervalos (ou o tamanho de cada intervalo). Neste exemplo, temos que: A função a ser integrada é ; O valor inicial do intervalo de integração é 0; O valor final do intervalo de integração é 1. Vamos agora aplicar o Método de Simpson. Como nos casos anteriores, vamos começar com 5 intervalos: X cos(x) – 3.sen(x) f(x).Δx 1 0,14 0,2 0,38 0,01 0,4 -0,25 -0,11 0,6 -0,87 -0,23 0,8 -1,46 -0,35 Desse modo, fazendo a soma dos elementos na coluna da direita, temos: 0,14 + 0,01 + (-0,11) + (-0,23) + (-0,35) = -0,54. Já para o mesmo método, mas com 10 intervalos, temos os valores intermediários apresentados a seguir: X cos(x) – 3.sen(x) f(x).Δx 0 1 0,08 f(x) = cos(x) − 3. sen(x) X cos(x) – 3.sen(x) f(x).Δx 0,1 0,70 0,05 0,2 0,38 0,02 0,3 0,07 -0,01 0,4 -0,25 -0,04 0,5 -0,56 -0,07 0,6 -0,87 -0,10 0,7 -1,17 -0,13 0,8 -1,46 -0,16 0,9 -1,73 -0,19 Fazendo a soma dos elementos na coluna da direita, temos: 0,08 + 0,05 + 0,02 + (-0,01) + (-0,04) + (-0,07) + (-0,10) + (-0,13) + (-0,16) + (-0,19) = -0,54. Por fim, ainda com o Método de Simpson, mas com 20 intervalos, temos os valores intermediários apresentados a seguir: X cos(x) – 3.sen(x) f(x).Δx 0 1 0,05 0,05 0,85 0,04 0,1 0,70 0,03 0,15 0,54 0,02 0,2 0,38 0,02 0,25 0,23 0,01 X cos(x) – 3.sen(x) f(x).Δx 0,3 0,07 -0,00 0,35 -0,09 -0,01 0,4 -0,25 -0,02 0,45 -0,40 -0,02 0,5 -0,56 -0,03 0,55 -0,72 -0,04 0,6 -0,87 -0,05 0,65 -1,02 -0,05 0,7 -1,17 -0,06 0,75 -1,31 -0,07 0,8 -1,46 -0,08 0,85 -1,53 -0,08 0,9 -1,73 -0,09 0,95 -1,86 -0,10 Com essa configuração, fazendo a soma dos elementos na coluna da direita, temos 0.05 + 0.04 + 0.03 + 0.02 + 0.02 + 0.01 + (-0.00) + (-0.01) + (-0.02) + (-0.02) + (-0.03) + (-0.04) + (-0.05) + (-0.05) + (-0.06) + (-0.07) + (-0.08) + (-0.08) + (-0.09) + (-0.10) = -0,54. Implementação do Método de Simpson em Python Vamos ver um exemplo de integração em Python? Calcularemos a integral da função no intervalo [2, 3]. Em Python, podemos implementar o Método de Simpson para efetuar essa aproximação, de modo que o cálculo pode ser feito da seguinte maneira: x2 Python Resolução de exercícios com o Python Neste bate-papo, serão resolvidos os exercícios com o método de interpolação (Newton-Cotes) utilizando o Python. import numpy as np import math f = lambda x: x**2 a = 2; b = 3; N = 10 x = np.linspace(a,b,N+1) y = f(x) dx = (b-a)/N soma_Simpson = dx/3 * np.sum(y[0:-1:2] + 4*y[1::2] + y[2::2]) print("Integral:",soma_Simpson) 1 2 3 4 5 6 7 8 9 Vem que eu te explico! Os vídeos a seguir abordam os assuntos mais relevantes do conteúdo que você acabou de estudar. Módulo 3 - Vem que eu te explico! Implementar o Algoritmo de Newton-Cotes (regra de Simpson), como iniciar o processo? Módulo 3 - Vem que eu te explico! De�nir a interpolação de Newton-Cotes (regra de Simpson), qual a vantagem? Vamos praticar alguns conceitos? Falta pouco para atingir seus objetivos. Questão 1 Calcule o valor de . Para tal, utilize o Método de Simpson, dividindo o intervalo de integração em 4 partes: ∫ 2 0 sen(x)dx A 1,42 B 1,52 C 1,62 D 1,72 E 1,82 Responder Questão 2 Calcule o valorde . Para isso, utilize o Método de Simpson, dividindo o intervalo de integração em 4 partes: ∫ 2 0 cos(x)dx A 0,91 B 1,01 C 0,81 D 0,71 E 0,61 Responder 4 - Métodos de extrapolação (Romberg) Ao �nal deste módulo, você será capaz de aplicar o Método de extrapolação de Romberg, por meio da implementação computacional em Python. Método de Romberg Além dos métodos indicados no módulo anterior, existem outros que permitem alcançar resultados ainda mais precisos. Entre eles, destacamos o Método de extrapolação de Romberg. A despeito de sua maior precisão, seu fundamento teórico se baseia no Método dos Trapézios, já estudado neste conteúdo. Vamos analisar esse método, a partir de um exemplo. Para tal, consideremos o cálculo da integral I apresentada a seguir: Rotacione a tela. I = ∫ 2 1 1 x dx Método de Romberg Utilizando o Método dos Trapézios, podemos calcular o valor da integral I, considerando uma quantidade qualquer de subintervalos dentro do intervalo de integração [1,2]. Assim, vamos calcular o valor de I, considerando a quantidade n de subintervalos igual a 1, 2, 4, 8 e 16. Os valores obtidos são mostrados a seguir: Índice n Cálcu 1 2 4 8 16 ... Isso feito, temos como aplicar a ideia central do Método de Romberg, que é o emprego da extrapolação de Richardson para obter valores ainda mais precisos, a partir dos resultados do Método dos Trapézios dentro do intervalo de integração considerado. O Método de extrapolação de Richardson permite a obtenção de índices quaisquer, a partir da fórmula: Rotacione a tela. Parece complicado? Nem tanto! Recomendamos construir uma tabela da seguinte forma: R 01 (1 + 1 2 R 02 0, 5 ( 1 1,5 ) + 0 R 03 0, 25 ( 1 1,25 + 1 1,5 + 1 1,7 R 04 1 16 ( 1 + 1.7777777777778 + 1.6 + 1.454545 + 1.142857142857 + 1 R 05 Rik Rik = 4i ⋅ Ri−1k − R i−1 k−1 4i − 1 Assim, considerando os valores da primeira coluna (ou seja, aqueles que calculamos inicialmente nesse exemplo), todas as demais podem ser calculadas, considerando o valor à esquerda e o que fica acima deste último (ou seja, as posições à oeste e à noroeste, respectivamente). Vamos ver? Rotacione a tela. Prosseguindo, você pode obter o valor de , muito mais preciso, para representar o logaritmo neperiano de . Implementação do Método de Romberg em Python Agora, trataremos da utilização do método de Romberg em Python. Para tal, nós utilizaremos o pacote SciPy, o qual disponibiliza a função scipy.integrate.romberg para realizar a integração de acordo com o método de extrapolação de Romberg. Como exemplo, vamos calcular a integral . Para isso, basta executar os comandos na sequência indicada a seguir: Importar o pacote scipy; Importar o pacote de integração (integrate); Definir a função a ser integrada (func); Executar a função de integração (integrate.romberg), indicando a função (func), os limites inferior (1) e superior (2) de integração, com exibição da tabela de resultados até n=16 (show=True). R12 = 4R02 − R 0 1 3 = 0, 69444 R13 = 4R03 − R 0 2 3 = 0, 69325 R23 = 16R13 − R 1 2 15 = 0, 69317 R35 = 0, 69315 2(0, 693147 → 0, 69315) ∫ 2 1 e−xdx Por definição, a função integrate.romberg apresenta os resultados com um erro de aproximação de . Python Vamos fazer outros exemplos com o mesmo pacote em Python? Dessa maneira, veja a sequência de comandos necessários para cálculo da integral , de acordo com o método de Romberg, empregando a função integrate.romberg. Como mencionado anteriormente, a função integrate.romberg apresenta os resultados com um erro de aproximação de . Comentário O trecho de comandos em Python indicado a seguir apresenta a sequência descrita anteriormente para cálculo da integral de acordo com o método de Romberg, empregando a função integrate.romberg. ∫ 21 e −xdx 1, 48 × 10−8 ∫ 21 sen(x)dx 1, 48 × 10−8 >>> import scipy as sp >>> from scipy import integrate >>> func = lambda x:sp.exp(-x) >>> result = integrate.romberg(func, 1, 2, show=True) Romberg integration of <function vectorize1.<locals>.vfunc at 0x0C642270> from [1 Steps StepSize Results 1 1.000000 0.251607 2 0.500000 0.237369 0.232623 4 0.250000 0.233754 0.232549 0.232544 8 0.125000 0.232847 0.232544 0.232544 0.232544 16 0.062500 0.232620 0.232544 0.232544 0.232544 0.232544 The final result is 0.2325441579348341 after 17 function evaluations. 1 2 3 4 5 6 7 8 9 10 11 12 Python Ainda de acordo com a mesma sistemática, veja a sequência de comandos necessários para cálculo da integral , de acordo com o método de Romberg empregando a função integrate.romberg. Como mencionado anteriormente, a função integrate.romberg apresenta os resultados com um erro de aproximação de . Python ∫ 21 cos(x)dx 1, 48 × 10−8 >>> import scipy as sp >>> from scipy import integrate >>> func = lambda x:sp.sin(x) >>> result = integrate.romberg(func, 1, 2, show=True) Romberg integration of <function vectorize1.<locals>.vfunc at 0x0C642270> from [1 Steps StepSize Results 1 1.000000 0.875384 2 0.500000 0.936440 0.956791 4 0.250000 0.951462 0.956470 0.956449 8 0.125000 0.955203 0.956450 0.956449 0.956449 16 0.062500 0.956138 0.956449 0.956449 0.956449 0.956449 The final result is 0.9564491424152621 after 17 function evaluations. >>> import scipy as sp >>> from scipy import integrate >>> func = lambda x:sp.cos(x) >>> result = integrate.romberg(func, 1, 2, show=True) Romberg integration of <function vectorize1.<locals>.vfunc at 0x00FF0858> from [1 Steps StepSize Results 1 1.000000 0.062078 2 0.500000 0.066407 0.067851 4 0.250000 0.067473 0.067828 0.067826 8 0.125000 0.067738 0.067827 0.067826 0.067826 16 0.062500 0.067804 0.067826 0.067826 0.067826 0.067826 The final result is 0.06782644201778379 after 17 function evaluations. 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13 Por fim, veja a sequência de comandos necessários para cálculo da integral , de acordo com o método de Romberg, empregando a função integrate.romberg. Python Como já indicado ao longo do conteúdo, o resultado aqui é bem mais preciso do que com os métodos de interpolação estudados anteriormente, requerendo uma quantidade menor de iterações, o que ilustra a qualidade desse método. Resolução de exercícios com o Python Neste bate-papo, serão resolvidos os exercícios com o método de extrapolação (Romberg) utilizando o Python. ∫ 2 1 sen(x) + cos(x)dx >>> import scipy as sp >>> from scipy import integrate >>> func = lambda x:sp.sin(x) + sp.cos(x) >>> result = integrate.romberg(func, 1, 2, show=True) Romberg integration of <function vectorize1.<locals>.vfunc at 0x0CB9EA50> from [ Steps StepSize Results 1 1.000000 0.937462 2 0.500000 1.002847 1.024642 4 0.250000 1.018935 1.024298 1.024275 8 0.125000 1.022942 1.024277 1.024276 1.024276 16 0.062500 1.023942 1.024276 1.024276 1.024276 1.024276 The final result is 1.0242755844330462 after 17 function evaluations. body 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Vem que eu te explico! Os vídeos a seguir abordam os assuntos mais relevantes do conteúdo que você acabou de estudar. Módulo 4 - Vem que eu te explico! Resolver problemas de integração numérica com extrapolação, quando devo utilizar? Módulo 4 - Vem que eu te explico! De�nir extrapolação de Romberg, qual a vantagem? Vamos praticar alguns conceitos? Falta pouco para atingir seus objetivos. Questão 1 Calcule o valor de . Para tal, utilize o método de Romberg, dividindo o intervalo de integração em 8 partes: ∫ 1 0 cos(x)dx A 0,84147 B 0,85147 C 0,86147 D 0,87147 E 0,88147 Responder Questão 2 Calcule o valor de . Para tal, utilize o método de Romberg, dividindo o intervalo de integração em8 partes: ∫ 1 0 sen(x)dx A 0,45970 B 0,47970 C 0,49970 D 0,43970 E 0,41970 Considerações �nais Como vimos, é possível empregar modelos matemáticos para resolução numérica de integrais definidas. Neste conteúdo, você estudou os principais métodos associados: Interpolação e Extrapolação. Os métodos de interpolação como os de Newton-Cotes, nas variantes dos Retângulos, Trapézios e de Simpson, são caracterizados pela simplicidade, mas requerem grande quantidade de passos para que apresentem um resultado mais preciso. Por sua vez, o método da extrapolação, analisado de acordo com a técnica de Romberg, apresenta melhores resultados a partir do emprego de uma fórmula mais elaborada de aproximação do valor real. Além disso, você também pode identificar como é simples a implementação desses modelos em ferramentas de suporte computacional. Em particular, vimos exemplos de implementação em Python, automatizando procedimentos e permitindo a rápida resolução desses métodos. Você não só conheceu os métodos, mas também sua implementação em ambiente computacional, de modo a utilizar essa importante ferramenta para a resolução de problemas clássicos e variados em Engenharia. Podcast Neste bate-papo, relembre os principais conceitos abordados com o intuito de reforçar os conhecimentos desenvolvidos no material. Responder 00:00 02:45 1x Referências MOURA, D. F. C, Cálculo Numérico. Rio de Janeiro: SESES, 2017. 144 p. UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL. UFRGS. Cálculo Numérico: Um Livro Colaborativo Versão Python. Porto Alegre: UFRGS, 2019. Explore + Para encontrar demonstrações e discussões acerca dos assuntos estudados, busque por vídeos no YouTube: Integração Numérica – Método dos Trapézios Método da Integração de Romberg e Algoritmo em Python Leia o artigo Uso de integração numérica em problemas de Engenharia, de Augusto Giacchini Kloth e Olga Harumi Saito, do departamento acadêmico de Matemática da UTFPR. Baixar conteúdo https://stecine.azureedge.net/repositorio/00212ti/02521/index.html javascript:CriaPDF()