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 Portugol Studio, tudo o que foi discutido lá.
Se você está procurando aprender a programar, considere assistir meu curso gratuito no Youtube.
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 no Portugol Studio (para facilitar nosso trabalho):
programa
{
inclua biblioteca Matematica --> mat
funcao real f(real x){
retorne (mat.potencia(x,5)) + 27*(mat.potencia(x,4)) - ((13/4) * (mat.potencia(x,3))) + ((0.5)*mat.potencia(x,4)) + (37*x) + 15
}
}
De antemão, já peço desculpas, mas o código Portugol Studio aqui não estará colorido de maneira adequada. Para ver o código colorido, baixe o arquivo e abra no seu Portugol Studio.
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
= =
b1
= = base
b2
= = outra base
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 $x_{i-1}\ e depois somei chamando a função f).
funcao real integral(real a, real b, inteiro n){
real A = 0.0
real Dx = (b-a)/n
para (inteiro i = 1; i<=n; i++){
real xi = a + Dx*i
real xi1 = a + Dx*(i-1)
A += f(xi) + f(xi1)
}
A *= (Dx/2)
retorne A
}
Por fim, basta multiplicar o somatório por .
Recebendo dados do usuário
Agora que temos a função de integração, vamos receber , e do usuário e exibir o resultado:
funcao inicio()
{
inteiro n
real a, b
escreva("Por favor, escolha um valor de n: ")
leia(n)
escreva("Insira os intervalos de integração: a = ")
leia(a)
escreva("b = ")
leia(b)
escreva(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 razoável com esse método.
Veja também a implementação em Python.
Código final:
programa
{
inclua biblioteca Matematica --> mat
funcao real f(real x){
retorne (mat.potencia(x,5)) + 27*(mat.potencia(x,4)) - ((13/4) * (mat.potencia(x,3))) + ((0.5)*mat.potencia(x,4)) + (37*x) + 15
}
funcao real integral(real a, real b, inteiro n){
real A = 0.0 //area
real Dx = (b-a)/n //Delta x
real b1, b2 //bases
para (inteiro i = 1; i<=n; i++){
real xi = a + Dx*i
real xi1 = a + Dx*(i-1)
A += f(xi) + f(xi1)
}
A *= (Dx/2)
retorne A
}
funcao inicio()
{
inteiro n
real a, b
escreva("Por favor, escolha um valor de n: ")
leia(n)
escreva("Insira os intervalos de integração: a = ")
leia(a)
escreva("b = ")
leia(b)
escreva(integral(a,b,n))
}
}
Comentários
Postar um comentário