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)\):
- Obține limitele axei x \((x_{min}, x_{max})\) și ale axei y \((\max(f(x)), \min(\min(f(x)), 0))\).
- Generează un număr de puncte distribuite uniform în acest dreptunghi.
- Î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
Instrucțiuni pentru exercițiu
- În funcția
sim_integrate(), generează numere aleatoare uniform distribuite întrexminșixmaxși atribuie-le variabileix. - 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
funcca \(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))