Pkg.add("QuadGK")
using QuadGKIntegração Numérica em Julia
Precisa calcular áreas, probabilidades acumuladas ou mesmosolucionar equações diferenciais? Este guia te mostra como realizar integrais numéricas em Julia de forma simples e direta, usando os pacotes QuadGK e Cubature.
Introdução
Resolver integrais é uma parte fundamental de qualquer em diversos áreas. Embora resolver a integral de forma analítica, quando possível, seja uma alternativa interessante e fácil de implementar, nem sempre isto é possível e a integração numérica torna-se fundamental. Por exemplo, quando trabalhamos com a distribuição Normal, o calculo das probabilidade resume-se à integração numérica. Um outro exemplo no qual a integração numérica pode ser de muita ajuda, é para calcular o Expected Shortfall (ES) (uma medida de risco amplamente utilizada em finanças).
Em Julia, a integração numérica pode ser feita de forma fácil e eficiente. Neste post, aprenderemos a realizar integrais numéricas em Julia de um jeito muito simples e direto, utilizando os pacotes QuadGK e Cubature.
Funções de uma variável
Para realizar a integração numérica de funções de uma única variável, utilizaremos o pacote QuadGK. Para instalá-lo e carregá-lo, basta executar o código abaixo:
O QuadGK implementa o método de quadratura adaptativa Gauss–Kronrod, cujos detalhes podem ser encontrados neste link. Seu uso é simples: primeiro, definimos a função que desejamos integrar. Em seguida, utilizamos a função quadgk, inserindo como argumentos a função e o intervalo de integração da variável. A função retorna o valor da integral e uma estimativa do erro numérico de aproximação.
f(x) = x^2 * exp(-x)f (generic function with 1 method)
quadgk(f, 0, 5)(1.750695961033838, 2.2027231372234723e-8)
Funções de várias variáveis
Para integrais envolvendo funções de múltiplas variáveis (integrais múltiplas ou \(n\)-dimensionais), utilizaremos o pacote Cubature. Para instalá-lo e carregá-lo, basta executar o seguinte código:
Pkg.add("Cubature")
using Cubature O Cubature oferece dois métodos principais de cubatura (o equivalente à quadratura para múltiplas dimensões): h-adaptativo e p-adaptativo, descritos na documentação oficial. O método h-adaptativo pode ser utilizado com a função hcubature, que recebe a função de interesse e vetores com os limites inferiores e superiores de integração. Assim como no caso univariado, obtemos a estimativa da integral e do erro.
A ordem dos vetores dos limites de integração deve corresponder exatamente à ordem em que as variáveis aparecem na função.
f(v) = v[1]^2 + v[2]^2f (generic function with 1 method)
hcubature(f, [0.0, 0.0], [1.0, 1.0])(0.6666666666666665, 2.220446049250313e-16)
O método p-adaptativo é muito semelhante ao h-adaptativo, mas utiliza a função pcubature. A sintaxe é idêntica:
f(v) = v[1]^2 + v[2]^2f (generic function with 1 method)
pcubature(f, [0.0, 0.0], [1.0, 1.0])(0.6666666666666667, 1.1102230246251565e-16)
Exemplo: Densidade da Normal
Como um exemplo de aplicação em estatística, podemos calcular a integral da função densidade de probabilidade de uma distribuição Normal padrão. Ao integrar em todo o domínio, verificamos o resultado esperado: que sua área total é igual a 1.
f(x) = 1/(sqrt(2*pi))*exp(-x^2/2)f (generic function with 1 method)
quadgk(f, -Inf, Inf)(1.0000000000032583, 1.4395584886006938e-8)
Se quisermos, por exemplo, calcular \(P(-1 \leq Z \leq 1.5)\), podemos fazer
f(x) = 1/(sqrt(2*pi))*exp(-x^2/2)f (generic function with 1 method)
quadgk(f, -1, 1.5)(0.774537544799685, 1.3410557109239107e-9)
que é o mesmo valor obtido com a função cdf() do pacote Distributions
using Distributions
cdf(Normal(0, 1), 1.5) - cdf(Normal(0, 1), -1)0.774537544799685
Conclusão
Com essas ferramentas poderosas e fáceis de usar, você agora consegue resolver integrais numéricas de forma fácil utilizando Julia. Seja para funções simples de uma variável ou para cálculos multidimensionais complexos (cubatura), os pacotes QuadGK e Cubature ampliam suas possibilidades em análises estatísticas e científicas, mesmo quando a solução analítica não é viável.
Ferramentas de IA foram utilizadas para correção ortográfica e aprimoramento do texto.