Technology

วิธี Crank-Nicholson แบบปริยาย (Implicit Scheme)

2025-05-12 03:48:15


โพสต์นี้เป็นส่วนหนึ่งของชุดบทความเกี่ยวกับวิธี Finite Difference Method โดยโพสต์อื่นๆ ในชุดนี้จะเน้นไปที่:

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


ในบทช่วยสอนก่อนหน้านี้เกี่ยวกับวิธีการแก้สมการการแพร่แบบชัดแจ้ง (Explicit) ได้แสดงให้เห็นว่าวิธีแบบชัดเจนในการแก้สมการความร้อนเชิงตัวเลขนำไปสู่การกำหนดช่วงเวลาที่จำกัดอย่างมาก สิ่งนี้กระตุ้นให้เกิดแผนการอีกแบบหนึ่งที่อนุญาตให้มีการก้าวเวลาที่ใหญ่ขึ้น แต่มีการแลกเปลี่ยนกับการทำงานคอมพิวเตอร์ที่มากขึ้นต่อก้าวเวลา วิธีนี้เรียกว่าแผนการของ Crank-Nicholson



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


fin+1finΔt=fi+1n2fin+fi1n(Δx)2


แผนผังแบบปริยาย

แผนการของ Crank-Nicolson แก้ไขสิ่งนี้โดยการรวมค่าเฉลี่ยถ่วงน้ำหนักของขั้นตอนเชิงพื้นที่ที่สองในเวลา n และเวลา n + 1 คำตอบที่ชัดเจนคือค่าของ f ไม่เป็นที่รู้จักที่ n + 1 และมีคำถามเกิดขึ้นเกี่ยวกับวิธีการคำนวณค่าดังกล่าว คำถามเหล่านี้จะได้รับคำตอบด้านล่าง คำถามสุดท้ายเกิดขึ้นเกี่ยวกับวิธีการแบ่งน้ำหนักของอนุพันธ์อันดับสองทั้งสองตัว แผนการของ Crank-Nicolson ใช้การแบ่ง 50-50 แต่ก็มีการแบ่งอื่นๆ ที่เป็นไปได้เช่นกัน ความเสถียรเป็นเรื่องที่ต้องกังวลที่นี่ด้วย 12θ1 โดยที่ θ เป็นปัจจัยน้ำหนัก


แผนการของ Crank-Nicolson สำหรับสมการความร้อน 1D มีดังนี้:


fin+1finΔt=fi+1n2fin+fi1n2(Δx)2+fi+1n+12fin+1+fi1n+12(Δx)2


ให้ r=Δt(Δx)2 , สมการนี้สามารถจัดเรียงใหม่เพื่อจัดกลุ่มพจน์ที่รู้จักและไม่รู้จักแยกกันได้:


r2fi+1n+1+(1+r)fin+1r2fi1n+1=r2fi+1n+(1r)fin+r2fi1n 


เนื่องจากมีสามพจน์ที่ไม่ทราบค่าบนด้านซ้าย แสดงว่าต้องแก้สมการเชิงเส้นพร้อมกันชุดหนึ่งสำหรับแต่ละช่วงเวลา สำหรับช่วงเวลาใด ๆ ที่เฉพาะเจาะจง n จะมีสมการ I - 2 สมการที่ต้องแก้ไข สิ่งเหล่านี้สอดคล้องกับจุดกริดภายในแต่ละจุด เนื่องจากเราใช้เงื่อนไขขอบเขตแบบ Dirichlet (เช่น คงที่) จุดสิ้นสุดจึงไม่จำเป็นต้องแก้ระบบเชิงเส้นเช่นนี้


ระบบเชิงเส้นสามารถแสดงด้วยสมการเมทริกซ์ AF=D

, โดยที่ a=r2 , b=(1+r) , c=r2 , di=r2fi+1n+(1r)fin+r2fi1n และ k วิ่งจาก 2 ถึง I - 1:


[bc00...0abc0...00abc00........c0000ab][f1f2f3...fk]=[d1d2d3...dk] 


การแก้ปัญหาระบบเชิงเส้น

ความพยายามครั้งแรกในการแก้ปัญหาระบบนี้อาจเกี่ยวข้องกับการกลับค่าของเมทริกซ์ A เพื่อให้ค่าในเมทริกซ์คอลัมน์ F เป็น F=A1D อย่างไรก็ตาม นี่ห่างไกลจากวิธีที่ดีที่สุดและไม่ได้คำนึงถึงความเบาบางหรือโครงสร้างแบบแถบของเมทริกซ์ A ในบทเรียนถัดไปจะแสดงให้เห็นว่าสามารถแก้ปัญหานี้ได้อย่างมีประสิทธิภาพอย่างไรเพื่อให้การทำงานในแต่ละช่วงเวลาน้อยที่สุด




อ้างอิง : Crank-Nicholson Implicit Scheme

จาก https://www.quantstart.com/articles/Crank-Nicholson-Implicit-Scheme/


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

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

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