ПочатиПочніть безкоштовно

Інтегрування простої функції

Це проста вправа, що знайомить із концепцією інтегрування Монте-Карло.

Тут ми обчислимо простий інтеграл \( \int_0^1 x e^{x} dx\). Ми знаємо, що точна відповідь — \(1\), але симуляція дасть наближене розв'язання, тож очікуємо значення, близьке до \(1\). Як ми бачили у відео, процес простий. Для функції однієї змінної \(f(x)\):

  1. Визначте межі по осі x \((x_{min}, x_{max})\) та по осі y \((\max(f(x)), \min(\min(f(x)), 0))\).
  2. Згенеруйте певну кількість рівномірно розподілених точок у цьому прямокутнику.
  3. Помножте площу прямокутника (\((\max(f(x) - \min(f(x))\times(x_{max}-x_{min})\)) на частку точок, що лежать нижче за \(f(x)\).

Після виконання ви матимете підхід для обчислення визначених інтегралів за допомогою інтегрування Монте-Карло.

Ця вправа є частиною курсу

Статистичне моделювання в Python

Переглянути курс

Інструкції до вправи

  • У функції sim_integrate() згенеруйте рівномірні випадкові числа між xmin і xmax та присвойте їх до x.
  • Згенеруйте рівномірні випадкові числа між \(\min(\min(f(x)), 0)\) і \(\max(f(x))\) та присвойте їх до y.
  • Поверніть частку точок, що менші за \(f(x)\), помножену на площу (\((\max(f(x) - \min(f(x))\times(x_{max}-x_{min})\)) .
  • Насамкінець, використайте лямбда-функцію, щоб визначити func як \(x e^{x}\).

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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))
Редагувати та запускати код