Začněte nyníZačněte zdarma

Integrace jednoduché funkce

Toto je jednoduchá úloha, která tě seznámí s konceptem Monte Carlo integrace.

Budeme vyhodnocovat jednoduchý integrál \( \int_0^1 x e^{x} dx\). Přesný výsledek je \(1\), ale simulace nám dá přibližné řešení – výsledek by se tedy měl hodnotě \(1\) blížit. Jak jsme viděli ve videu, postup je přímočarý. Pro funkci jedné proměnné \(f(x)\):

  1. Zjisti meze osy x \((x_{min}, x_{max})\) a osy y \((\max(f(x)), \min(\min(f(x)), 0))\).
  2. Vygeneruj určitý počet rovnoměrně rozložených bodů v tomto obdélníku.
  3. Vynásob plochu obdélníku (\((\max(f(x) - \min(f(x))\times(x_{max}-x_{min})\)) podílem bodů, které leží pod \(f(x)\).

Po dokončení budeš mít k dispozici nástroj pro výpočet určitých integrálů pomocí Monte Carlo integrace.

Toto cvičení je součástí kurzu

Statistické simulace v Pythonu

Zobrazit kurz

Pokyny k cvičení

  • Ve funkci sim_integrate() vygeneruj rovnoměrně rozložená náhodná čísla mezi xmin a xmax a přiřaď je do x.
  • Vygeneruj rovnoměrně rozložená náhodná čísla mezi \(\min(\min(f(x)), 0)\) a \(\max(f(x))\) a přiřaď je do y.
  • Vrať podíl bodů, které jsou menší než \(f(x)\), vynásobený plochou obdélníku (\((\max(f(x) - \min(f(x))\times(x_{max}-x_{min})\)).
  • Nakonec pomocí lambda funkce definuj func jako \(x e^{x}\).

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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))
Upravit a spustit kód