Technology

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

2025-05-09 03:40:39


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

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


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


ถ้าเราให้ fC2(R) หรือให้ f เป็นฟังก์ชันต่อเนื่องของจำนวนจริงที่มีอนุพันธ์สองครั้งแล้ว สมการความร้อนสำหรับ f จะเป็นดังนี้:


ft=2fx2



การแบ่งอนุพันธ์เป็นค่าตัวเลข

วิธีการต่างต่างแบบจำกัดให้วิธีการเชิงตัวเลขในการแก้สมการนี้ผ่านการแบ่งส่วนอนุพันธ์ของมัน อนุพันธ์จะถูกประมาณโดยการขยายซีรีส์เทย์เลอร์ จำไว้ว่าซีรีส์เทย์เลอร์ให้ค่าของฟังก์ชัน f=f(x) เมื่ออนุพันธ์ของตัวแปรตาม xR ถูกแปลโดยจำนวน Δx ในแง่ของอนุพันธ์ที่จุดนั้น ดังนั้น f(x+Δx) สามารถคำนวณได้โดย:


f(x+Δx)=f(x)+f(x)Δx+f(x)(Δx)22!+f(x)(Δx)33!+O(Δx)4


โปรดทราบว่า O(Δx) แทนถึงพจน์เพิ่มเติมที่ถูกจำกัดโดยพจน์คงที่ที่คูณด้วย Δx


ในลักษณะเดียวกัน เราสามารถหาค่า f ได้เมื่อค่าตัวแปรตาม x ถูกแปลโดยจำนวนเท่ากัน Δx ในทิศทางตรงกันข้าม:


f(xΔx)=f(x)f(x)Δx+f(x)(Δx)22!f(x)(Δx)33!+O(Δx)4


สมการทั้งสองนี้เมื่อจัดเรียงใหม่จะอนุญาตให้มีการประมาณค่าอันดับแรกสำหรับอนุพันธ์ f(x):


f(x)=f(x+Δx)f(x)Δx+O(Δx)=f(x)f(xΔx)Δx+O(Δx)


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


f(x)=f(x+Δx)f(xΔx)2Δx+O(Δx)2


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


f(x)=f(x+Δx)2f(x)+f(xΔx)(Δx)2+O(Δx)2



การแบ่งเขตโดเมน

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


แท่งต่อเนื่อง 1D สามารถแบ่งเป็นจุดแยกต่างหาก I จุด 1,2,...,i,...,I เวลาอาจถูกแบ่งเป็นจุดแยกต่างหาก N จุด 1,2,...,n,...,N แต่ละจุดแยกจากกันด้วยช่วงเวลาที่ Δt การประมาณ fin ถึง f ที่เวลา n และตำแหน่ง x=iΔx คือ:


finf(iΔx,nΔt)


โปรดทราบว่าเลขยกกำลัง n ไม่ได้หมายถึงพลังของ f หรืออนุพันธ์อันดับที่ n ของมัน แต่หมายถึงค่าของมันในเวลาที่ nΔt ดังนั้น การประมาณค่าเทย์เลอร์ที่กล่าวถึงข้างต้นสำหรับอนุพันธ์สามารถเขียนได้ว่า:


f(iΔx,nΔt)fi+1nfinΔxfinfi1nΔxfi+1nfi1n2Δxf(iΔx,nΔt)fi+1n2fin+fi1n(Δx)2


พวกมันคือ ความแตกต่างไปข้างหน้า ความแตกต่างไปข้างหลัง ความแตกต่างแบบศูนย์กลาง และความแตกต่างแบบศูนย์กลางที่สอง ตามลำดับ



ข้อผิดพลาดและข้อสรุป

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


ข้อผิดพลาดจากการปัดเศษคือข้อผิดพลาดที่เกิดขึ้นเนื่องจากความแม่นยำของการแก้ปัญหาที่ถูกเก็บไว้ในคอมพิวเตอร์ โดยปกติแล้วจะใช้ค่าฟลอยติ้งพอยต์แบบทศนิยมคู่ซึ่งเก็บได้ 16 หลักสำหรับแต่ละค่า ข้อผิดพลาดเหล่านี้สามารถสะสมได้ โดยเฉพาะอย่างยิ่งหากใช้ความแม่นยำเดี่ยว ซึ่งเก็บได้เพียง 8 หลักสำหรับค่าตัวเลขทศนิยม


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




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

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

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

บทความอื่นๆที่น่าสนใจ

บทความที่น่าสนใจอื่นๆยังมีอีกมากลองเลืือกดูจากด้านล่างนี้ได้นะครับ