หน้าแรกคลังความรู้Numerical MethodsAdaptive Simpson ทำงานจริงทีละขั้น
EP 08 · ขั้นสูง

Adaptive Simpson ทำงานจริงทีละขั้น

คำนวณ coarse, fine, error และ tolerance จนเห็นว่าช่วงไหนต้องแบ่งต่อ

บทความฉบับเต็ม

ภาพรวมของบทเรียน

ตอนนี้ลงรายละเอียดเชิงคำนวณให้เห็นค่าทุกขั้น ตั้งแต่การเลือกจุด การหาค่า Simpson ในช่วงย่อย ไปจนถึงการตัดสินใจยอมรับหรือแบ่งต่อ

เป้าหมาย: ให้ผู้อ่านเห็นทั้งภาพรวมทางเรขาคณิต ที่มาของสูตร และเหตุผลว่าค่าประมาณดีขึ้นได้อย่างไร

แนวคิดสำคัญ

  • คำนวณช่วงซ้ายและขวาแยกกัน
  • เปรียบเทียบ error กับ tolerance
  • อธิบายว่าทำไมบางช่วงผ่านก่อน
  • สรุปข้อดีด้านความแม่นและงานคำนวณ

บทนี้เน้น “เดินเครื่องจริง” ของ Adaptive Simpson โดยติดตามตัวแปรในแต่ละช่วง ได้แก่ ช่วงที่กำลังพิจารณา ค่า Simpson แบบหยาบ ค่า Simpson หลังแบ่งครึ่ง ค่า error estimate และ tolerance ที่ช่วงนั้นได้รับ

สิ่งสำคัญคือเราไม่ได้แบ่งซ้ายขวาเท่ากันไปเรื่อย ๆ แบบตายตัว แต่ให้ผลคำนวณเป็นคนบอกว่าช่วงใดควรหยุด ช่วงใดต้องลงรายละเอียดเพิ่ม

ลำดับคิด: coarse → fine → error → เทียบ tolerance → accept หรือ split

สูตรที่ใช้

\[x_{\text{interval}}\;\longrightarrow\;S_{\text{coarse}},S_{\text{fine}},E,\varepsilon\]

ก่อนใช้สูตร ควรอธิบายความหมายของตัวแปร เงื่อนไขจำนวนช่วง และสิ่งที่สูตรกำลังประมาณ ไม่ควรวางสูตรโดยไม่มีบริบท

สำหรับช่วง \([a,b]\) ให้ \(m=(a+b)/2\) แล้วคำนวณ \(S(a,b)\), \(S(a,m)\), \(S(m,b)\) จากสูตร Simpson พื้นฐาน จากนั้นกำหนด

\[S_{\text{fine}}=S(a,m)+S(m,b),\qquad E=\frac{|S_{\text{fine}}-S(a,b)|}{15}\]

ถ้า \(E\le\varepsilon\) ยอมรับค่าช่วงนั้น โดยบางตำราใช้ค่าปรับแก้ \(S_{\text{fine}}+\dfrac{S_{\text{fine}}-S_{\text{coarse}}}{15}\) เพื่อชดเชย error หลัก แต่ในบทเรียนนี้เน้นการตัดสินใจแบ่งช่วงก่อน

ตัวอย่างทีละขั้น

ใช้ f(x)=1/(1+x²) บน [0,2] และแสดงหนึ่งช่วงผ่าน อีกช่วงต้องแบ่งต่อ

  1. กำหนดฟังก์ชันและช่วงที่ต้องการประมาณ
  2. เลือกจำนวนช่วงหรือระดับการคำนวณ
  3. หาค่าฟังก์ชันที่จุดสำคัญ
  4. แทนค่าลงในสูตรโดยแสดงทุกบรรทัด
  5. เปรียบเทียบกับค่าจริงหรือวิธีอื่นถ้ามี

ใช้ \(f(x)=\dfrac{1}{1+x^2}\) บน \([0,2]\) และตั้ง tolerance รวมคร่าว ๆ \(10^{-4}\) รอบแรกได้ \(E=0.002564\) จึงต้องแบ่งเป็น \([0,1]\) และ \([1,2]\)

ช่วงcoarsefineerrorตัดสินใจ
[0,1]0.7833330.7853920.000137แบ่งต่อถ้า tolerance ย่อยเข้ม
[1,2]0.3217950.3217480.000003มักยอมรับได้
[0,0.5]0.4637250.4636530.000005ยอมรับได้ง่ายขึ้น
[0.5,1]0.3216670.3217450.000005ยอมรับได้ง่ายขึ้น

ตารางนี้แสดงภาพการทำงานจริง: ช่วงใหญ่ไม่ผ่าน แต่หลังแบ่งย่อย error ลดลงมาก เพราะแต่ละช่วงมีความโค้งที่ Simpson จับได้ง่ายขึ้น

ข้อควรระวัง

  • อย่าใช้สูตรโดยไม่ตรวจเงื่อนไขจำนวนช่วง
  • อย่าปัดเศษเร็วเกินไปในขั้นกลาง
  • ต้องแยก “ค่าประมาณ” ออกจาก “ค่าจริง” ให้ชัด
  • ควรอธิบายว่า error ที่กล่าวถึงวัดจากอะไร
ตรวจตรรกะ recursion: ทุกครั้งที่แบ่งช่วง ต้องส่ง tolerance ย่อยและระดับความลึกไปด้วย ไม่ใช่ใช้ tolerance เต็มซ้ำในทุกกิ่ง

อย่ารายงานแค่คำตอบสุดท้ายโดยไม่บอกเกณฑ์หยุด เพราะ Adaptive Simpson ขึ้นกับ tolerance มาก หากตั้ง tolerance เล็กเกินไปจะใช้เวลามากโดยไม่จำเป็น แต่ถ้าหย่อนเกินไปอาจยอมรับช่วงที่ยังหยาบ

สรุป

ตอนนี้ลงรายละเอียดเชิงคำนวณให้เห็นค่าทุกขั้น ตั้งแต่การเลือกจุด การหาค่า Simpson ในช่วงย่อย ไปจนถึงการตัดสินใจยอมรับหรือแบ่งต่อ