Pular para o conteúdo principal

[Implementação] Integração aproximada pelo Método do Trapézio - Python

[Implementação] Integração aproximada pelo Método do Trapézio - Python

Este artigo é uma continuação da discussão teórica feita aqui. Se você ainda não leu, por favor, leia. Aqui vamos simplesmente implementar, em Python, tudo o que foi discutido lá.

Começando do começo

Conforme já discutido aqui (se você não leu, é a última chance), a equação para a integração aproximada pelo Método do Trapézio é a seguinte:

abf(x)dxΔx2i=1n[f(xi)+f(xi1)]\int\limits_a^b {f(x)dx} \approx \frac{\Delta x}{2}\sum\limits_{i=1}^n {[f(x_i) + f(x_{i-1})]}

E a integral que queremos calcular é a seguinte:

01(x5+27x4134x3+12x2+37x+15)dx\int\limits_0^1 {\left(x^5+27x^4-\frac{13}{4}x^3+\frac12 x^2 + 37x + 15\right) dx}

Primeiramente, vamos definir essa função (para facilitar nosso trabalho):

def f(x):
    return x**5 + 27*(x**4) - ((13/4) * (x**3)) + ((0.5)*(x**2)) + (37*x) + 15

Calculando a integral

Vamos, agora, implementar a função que, de fato, calcula a integral. Primeiro, vamos definir xix_i. Vimos que x0=ax_0 = a, então x1=a+Δxx_1 = a + \Delta x e xi=a+iΔxx_i = a + i\Delta x.
No código, usaremos as seguintes variáveis:

A = área
Dx = Δx\Delta x = ban\frac{b-a}{n}
xi = xix_i
xi1 = xi1x_{i-1}
a = aa = limite inferior de integração
b = bb = limite superior de integração

Nos basta, então, seguir a equação que temos. Primeiro vou definir Δx\Delta x e algumas variáveis e, então, calcularemos o somatório (veja que, primeiro, defini xix_i e xi1x_{i-1} e depois somei chamando a função ff).

def integral(a, b, n):
    A = 0
    Dx = (b-a)/n
    for i in range(1, n+1):
        xi  = a + Dx*i
        xi1 = a + Dx*(i-1)
        A += f(xi) + f(xi1)
    A *= (Dx/2)
    return A

Por fim, basta multiplicar o somatório por Δx2\frac{\Delta x}{2}.
Agora que temos a função de integração, vamos receber aa, bb e nn do usuário e exibir o resultado:

a = float(input("Por favor, insira o limite inferior a = "))
b = float(input("Por favor, insira o limite superior b = "))
n = int(input("Por favor, insira o a quantidade de iterações desejada: n = "))
print(integral(a,b,n))

E, pronto, temos o programa finalizado (código completo no final). Apenas para efeito de teste, integrei no intervalo de 0 a 1 com n=1n=1, n=10n=10, n=100n=100 e n=1000n=1000. A integral exata (obtida através da primitiva) também é mostrada abaixo.

12i=11[f(xi)+f(xi1)]=46.125\frac{1}{2}\sum\limits_{i=1}^1 {[f(x_i) + f(x_{i-1})]} = 46.125

120i=110[f(xi)+f(xi1)]=38.50761\frac{1}{20}\sum\limits_{i=1}^{10} {[f(x_i) + f(x_{i-1})]} = 38.50761

1200i=1100[f(xi)+f(xi1)]=38.42170207350001\frac{1}{200}\sum\limits_{i=1}^{100} {[f(x_i) + f(x_{i-1})]} = 38.42170207350001

12000i=11000[f(xi)+f(xi1)]=38.42084202083233\frac{1}{2000}\sum\limits_{i=1}^{1000} {[f(x_i) + f(x_{i-1})]} = 38.42084202083233

01f(x)dx=922124038.42083333333333\int\limits_0^1 {f(x)dx} = \frac{9221}{240} \approx 38.42083333333333

Concluímos que conseguimos uma aproximação excelente com esse método. Além disso, o cálculo em Python se mostrou muito mais preciso que no Portugol Studio.

Veja também a implementação em Portugol Studio.

Código final:

raw

def f(x):
    return x**5 + 27*(x**4) - ((13/4) * (x**3)) + ((0.5)*(x**2)) + (37*x) + 15

def integral(a, b, n):
    A = 0
    Dx = (b-a)/n
    for i in range(1, n+1):
        xi  = a + Dx*i
        xi1 = a + Dx*(i-1)
        A += f(xi) + f(xi1)
    A *= (Dx/2)
    return A

a = float(input("Por favor, insira o limite inferior a = "))
b = float(input("Por favor, insira o limite superior b = "))
n = int(input("Por favor, insira o a quantidade de iterações desejada: n = "))
print(integral(a,b,n))

Comentários

Postagens mais visitadas deste blog

Link Duplo - Abrir duas páginas com apenas um link

Algumas vezes, pode ser que seja necessário que apenas um link redirecione para duas páginas diferentes, por exemplo, quando um link deve abrir a página desejada e, ao mesmo tempo, abrir algum anúncio ou, ainda, quando o link principal é a página desejada e um texto de apoio é aberto. Entenda o processo Código utilizado:  <a href="link_da_nova_pagina.html" target="_blank" onclick="location.href='link_da_mesma_página.html'">Texto do link</a> Qualquer dúvida, entre em contato:  Vídeo no Youtube -  https://youtu.be/TW4kpa-0dYk . Canal no Youtube - HM Programming Facebook - HM Programming

Instalando o ChemDraw no Linux

Instalando o Chemdraw no Linux A migração para o Linux é dificultada para algumas pessoas devido à incompatibilidade de alguns programas. Um desses programas é o ChemDraw, importante programa de ilustrações para químicos que não está disponível no sistema do pinguim. Embora a utilização do chemfig \texttt{chemfig} chemfig com LaTeX \LaTeX L A T E ​ X seja uma ótima opção, a sintaxe pode assustar novos usuários. Por isso, neste tutorial mostrarei como instalar o ChemDraw no Linux utilizando o Wine.