Tema3 - Integração Numérica em Python

Você também pode gostar

Você está na página 1de 83

14/11/22, 09:39 Integração numérica em Python

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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 1/83
14/11/22, 09:39 Integração numérica em Python

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ódulo 2

Métodos de interpolação Métodos de interpolação


(Newton-Cotes: retângulos) (Newton-Cotes: trapézios)

Aplicar o método de interpolação de Aplicar o método de interpolação de


Newton-Cotes, Método dos Retângulos, por Newton-Cotes, Método dos Trapézios, por
meio da implementação computacional em meio da implementação computacional em
Python. Python.

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 2/83
14/11/22, 09:39 Integração numérica em Python

Módulo 3 Módulo 4

Métodos de interpolação Métodos de extrapolação


(Newton-Cotes: Regras de (Romberg)
Simpson)
Aplicar o método de extrapolação de
Romberg, por meio da implementação
Aplicar o método de interpolação de
computacional em Python.
Newton-Cotes, Método de Simpson, por
meio da implementação computacional em
Python.

Introdução
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.
https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 3/83
14/11/22, 09:39 Integração numérica em Python

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á?

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 4/83
14/11/22, 09:39 Integração numérica em Python

1 - Métodos de interpolação (Newton-Cotes: retângulos)


Ao final 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:

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 5/83
14/11/22, 09:39 Integração numérica em Python

∫ f (x)dx
a

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.

Resumindo
https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 6/83
14/11/22, 09:39 Integração numérica em Python

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.

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 princípio, foram criados diversos métodos que
dividem a área a ser calculada em vários elementos, de pequena dimensão.

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.

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.

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 7/83
14/11/22, 09:39 Integração numérica em Python

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:

n

i=1
α i f (x i ) ,

Em que os valores α i são reais (peso da função) e

∀x i ∈ R ⇒ x i ∈ [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
b

a
f (x)dx é 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:

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 8/83
14/11/22, 09:39 Integração numérica em Python

n n
x i + x i+1
∑ α i f (x i ) = h ∑ f ( )
2
i=1 i=1

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


3 3

2
f (x)dx = ∫
2
x
2
+ cos(x)dx (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:

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 9/83
14/11/22, 09:39 Integração numérica em Python

3 − 2
h = = 0, 2
5

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
x i +x i+1 x i +(x i +h)

2
=
2
.

Atenção!
Repare que cada ponto (x i+1 ) corresponde ao valor de seu antecessor (x i ),
adicionado do tamanho de cada intervalo (h).

Dessa maneira, percebemos que os cálculos ficam como está exposto na tabela
a seguir:

Intervalo Limite inferior Limite superior

1 2 2.2

2 2,2 2,4

3 2,4 2,6

4 2,6 2,8

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 10/83
14/11/22, 09:39 Integração numérica em Python

Intervalo Limite inferior Limite superior

5 2,8 3,0

Feitos esses cálculos, conseguimos chegar a uma aproximação para a integral


de f (x) = x
2
+ cos(x) , dada por:

n n 5
x i + x i+1 (2 + i ∗ 0, 2) + [2 + (i − 1) ∗ 0, 2]
∑ α i f (x i ) = h ∑ f ( ) = 0, 2 ∑ f ( )
2 2
i=1 i=1 i=1

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

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 x 2 − x + 2 , no intervalo de 0 a 1,


empregando o método dos retângulos. Como já vimos, a resolução do problema
https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 11/83
14/11/22, 09:39 Integração numérica em Python

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 é f (x) = x


2
− x + 2 ;
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.

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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 12/83
14/11/22, 09:39 Integração numérica em Python

X x2 – x + 2 f(x).Δx

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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 13/83
14/11/22, 09:39 Integração numérica em Python

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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 14/83
14/11/22, 09:39 Integração numérica em Python

X x2 – x + 2 f(x).Δx

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

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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 15/83
14/11/22, 09:39 Integração numérica em Python

X x2 – x + 2 f(x).Δx

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 cos(x) − 3. sen(x) 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:

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 16/83
14/11/22, 09:39 Integração numérica em Python

1. A função a ser integrada é 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.

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 17/83
14/11/22, 09:39 Integração numérica em Python

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

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 +

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 18/83
14/11/22, 09:39 Integração numérica em Python

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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 19/83
14/11/22, 09:39 Integração numérica em Python

X cos(x) – 3.sen(x) f(x).Δx

0,5 -0,56 -0,03

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.

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 20/83
14/11/22, 09:39 Integração numérica em Python

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 x 2 no intervalo [2, 3]. Em Python, podemos implementar o
Método dos Retângulos para efetuar essa aproximação da seguinte maneira:

Python
content_copy

1 import numpy as np
2 import math
3 f = lambda x: x**2
4 a = 2; b = 3; N = 5
5 x = np.linspace(a,b,N+1)
6 y = f(x)
7 dx = (b-a)/N
8 x_medio = np.linspace(dx/2,b - dx/2,N)
9 soma_retangulo = np.sum(f(x_medio) * dx)
10 print("Integral:",soma_retangulo)

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 21/83
14/11/22, 09:39 Integração numérica em Python

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

Falta pouco para atingir seus objetivos.

Vamos praticar alguns conceitos?

Questão 1

2
Calcule o valor de ∫ 0 sen(x)dx . Para tal, utilize o Método dos Retângulos,
dividindo o intervalo de integração em 4 partes:

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 22/83
14/11/22, 09:39 Integração numérica em Python

A 1,43101

B 1,53101

C 1,63101

D 1,73101

E 1,83101

Parabéns! A alternativa A está correta.

Como estudamos, a resolução de uma integral definida requer que o


enunciado forneça alguns elementos importantes, como: a função
propriamente dita a ser integrada; o limite inferior de integração; o limite
superior de integração; a quantidade de intervalos (ou o tamanho de cada
intervalo); e o método a ser utilizado.

Neste exemplo, temos que:

- A função propriamente dita a ser integrada é f (x) = sen(x) ;

- O limite inferior de integração é 0;


https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 23/83
14/11/22, 09:39 Integração numérica em Python

- O limite superior de integração é 2;

- A quantidade de intervalos (ou o tamanho de cada intervalo) é 4; e

- O método a ser utilizado é de Interpolação Numérica dos Retângulos.

Aplicando os conceitos ensinados acerca desse método, temos:

N x Y

0 ¼ sen(¼) = 0,24740

1 ¾ sen(¾) = 0,68164

2 5/4 sen (5/4) = 0,94898

3 7/4 sen (7/4) = 0,98398

Para obter o valor de I, basta somar os valores indicados na coluna da direita


(Y) e multiplicar por 1/2. Fazendo isso, obtemos I = 1,43101.

Questão 2

2
Calcule o valor de ∫ 0 2. sen(x)dx . Para tal, utilize o Método dos Retângulos,
dividindo o intervalo de integração em 4 partes:

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 24/83
14/11/22, 09:39 Integração numérica em Python

A 2,86202

B 2,76202

C 2,66202

D 2,56202

E 2,46202

Parabéns! A alternativa A está correta.

Estudamos que a resolução de uma integral definida requer alguns elementos


importantes fornecidos pelo enunciado, como: a função propriamente dita a
ser integrada; o limite inferior de integração; o limite superior de integração; a
quantidade de intervalos (ou o tamanho de cada intervalo); e o método a ser
utilizado.

Neste exemplo, temos que:

- A função propriamente dita a ser integrada é f (x) = 2 ⋅ sen(x)

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 25/83
14/11/22, 09:39 Integração numérica em Python

- O limite inferior de integração é 0;

- O limite superior de integração é 2;

- A quantidade de intervalos (ou o tamanho de cada intervalo) é 4; e

- O método a ser utilizado é de Interpolação Numérica dos Retângulos.

Aplicando os conceitos ensinados acerca desse método, temos:

N x Y

0 ¼ 2.sen (¼) = 0,49480

1 ¾ 2.sen (¾) = 1,36328

2. sen (5/4) =
2 5/4
1,89796

2. sen (7/4) =
3 7/4
1,96796

Para obter o valor de I, basta somar os valores indicados na coluna da direita


(Y) e multiplicar por 1/2. Fazendo isso, obtemos I = 2,86202.

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 26/83
14/11/22, 09:39 Integração numérica em Python

2 - Métodos de interpolação (Newton-Cotes: trapézios)


Ao final 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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 27/83
14/11/22, 09:39 Integração numérica em Python

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


b
definida por ∫ a f (x)dx 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:

n n
f (x i ) + f (x i+1 )
∑ α i f (x i ) = h ∑
2
i=1 i=1

Método dos Trapézios


Para entender melhor como isso é feito, veja a imagem apresentada a seguir:

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 28/83
14/11/22, 09:39 Integração numérica em Python

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
3 3
Retângulos, calculando ∫ 2 f (x)dx = ∫
2
x
2
+ cos(x)dx . Como mencionado
há pouco, vamos dividir o intervalo de integração [2,3] em 5 intervalos iguais de
tamanho:

3 − 2
h = = 0, 2
5

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

f (x i )+f (x i +h)

2
.

Mais uma vez, note que cada ponto (x i+1 ) corresponde ao valor de seu
antecessor (x i ), adicionado do tamanho de cada intervalo (h).

Dessa maneira, neste segundo exemplo, temos a situação exposta na tabela


apresentada a seguir:

Intervalo Limite inferior Limite superior

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 29/83
14/11/22, 09:39 Integração numérica em Python

Intervalo Limite inferior Limite superior

1 2 2.2

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


f (x) = x
2
+ cos(x) , dada por:

n n
f (x i ) + f (x i+1 )
∑ α i f (x i ) =h ∑
2
i=1 i=1

5
f (2 + (i − 1) ∗ 0, 2) + f [2 + i ∗ 0, 2]
= 0, 2 ∑
2
i=1

→ 0, 2 ∗ (3, 9177 + 4, 6371 + 5, 4629 + 6, 4004 + 7, 4539) = 5, 5744

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 30/83
14/11/22, 09:39 Integração numérica em Python

Agora, vamos calcular novamente a integral de x 2 − x + 2 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).

Neste exemplo, temos que:

A função a ser integrada é f (x) = x


2
− x + 2 ;
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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 31/83
14/11/22, 09:39 Integração numérica em Python

X x2 – x + 2 f(x).Δx

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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 32/83
14/11/22, 09:39 Integração numérica em Python

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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 33/83
14/11/22, 09:39 Integração numérica em Python

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,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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 34/83
14/11/22, 09:39 Integração numérica em Python

X x2 – x + 2 f(x).Δx

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,
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;

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 35/83
14/11/22, 09:39 Integração numérica em Python

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 é f (x) = cos(x) − 3. sen(x) ;


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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 36/83
14/11/22, 09:39 Integração numérica em Python

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

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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 37/83
14/11/22, 09:39 Integração numérica em Python

X cos(x) – 3.sen(x) f(x).Δx

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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 38/83
14/11/22, 09:39 Integração numérica em Python

X cos(x) – 3.sen(x) f(x).Δx

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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 39/83
14/11/22, 09:39 Integração numérica em Python

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 x 2 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
content_copy

1 import numpy as np
2 import math
3 f = lambda x: x**2
4 a = 2; b = 3; N = 5
5 x = np.linspace(a,b,N+1)
6 y = f(x)
7 y_maior = y[1:]
8 y_menor = y[:-1]
https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 40/83
14/11/22, 09:39 Integração numérica em Python

9 dx = (b-a)/N
10 soma_trapezio = (dx/2) * np.sum(y_maior + y_menor)
11 print("Integral:",soma_trapezio)

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

Falta pouco para atingir seus objetivos.

Vamos praticar alguns conceitos?


https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 41/83
14/11/22, 09:39 Integração numérica em Python

Questão 1

2
Calcule o valor de ∫ 1 cos(x)dx . Para tal, utilize o Método dos Trapézios,
dividindo o intervalo de integração em 8 partes:

A 0,0677

B 0,0777

C 0,0877

D 0,09771

E 0,0577

Parabéns! A alternativa A está correta.

Como vimos, a resolução de uma integral definida requer que o enunciado


forneça alguns elementos importantes, como: a função propriamente dita a

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 42/83
14/11/22, 09:39 Integração numérica em Python

ser integrada; o limite inferior de integração; o limite superior de integração; a


quantidade de intervalos (ou o tamanho de cada intervalo); e o método a ser
utilizado.

Neste exemplo, temos que:

- A função propriamente dita a ser integrada é f (x) = cos(x) ;

- O limite inferior de integração é 1;

- O limite superior de integração é 2;

- A quantidade de intervalos (ou o tamanho de cada intervalo) é 8; e

- O método a ser utilizado é de Interpolação Numérica dos Trapézios.

Aplicando os conceitos ensinados acerca desse método, temos:

n X Y

0 1 cos (1) = 0,54030

2. cos (9/8) =
1 9/8
0,86235

2. cos (5/4) =
2 5/4
0,63064

2. cos (11/8) =
3 11/8
0,38910

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 43/83
14/11/22, 09:39 Integração numérica em Python

n X Y

2. cos (3/2) =
4 3/2
0,14147

2. cos (13/8) = -
5 13/8
0,10835

2. cos (7/4) = -
6 7/4
0,35649

2. cos (15/8) = -
7 15/8
0,59907

8 2 cos (2) = - 0,41615

Para obter o valor de I, basta somar os valores indicados na coluna da direita


(Y) e multiplicar por 1/16. Fazendo isso, obtemos I = 0,06774.

Questão 2

2
Calcule o valor de ∫ 1 2. cos(x)dx . Para tal, utilize o Método dos Trapézios,
dividindo o intervalo de integração em 8 partes:

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 44/83
14/11/22, 09:39 Integração numérica em Python

A 0,13547

B 0,15547

C 0,11547

D 0,17547

E 0,19547

Parabéns! A alternativa A está correta.

Como estudamos, a resolução de uma integral definida requer que o


enunciado forneça alguns elementos importantes, como: a função
propriamente dita a ser integrada; o limite inferior de integração; o limite
superior de integração; a quantidade de intervalos (ou o tamanho de cada
intervalo); e o método a ser utilizado.

Neste exemplo, temos que:

- A função propriamente dita a ser integrada é f (x) = 2. cos(x) ;

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 45/83
14/11/22, 09:39 Integração numérica em Python

- O limite inferior de integração é 1;

- O limite superior de integração é 2;

- A quantidade de intervalos (ou o tamanho de cada intervalo) é 8; e

- O método a ser utilizado é de Interpolação Numérica dos Trapézios.

Aplicando os conceitos ensinados acerca desse método, temos:

n X Y

0 1 [2. cos (1)] = 1,0806

2. [2. cos (9/8)] =


1 9/8
1,7247

2. [2. cos (5/4)] =


2 5/4
1,26128

2. [2. cos (11/8)] =


3 11/8
0,7782

2. [2. cos (3/2)] =


4 3/2
0,28294

2. [2. cos (13/8)] = -


5 13/8
0,2167

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 46/83
14/11/22, 09:39 Integração numérica em Python

n X Y

2. [2. cos (7/4)] = -


6 7/4
0,72198

2. [2. cos (15/8)] = -


7 15/8
1,19814

[2. cos (2)] = -


8 2
0,8323

Para obter o valor de I, basta somar os valores indicados na coluna da direita


(Y) e multiplicar por 1/16. Fazendo isso, obtemos I = 0,13547.

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 47/83
14/11/22, 09:39 Integração numérica em Python

3 - Métodos de interpolação (Newton-Cotes: regras de Simpson)


Ao final 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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 48/83
14/11/22, 09:39 Integração numérica em Python

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


b
anteriores, o princípio básico para calcular ∫ a f (x)dx

consiste em dividir o intervalo de integração [a,b] em h partes


iguais.

Assim, a integral é calculada de acordo com a expressão apresentada a seguir:

n n
f (x i ) + 4f (y) + f (x i+1 ) x i + x i+1
∑ α i f (x i ) = h ∑ , onde y =
6 2
i=1 i=1

Vamos ver qual é o efeito dessa modificação?

Mais uma vez utilizando o exemplo anterior, considere o cálculo de


3 3

2
f (x)dx = ∫
2
x
2
+ cos(x)dx . Como nos demais casos, dividimos o
intervalo de integração [2,3] em 5 intervalos iguais de tamanho:

3 − 2
h = = 0, 2
5

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 49/83
14/11/22, 09:39 Integração numérica em Python

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:

f (x i ) + 4f (y) + f (x i+1 ) x i + x i+1


, onde y =
6 2

De igual modo ao que fizemos nos casos anteriores, cada ponto (x i+1 ) equivale
ao valor de seu antecessor ((x i )), 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

1 2 2,2

2 2,2 2,4

3 2,4 2,6

4 2,6 2,8

5 2,8 3,0

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 50/83
14/11/22, 09:39 Integração numérica em Python

Com isso, tem-se a seguinte aproximação para a integral de


f (x) = x
2
+ cos(x) , com resultado igual a 5,5652. Eis os cálculos:

n
f (x i ) + 4f (y) + f (x i+1 )
h∑
6
i=1

5
f (a + (i − 1)h) + 4f (y) + f (a + ih)
=0, 2 ∑ , onde y
6
i=1

(a + (i − 1)h) + (a + ih)
=
2

0,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) + 4f (2, 9) + f

6

→= 5, 5652

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.

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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 51/83
14/11/22, 09:39 Integração numérica em Python

aprimorando a função de aproximação – a partir de funções cúbicas, quárticas


ou de ordem superior.

Para concluir, aplicaremos o Método de Simpson para calcular a integral de


x
2
− x + 2 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 é f (x) = x


2
− x + 2 ;
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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 52/83
14/11/22, 09:39 Integração numérica em Python

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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 53/83
14/11/22, 09:39 Integração numérica em Python

X x2 – x + 2 f(x).Δx

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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 54/83
14/11/22, 09:39 Integração numérica em Python

X x2 – x + 2 f(x).Δx

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,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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 55/83
14/11/22, 09:39 Integração numérica em Python

X x2 – x + 2 f(x).Δx

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;

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 56/83
14/11/22, 09:39 Integração numérica em Python

A quantidade de intervalos (ou o tamanho de cada intervalo).

Neste exemplo, temos que:

A função a ser integrada é f (x) = cos(x) − 3. sen(x) ;


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.

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 57/83
14/11/22, 09:39 Integração numérica em Python

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

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 +

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 58/83
14/11/22, 09:39 Integração numérica em Python

(-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

0,3 0,07 -0,00

0,35 -0,09 -0,01

0,4 -0,25 -0,02

0,45 -0,40 -0,02

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 59/83
14/11/22, 09:39 Integração numérica em Python

X cos(x) – 3.sen(x) f(x).Δx

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.

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 60/83
14/11/22, 09:39 Integração numérica em Python

Implementação do Método de Simpson em


Python
Vamos ver um exemplo de integração em Python? Calcularemos a integral da
função x 2 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:

Python
content_copy

1 import numpy as np
2 import math
3 f = lambda x: x**2
4 a = 2; b = 3; N = 10
5 x = np.linspace(a,b,N+1)
6 y = f(x)
7 dx = (b-a)/N
8 soma_Simpson = dx/3 * np.sum(y[0:-1:2] + 4*y[1::2] + y[2::
9 print("Integral:",soma_Simpson)

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 61/83
14/11/22, 09:39 Integração numérica em Python

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

Falta pouco para atingir seus objetivos.

Vamos praticar alguns conceitos?

Questão 1

2
Calcule o valor de ∫ 0 sen(x)dx . Para tal, utilize o Método de Simpson,
dividindo o intervalo de integração em 4 partes:

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 62/83
14/11/22, 09:39 Integração numérica em Python

A 1,42

B 1,52

C 1,62

D 1,72

E 1,82

Parabéns! A alternativa A está correta.

Como estudamos, a resolução de uma integral definida requer que o


enunciado forneça alguns elementos importantes, como: a função
propriamente dita a ser integrada;

- O limite inferior de integração; o limite superior de integração; a


quantidade de intervalos (ou o tamanho de cada intervalo); e o método
a ser utilizado.

Neste exemplo, temos que:


https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 63/83
14/11/22, 09:39 Integração numérica em Python

- A função propriamente dita a ser integrada é f (x) = sen(x) ;

- O limite inferior de integração é 0;

- O limite superior de integração é 2;

- A quantidade de intervalos (ou o tamanho de cada intervalo) é 4;

- O método a ser utilizado é de Interpolação Numérica de Simpson.

Aplicando os conceitos ensinados acerca desse método, temos:

N x Y

0 0 0,12

1 1/2 0,34

2 1 0,47

3 3/2 0,49

Para obter o valor de I, basta somar os valores indicados na coluna da direita


(Y). Fazendo isso, obtemos I = 1,42.

Questão 2

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 64/83
14/11/22, 09:39 Integração numérica em Python
2
Calcule o valor de ∫ 0 cos(x)dx . Para isso, utilize o Método de Simpson,
dividindo o intervalo de integração em 4 partes:

A 0,91

B 1,01

C 0,81

D 0,71

E 0,61

Parabéns! A alternativa A está correta.

Como vimos, a resolução de uma integral definida requer que o enunciado


forneça alguns elementos importantes, como: a função propriamente dita a
ser integrada; o limite inferior de integração; o limite superior de integração; a
quantidade de intervalos (ou o tamanho de cada intervalo); e o método a ser
utilizado.

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 65/83
14/11/22, 09:39 Integração numérica em Python

Neste exemplo, temos que:

- A função propriamente dita a ser integrada é f (x) = cos(x) ;

- O limite inferior de integração é 0;

- O limite superior de integração é 2;

- A quantidade de intervalos (ou o tamanho de cada intervalo) é 4;

- O método a ser utilizado é de Interpolação Numérica de Simpson.

Aplicando os conceitos ensinados acerca desse método, temos:

N x Y

0 0 0,48

1 1/2 0,36

2 1 0,16

3 3/2 -0,09

Para obter o valor de I, basta somar os valores indicados na coluna da direita


(Y). Fazendo isso, obtemos I = 0,91.

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 66/83
14/11/22, 09:39 Integração numérica em Python

4 - Métodos de extrapolação (Romberg)


Ao final 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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 67/83
14/11/22, 09:39 Integração numérica em Python

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:

2
1
I = ∫ dx
1
x

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

R
0
1
1

R
0
2
2

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 68/83
14/11/22, 09:39 Integração numérica em Python

Índice n

R
0
3
4

1
( 1 + 1.77777777
8
0 16
R
4

R
0
5
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

R
i
k
quaisquer, a partir da fórmula:

i i−1 i−1
4 ⋅ R − R
i k k−1
R =
k i
4 − 1

Parece complicado? Nem tanto! Recomendamos construir uma tabela da


seguinte forma:

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 69/83
14/11/22, 09:39 Integração numérica em Python

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?

0 0
4R − R
1 2 1
R = = 0, 69444
2
3
0 0
4R − R
1 3 2
R = = 0, 69325
3
3
1 1
16R − R
2 3 2
R = = 0, 69317
3
15

Prosseguindo, você pode obter o valor de R 35 = 0, 69315 , muito mais preciso,


para representar o logaritmo neperiano de 2(0, 693147 → 0, 69315) .

Implementação do Método de Romberg


https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 70/83
14/11/22, 09:39 Integração numérica em Python

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.

2
Como exemplo, vamos calcular a integral ∫ 1 e
−x
dx .

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

Comentário

O trecho de comandos em Python indicado a seguir apresenta a sequência


2
descrita anteriormente para cálculo da integral ∫ 1 e
−x
dx de acordo com o
método de Romberg, empregando a função integrate.romberg.

Por definição, a função integrate.romberg apresenta os resultados com um erro


de aproximação de 1, 48 × 10 −8 .

Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 71/83
14/11/22, 09:39 Integração numérica em Python

1 >>> import scipy as sp


2 >>> from scipy import integrate
3 >>> func = lambda x:sp.exp(-x)
4 >>> result = integrate.romberg(func, 1, 2, show=True)
5 Romberg integration of <function vectorize1.<locals>.vfun
6 Steps StepSize Results
7 1 1.000000 0.251607
8 2 0.500000 0.237369 0.232623
9 4 0.250000 0.233754 0.232549 0.232544
10 8 0.125000 0.232847 0.232544 0.232544 0.232544
11 16 0.062500 0.232620 0.232544 0.232544 0.232544
12 The final result is 0.2325441579348341 after 17 function

Vamos fazer outros exemplos com o mesmo pacote em


Python?

Dessa maneira, veja a sequência de comandos necessários para cálculo da


2
integral ∫ 1 sen(x)dx , 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 1, 48 × 10 −8 .

Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 72/83
14/11/22, 09:39 Integração numérica em Python

1 >>> import scipy as sp


2 >>> from scipy import integrate
3 >>> func = lambda x:sp.sin(x)
4 >>> result = integrate.romberg(func, 1, 2, show=True)
5 Romberg integration of <function vectorize1.<locals>.vfun
6 Steps StepSize Results
7 1 1.000000 0.875384
8 2 0.500000 0.936440 0.956791
9 4 0.250000 0.951462 0.956470 0.956449
10 8 0.125000 0.955203 0.956450 0.956449 0.956449
11 16 0.062500 0.956138 0.956449 0.956449 0.956449
12 The final result is 0.9564491424152621 after 17 function
13

Ainda de acordo com a mesma sistemática, veja a sequência de comandos


2
necessários para cálculo da integral ∫ 1 cos(x)dx , 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 1, 48 × 10 .
−8

Python
content_copy

1 >>> import scipy as sp


2 >>> from scipy import integrate

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 73/83
14/11/22, 09:39 Integração numérica em Python

3 >>> func = lambda x:sp.cos(x)


4 >>> result = integrate.romberg(func, 1, 2, show=True)
5 Romberg integration of <function vectorize1.<locals>.vfun
6 Steps StepSize Results
7 1 1.000000 0.062078
8 2 0.500000 0.066407 0.067851
9 4 0.250000 0.067473 0.067828 0.067826
10 8 0.125000 0.067738 0.067827 0.067826 0.067826
11 16 0.062500 0.067804 0.067826 0.067826 0.067826
12 The final result is 0.06782644201778379 after 17 function
13

Por fim, veja a sequência de comandos necessários para cálculo da integral


2

1
sen(x) + cos(x)dx , de acordo com o método de Romberg, empregando a
função integrate.romberg.

Python
content_copy

1 >>> import scipy as sp


2 >>> from scipy import integrate
3 >>> func = lambda x:sp.sin(x) + sp.cos(x)
4 >>> result = integrate.romberg(func, 1, 2, show=True)
5 Romberg integration of <function vectorize1.<locals>.vfu
6 Steps StepSize Results
7 1 1.000000 0.937462
8 2 0.500000 1.002847 1.024642

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 74/83
14/11/22, 09:39 Integração numérica em Python

9 4 0.250000 1.018935 1.024298 1.024275


10 8 0.125000 1.022942 1.024277 1.024276 1.024276
11 16 0.062500 1.023942 1.024276 1.024276 1.024276
12 The final result is 1.0242755844330462 after 17 function
13 body
14

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.

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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 75/83
14/11/22, 09:39 Integração numérica em Python

Falta pouco para atingir seus objetivos.

Vamos praticar alguns conceitos?

Questão 1

1
Calcule o valor de ∫ 0 cos(x)dx . Para tal, utilize o método de Romberg,
dividindo o intervalo de integração em 8 partes:

A 0,84147

B 0,85147

C 0,86147

D 0,87147

E 0 88147
https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 76/83
14/11/22, 09:39 Integração numérica em Python
E 0,88147

Parabéns! A alternativa A está correta.

Como vimos, a resolução de uma integral definida requer que o enunciado


forneça alguns elementos importantes, como: a função propriamente dita a
ser integrada; o limite inferior de integração; o limite superior de integração; a
quantidade de intervalos (ou o tamanho de cada intervalo); e o método a ser
utilizado.

Neste exemplo, temos que:

- A função propriamente dita a ser integrada é f (x) = cos(x) ;

- O limite inferior de integração é 0;

- O limite superior de integração é 1;

- A quantidade de intervalos (ou o tamanho de cada intervalo) é 8;

- O método a ser utilizado é de Romberg.

Aplicando os conceitos ensinados acerca desse método, temos:

N R
n
n

1 0,84177

2 0,84147

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 77/83
14/11/22, 09:39 Integração numérica em Python

N R
n
n

3 0,84147

Assim, obtemos I = 0,84147.

Questão 2

1
Calcule o valor de ∫ 0 sen(x)dx . Para tal, utilize o método de Romberg,
dividindo o intervalo de integração em 8 partes:

A 0,45970

B 0,47970

C 0,49970

D 0,43970

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 78/83
14/11/22, 09:39 Integração numérica em Python

E 0,41970

Parabéns! A alternativa A está correta.

Como vimos, a resolução de uma integral definida requer que o enunciado


forneça alguns elementos importantes, como: a função propriamente dita a
ser integrada; o limite inferior de integração; o limite superior de integração; a
quantidade de intervalos (ou o tamanho de cada intervalo); e o método a ser
utilizado.

Neste exemplo, temos que:

- A função propriamente dita a ser integrada é f (x) = sen(x) ;

- O limite inferior de integração é 0;

- O limite superior de integração é 1;

- A quantidade de intervalos (ou o tamanho de cada intervalo) é 8;

- O método a ser utilizado é de Romberg.

Aplicando os conceitos ensinados acerca desse método, temos:

N R
n
n

1 0,45986

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 79/83
14/11/22, 09:39 Integração numérica em Python

N R
n
n

2 0,45970

3 0,45970

Assim, obtemos I = 0,45970

Considerações finais
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

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 80/83
14/11/22, 09:39 Integração numérica em Python

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.

headset Podcast
Neste bate-papo, relembre os principais conceitos abordados com o intuito de
reforçar os conhecimentos desenvolvidos no material.

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 81/83
14/11/22, 09:39 Integração numérica em Python

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.

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 82/83
14/11/22, 09:39 Integração numérica em Python

https://stecine.azureedge.net/repositorio/00212ti/02521/index.html# 83/83

Você também pode gostar