ÎncepețiÎncepe gratuit

Integrarea unei funcții simple

Acesta este un exercițiu introductiv în conceptul de Integrare Monte Carlo.

Vom evalua o integrală simplă \( \int_0^1 x e^{x} dx\). Știm că răspunsul exact este \(1\), însă simularea ne va oferi o soluție aproximativă, deci ne așteptăm la un rezultat apropiat de \(1\). Așa cum ai văzut în video, procesul este simplu. Pentru o funcție de o singură variabilă \(f(x)\):

  1. Obține limitele axei x \((x_{min}, x_{max})\) și ale axei y \((\max(f(x)), \min(\min(f(x)), 0))\).
  2. Generează un număr de puncte distribuite uniform în acest dreptunghi.
  3. Înmulțește aria dreptunghiului (\((\max(f(x) - \min(f(x))\times(x_{max}-x_{min})\)) cu fracțiunea de puncte situate sub \(f(x)\).

La final, vei avea un cadru de lucru pentru calculul integralelor definite folosind Integrarea Monte Carlo.

Acest exercițiu face parte din cursul

Simulare statistică în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • În funcția sim_integrate(), generează numere aleatoare uniform distribuite între xmin și xmax și atribuie-le variabilei x.
  • Generează numere aleatoare uniform distribuite între \(\min(\min(f(x)), 0)\) și \(\max(f(x))\) și atribuie-le variabilei y.
  • Returnează fracțiunea de puncte mai mici decât \(f(x)\), înmulțită cu aria (\((\max(f(x) - \min(f(x))\times(x_{max}-x_{min})\)).
  • În final, folosește o funcție lambda pentru a defini func ca \(x e^{x}\).

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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))
Editează și rulează codul