Integração de uma Função Simples
Este é um exercício simples que apresenta o conceito de Integração de Monte Carlo.
Aqui vamos avaliar a integral \( \int_0^1 x e^{x} dx\). Sabemos que a resposta exata é \(1\), mas a simulação nos dará uma solução aproximada, então esperamos um valor próximo de \(1\). Como vimos no vídeo, é um processo simples. Para uma função de uma variável \(f(x)\):
- Obtenha os limites do eixo x \((x_{min}, x_{max})\) e do eixo y \((\max(f(x)), \min(\min(f(x)), 0))\).
- Gere um conjunto de pontos com distribuição uniforme dentro desse retângulo.
- Multiplique a área do retângulo (\((\max(f(x) - \min(f(x))\times(x_{max}-x_{min})\)) pela fração de pontos que ficam abaixo de \(f(x)\).
Ao concluir, você terá um esquema para lidar com integrais definidas usando Integração de Monte Carlo.
Este exercício faz parte do curso
Simulação Estatística em Python
Instruções do exercício
- Na função
sim_integrate(), gere números aleatórios uniformes entrexminexmaxe atribua ax. - Gere números aleatórios uniformes entre \(\min(\min(f(x)), 0)\) e \(\max(f(x))\) e atribua a
y. - Retorne a fração de pontos menor que \(f(x)\) multiplicada pela área (\((\max(f(x) - \min(f(x))\times(x_{max}-x_{min})\)).
- Por fim, use uma função lambda para definir
funccomo \(x e^{x}\).
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Define the sim_integrate function
def sim_integrate(func, xmin, xmax, sims):
x = np.random.uniform(____, ____, sims)
y = np.random.uniform(____, ____, sims)
area = (max(y) - min(y))*(xmax-xmin)
result = area * sum(____(____) < abs(func(x)))/sims
return result
# Call the sim_integrate function and print results
result = sim_integrate(func = lambda x: ____, xmin = 0, xmax = 1, sims = 50)
print("Simulated answer = {}, Actual Answer = 1".format(result))