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:
E a integral que queremos calcular é a seguinte:
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 . Vimos que , então e .
No código, usaremos as seguintes variáveis:
A
= área
Dx
= =
xi
=
xi1
=
a
= = limite inferior de integração
b
= = limite superior de integração
Nos basta, então, seguir a equação que temos. Primeiro vou definir e algumas variáveis e, então, calcularemos o somatório (veja que, primeiro, defini e e depois somei chamando a função ).
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 .
Agora que temos a função de integração, vamos receber , e 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 , , e . A integral exata (obtida através da primitiva) também é mostrada abaixo.
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:
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
Postar um comentário