ComeçarComece de graça

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)\):

  1. Obtenha os limites do eixo x \((x_{min}, x_{max})\) e do eixo y \((\max(f(x)), \min(\min(f(x)), 0))\).
  2. Gere um conjunto de pontos com distribuição uniforme dentro desse retângulo.
  3. 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

Ver curso

Instruções do exercício

  • Na função sim_integrate(), gere números aleatórios uniformes entre xmin e xmax e atribua a x.
  • 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 func como \(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))
Editar e executar o código