Kom igångKom igång gratis

Integrera en enkel funktion

Den här övningen introducerar konceptet Monte Carlo-integration.

Vi ska beräkna en enkel integral \( \int_0^1 x e^{x} dx\). Det exakta svaret är \(1\), men simuleringen ger oss en approximation – vi kan alltså förvänta oss ett svar nära \(1\). Som visades i videon är processen enkel. För en funktion av en enda variabel \(f(x)\):

  1. Hämta gränserna för x-axeln \((x_{min}, x_{max})\) och y-axeln \((\max(f(x)), \min(\min(f(x)), 0))\).
  2. Generera ett antal jämnt fördelade punkter i den här rutan.
  3. Multiplicera rutans area (\((\max(f(x) - \min(f(x))\times(x_{max}-x_{min})\)) med andelen punkter som ligger under \(f(x)\).

När du är klar har du ett ramverk för att hantera bestämda integraler med Monte Carlo-integration.

Den här övningen är en del av kursen

Statistisk simulering i Python

Visa kurs

Övningsinstruktioner

  • I funktionen sim_integrate(), generera jämnt fördelade slumptal mellan xmin och xmax och tilldela dem till x.
  • Generera jämnt fördelade slumptal mellan \(\min(\min(f(x)), 0)\) och \(\max(f(x))\) och tilldela dem till y.
  • Returnera andelen punkter som är mindre än \(f(x)\) multiplicerat med arean (\((\max(f(x) - \min(f(x))\times(x_{max}-x_{min})\)).
  • Använd slutligen en lambdafunktion för att definiera func som \(x e^{x}\).

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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))
Redigera och kör kod