Technology

การประมาณอนุพันธ์ด้วยวิธีผลต่างจำกัด (Finite Difference Methods)

2025-05-09 03:40:39


โพสต์นี้เป็นส่วนหนึ่งของชุดบทความเกี่ยวกับวิธีผลต่างจำกัด (Finite Difference Method) โดยโพสต์อื่นๆ ในชุดนี้จะเน้นไปที่การแก้สมการความร้อน/สมการการแพร่แบบชัดแจ้ง, วิธี Crank-Nicolson แบบปริยาย และการแก้ระบบเมทริกซ์สามแนวทแยงด้วยอัลกอริธึมของโธมัส:

  • การประมาณอนุพันธ์ด้วยวิธีผลต่างจำกัด
  • การแก้สมการการแพร่แบบชัดแจ้ง
  • วิธี Crank-Nicolson แบบปริยาย
  • การแก้ระบบเมทริกซ์สามแนวทแยงด้วยอัลกอริธึมของโธมัส


นี่คือตอนแรกของชุดบทความหลายตอนเกี่ยวกับการใช้วิธีผลต่างจำกัด (FDM) เพื่อแก้สมการเชิงอนุพันธ์ย่อยเชิงพาราโบลิกด้วยวิธีเชิงตัวเลข โดยเฉพาะอย่างยิ่งจะเป็นการแก้สมการความร้อน (heat equation) เนื่องจากสมการการตั้งราคาของ Black-Scholes สามารถแปลงให้อยู่ในรูปของสมการความร้อนได้ วิธีเหล่านี้จึงสามารถนำมาใช้ในการแก้สมการดังกล่าวได้เชิงตัวเลข

หากเรากำหนดให้

 fff เป็นฟังก์ชันต่อเนื่องของจำนวนจริงซึ่งมีอนุพันธ์อันดับสองได้ สมการความร้อนของ f จะเป็น:

∂t∂u​=α∂x2∂2u​



การทำอนุพันธ์ให้ไม่ต่อเนื่อง (Discretising Derivatives)

วิธีผลต่างจำกัดให้ทางเลือกเชิงตัวเลขสำหรับการแก้สมการนี้โดยการทำอนุพันธ์ให้ไม่ต่อเนื่อง โดยจะใช้การขยายเทย์เลอร์ (Taylor Series) เพื่อประมาณอนุพันธ์

ให้พิจารณาว่าซีรีส์เทย์เลอร์ให้ค่าของฟังก์ชัน

 f เมื่อเปลี่ยนแปลงตัวแปรตามจำนวน Δx ได้ดังนี้:

f(x+Δx)=f(x)+Δxf′(x)+2!Δx2​f′′(x)+3!Δx3​f(3)(x)+⋯


โดยที่

 ⋯ แทนพจน์เพิ่มเติมที่ถูกจำกัดด้วยค่าคงที่คูณกับ Δxn ในทำนองเดียวกัน สามารถหาค่า

f(x−Δx) ได้จาก:

f(x−Δx)=f(x)−Δxf′(x)+2!Δx2​f′′(x)−3!Δx3​f(3)(x)+⋯


สมการทั้งสองนี้เมื่อจัดรูปใหม่จะได้การประมาณค่าอนุพันธ์อันดับหนึ่งของ f:

f′(x)≈Δxf(x+Δx)−f(x)​(Forward Difference)

f′(x)≈Δxf(x)−f(x−Δx)​(Backward Difference)


ยิ่งไปกว่านั้น เมื่อนำสมการด้านหลังมาลบออกจากสมการด้านหน้า จะได้การประมาณแบบอันดับสองของอนุพันธ์อันดับหนึ่งของ fff:

f′(x)≈2Δxf(x+Δx)−f(x−Δx)​​(Centered Difference)


หากต้องการประมาณอนุพันธ์อันดับสองของ f, คือ f′′(x) ให้นำสมการเทย์เลอร์ทั้งสองมาบวกกัน จะได้:

f′′(x)≈(Δx)2f(x+Δx)−2f(x)+f(x−Δx)​​(Centered Second Difference)



การทำโดเมนให้ไม่ต่อเนื่อง (Domain Discretisation)

เมื่อได้ทำอนุพันธ์ให้ไม่ต่อเนื่องในบริบทเชิงหนึ่งมิติแล้ว ขั้นต่อไปคือการทำโดเมนของสมการความร้อนให้ไม่ต่อเนื่อง

ฟังก์ชัน u ตอนนี้จะเป็นฟังก์ชันของตัวแปรจริงสองตัวคือ x และ t ซึ่งแสดงถึงตำแหน่งและเวลา ตามลำดับ ฟังก์ชัน u(x,t) จึงสามารถตีความได้ว่าเป็นปริมาณความร้อน ณ จุดใดจุดหนึ่งตามแท่งเหล็กแบบหนึ่งมิติ

เราสามารถแบ่งแท่งเหล็กแบบ 1 มิติออกเป็นจุด xi​ จำนวน N จุด และแบ่งเวลาออกเป็น tn จำนวน M จุด โดยใช้ระยะเวลาคงที่ Δt ระหว่างแต่ละช่วงเวลา

ค่าประมาณ uin ของ u(xi​,tn) จะให้โดย:

uin​≈u(xi​,tn)


โดยที่ดัชนีบน n ไม่ได้แปลว่ากำลังของ u หรืออนุพันธ์อันดับที่ n แต่หมายถึงค่าของฟังก์ชัน u ณ เวลา tn

ดังนั้น การประมาณอนุพันธ์ที่กล่าวไปข้างต้นสามารถเขียนในรูปของผลต่างจำกัดได้เป็น:

Forward difference (เวลา):

 ∂t∂u​≈Δtuin+1​−uin​


Backward difference (เวลา):

∂t∂u​≈Δtuin​−uin−1​​


Centered difference (พื้นที่):

 ∂x∂u​≈2Δxui+1n​−ui−1n​​


Centered second difference (พื้นที่):

 ∂x2∂2u​≈(Δx)2ui+1n​−2uin​+ui−1n​​



ความผิดพลาดและบทสรุป (Errors and Conclusion)

เมื่อความแตกต่าง (difference) เหล่านี้เป็นการประมาณค่าโดยธรรมชาติ เราจึงควรตั้งคำถามว่าความผิดพลาดอาจเกิดขึ้นอย่างไรในคำตอบโดยรวม

โดยทั่วไป ความผิดพลาดที่เกิดขึ้นแบ่งได้เป็น 2 ประเภท คือ:

  • Truncation Error – ความผิดพลาดที่เกิดจากการตัดพจน์อนุพันธ์ลำดับสูงในการขยายเทย์เลอร์
  • Roundoff Error – ความผิดพลาดจากการปัดเศษหรือความแม่นยำของคอมพิวเตอร์ โดยปกติจะใช้ค่าลอยตัวแบบ double precision ซึ่งเก็บได้ 16 หลัก ความผิดพลาดนี้อาจสะสม โดยเฉพาะหากใช้แบบ single precision ซึ่งเก็บได้เพียง 8 หลัก


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




อ้างอิง : Derivative Approximation via Finite Difference Methods

จาก https://www.quantstart.com/articles/Derivative-Approximation-via-Finite-Difference-Methods/

ร่วมเเสดงความคิดเห็น :