IniziaInizia gratis

Integrare una funzione semplice

Questo è un semplice esercizio che introduce il concetto di Integrazione Monte Carlo.

Qui valuteremo un integrale semplice \( \int_0^1 x e^{x} dx\). Sappiamo che la risposta esatta è \(1\), ma la simulazione ci darà una soluzione approssimata, quindi possiamo aspettarci un valore vicino a \(1\). Come visto nel video, il processo è semplice. Per una funzione di una variabile \(f(x)\):

  1. Ottieni i limiti dell'asse x \((x_{min}, x_{max})\) e dell'asse y \((\max(f(x)), \min(\min(f(x)), 0))\).
  2. Genera un certo numero di punti distribuiti uniformemente in questo rettangolo.
  3. Moltiplica l'area del rettangolo (\((\max(f(x) - \min(f(x))\times(x_{max}-x_{min})\)) per la frazione di punti che si trovano sotto \(f(x)\).

Al termine, avrai uno schema per gestire gli integrali definiti usando l'Integrazione Monte Carlo.

Questo esercizio fa parte del corso

Simulazione statistica in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Nella funzione sim_integrate(), genera numeri casuali uniformi tra xmin e xmax e assegnali a x.
  • Genera numeri casuali uniformi tra \(\min(\min(f(x)), 0)\) e \(\max(f(x))\) e assegnali a y.
  • Restituisci la frazione di punti minori di \(f(x)\) moltiplicata per l'area (\((\max(f(x) - \min(f(x))\times(x_{max}-x_{min})\)).
  • Infine, usa una funzione lambda per definire func come \(x e^{x}\).

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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))
Modifica ed esegui il codice