เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การอินทิเกรตฟังก์ชันอย่างง่าย

แบบฝึกหัดนี้เป็นการแนะนำแนวคิดของ Monte Carlo Integration

เราจะประเมินอินทิกรัลอย่างง่าย \( \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)\)

เมื่อทำเสร็จแล้ว คุณจะมีกรอบสำหรับคำนวณอินทิกรัลจำกัดเขตโดยใช้ Monte Carlo Integration

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การจำลองทางสถิติด้วย 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})\))
  • สุดท้าย ใช้ lambda function เพื่อกำหนด 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))
แก้ไขและรันโค้ด