แสดงบทความที่มีป้ายกำกับ Runge-Kutta แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Runge-Kutta แสดงบทความทั้งหมด

วันอาทิตย์ที่ 8 ตุลาคม พ.ศ. 2560

การคำนวณเชิงตัวเลข (๑๙) ระเบียบวิธี Implicit Euler และ Crank-Nicholson กับ Stiff equation MO Memoir : Sunday 8 October 2560

การหาคำตอบระบบสมการเชิงอนุพันธ์สามัญ ปัญหาเงื่อนไขค่าเริ่มต้น (Ordinary differential equation : Initial value problem หรือที่ย่อว่า ODE-IVP) นั้น มันเริ่มจากการที่เราทราบค่า x และ y ณ จุดหนึ่ง แล้วเราต้องการทราบว่าที่ตำแหน่ง x +Δx ค่า y ณ ตำแหน่งนั้น (คือ y +Δy) จะมีค่าเท่าใด โดยหลักการของวิธีการที่ใช้กันอยู่ก็คือ มันเปรียบเสมือนกับว่าเราจะลากเส้นตรงออกจากจุด (x,y) ด้วยความชันเท่าไรไปจนถึงตำแหน่ง x +Δx เพื่อที่จะได้ทราบค่า y
  
ความแตกต่างของระเบียบวิธีต่าง ๆ อยู่ตรงการคำนวณหาค่าความชันนี้ บางเทคนิคก็ใช้ความชัน ณ ตำแหน่ง x เป็นหลัก (วิธีการพวกโดยชัดแจ้งหรือ explicit method) บางเทคนิคก็ใช้ความชัน ณ ตำแหน่ง x +Δx เป็นหลัก (วิธีการพวกโดยนัยหรือ implicit method) บางเทคนิคก็ใช้ความชัด ณ ทั้งตำแหน่ง x และ x +Δx (วิธีการพวก semi-implicit method) บางเทคนิคก็ใช้ข้อมูล ณ จุดใดจุดหนึ่งเพียงจุดเดียวเป็นหลัก (วิธีการพวก single step method) ในขณะที่บางเทคนิคก็มีการใช้จุดข้อมูลหลายจุด (เป็นได้ทั้งจุดข้อมูลในอดีตและจุดที่ต้องการทราบคำตอบ) มาใช้ในการคำนวณ (วิธีการพวก multi-step method) และก็ยังมีวิธีการที่ใช้การทำนายค่าแล้วทำการปรับแก้ตาม (วิธีการพวก predictor-corrector method) ส่วนที่ว่าวิธีการไหนจะอยู่ในกลุ่มไหนนั้น ขึ้นอยู่กับว่าเรากำลังพิจารณาเรื่องอะไรอยู่
  
ระเบียบวิธี Implicit Euler (หรือออยเลอร์โดยนัย จัดอยู่ในพวก implicit method) และระเบียบวิธี Crank-Nicholson (ที่จัดอยู่ในพวก semi-implicit method) นั้น ไม่พบการใช้งานมากเหมือนระเบียบวิธี Runge-Kutta ทั้งนี้เป็นเพราะสำหรับปัญหาส่วนใหญ่แล้ว ที่ระดับความถูกต้องของคำตอบเท่ากัน (คือเปรียบเทียบที่เมื่อต้องการความถูกต้องที่ระดับเลขนัยสำคัญเท่ากัน) ระเบียบวิธี Runge-Kutta จะใช้ค่า step size ที่กว้างกว่า ทำให้ทำการคำนวณไปข้างหน้าได้รวดเร็วกว่า และยังไม่มีปัญหาในกรณีที่สมการอนุพันธ์นั้นเป็นฟังก์ชันไม่เชิงเส้น (non-linear fuction) กับตัวแปร y ด้วย (คือไม่ต้องทำการ root finding เพื่อหาค่า y)
 
แต่ถ้าเป็นกรณีของโจทย์ที่ค่อนข้างจะ "ไว" (หรือ sensitive) ต่อการสะสมของค่าความคลาดเคลื่อน (error) ที่เกิดขึ้นในระหว่างการคำนวณแต่ละขั้นแล้ว (เช่นระบบสมการพวก stiff หรือ very stiff หรือระบบสมการผสมอนุพันธ์-พีชคณิตที่เรียกว่า Differential-Algebraic equation - DAE) ระเบียบวิธี Runge-Kutta (หรือพวก multi step แบบ Adam-Bashforth) ก็มีสิทธิ์พังไม่เป็นท่าได้ง่าย ๆ เพราะไม่สามารถควบคุมการสะสมของค่าความคลาดเคลื่อนเอาไว้ได้ ในกรณีเช่นนี้ระเบียบวิธีพวก semi-implicit และ fully implicit จะเข้ามามีบทบาททันที เพราะพวกมันมีความสามารถในการควบคุมค่าความคลาดเคลื่อนไม่ให้สะสมจนขยายตัวได้ดีกว่า

ดาวน์โหลดบทความฉบับ pdf ได้ที่นี่








 

วันพุธที่ 4 ตุลาคม พ.ศ. 2560

การคำนวณเชิงตัวเลข (๑๘) เปรียบเทียบระเบียบวิธี Runge-Kutta MO Memoir : Wednesday 4 October 2560

4th order Runge-Kutta (รุงเก-คุตตา อันดับ 4 ต้นฉบับ)
3/8-rule Runge-Kutta (รุงเก-คุตตา อันดับ 4 ที่มีการดัดแปลงเล็กน้อยจากตัวต้นฉบับ)
Runge-Kutta-Fehlberg (รุงเก-คุตตา อันดับ 4 ที่ได้รับการดัดแปลง  ที่เป็น defalut method ใน GNUs Octave's "ode45" solver ตัวนี้เป็น free software ใช้แทน Matlab ได้) และ
Dormand-Prince method (รุงเก-คุตตา ที่ได้รับการดัดแปลงเป็นอันดับ 5 ที่เป็น defalut method ใน Matlab "ode45")
ทั้ง 4 วิธีนี้แตกต่างกันอย่างไร  อยู่ในบทความฉบับนี้แล้ว

ดาวน์โหลดบทความฉบับ pdf โดยกดที่นี่
(แก้ไขไฟล์ พฤหัสบดี ๕ ตุลาคม ๒๕๖๐)







วันอังคารที่ 12 กันยายน พ.ศ. 2560

การคำนวณเชิงตัวเลข (๑๗) เปรียบเทียบการแก้ Stiff equation ด้วยระเบียบวิธี Runge-Kutta และ Adam-Bashforth MO Memoir : Tuesday 12 September 2560

Memoir ฉบับนี้จัดทำขึ้นเพื่อเป็นตัวอย่างประกอบการสอนเรื่องเทคนิคการคำนวณเชิงตัวเลขให้กับนิสิตวิศวกรรมเคมีชั้นปีที่ ๓

ดาวน์โหลดบทความไฟล์ฉบับ pdf ได้ที่ link นี้

ในการแก้ปัญหาสมการอนุพันธ์สามัญ ปัญหาเงื่อนไขค่าเริ่มต้นด้วยการคำนวณเชิงตัวเลขนั้น ระเบียบวิธีรุงเก-คุตตาอันดับ 4 (4th order Runge-Kutta หรือพวกที่ได้รับการพัฒนาโดยใช้ระเบียบวิธีนี้เป็นตัวตั้งต้น) มักจะเป็นตัวแรกที่ได้รับการแนะนำให้ใช้ เนื่องด้วยการที่มันให้คำตอบที่มีความถูกต้องสูงได้รวดเร็ว และยังมีช่วง stability limit ของการอินทิเกรตที่จัดว่ากว้าง แต่นั่นไม่ได้หมายความว่าระเบียบวิธีรุงเก-คุตตาอันดับ 4 จะใช้การได้ดีทุกกรณี สำหรับระบบสมการขนาดใหญ่ การได้มาซึ่งคำตอบที่มีความถูกต้องสูง ด้วยการใช้เวลาคำนวณที่เหมาะสมถือว่าเป็นสิ่งที่ควรต้องพิจารณา (ความเร็วในการคำนวณในที่นี้พิจารณาจากการได้คำตอบที่มีความถูกต้องในระดับเดียวกัน ณ ตำแหน่งตัวแปรอิสระเดียวกัน ระเบียบวิธีที่มีการคำนวณฟังก์ชันในแต่ละขั้นตอนน้อยกว่า และ/หรือสามารถใช้ช่วงก้าวการอินทิเกรต (step size) ที่กว้างกว่า จะใช้เวลาในการคำนวณที่น้อยกว่า)
 
Stiff equation เป็นสมการหรือระบบสมการที่ประกอบด้วยพจน์ (ในกรณีของสมการเดียว) หรือสมการ (ในกรณีที่มีตั้งแต่สองสมการขึ้นไป) ที่มีระดับการเปลี่ยนแปลงที่แตกต่างกันมาก คือจะมีอย่างน้อยหนึ่งพจน์หรือหนึ่งสมการที่มีการเปลี่ยนแปลงอย่างรวดเร็วมากเมื่อเทียบกับพจน์หรือสมการอื่นที่เหลือ ตัวอย่างของระบบสมการเช่นนี้ได้แก่ระบบสมการที่ประกอบด้วยสมการพีชคณิต (Algebraic equation) และสมการอนุพันธ์ (Differential equation) รวมกันอยู่ ที่เรียกว่าเป็นระบบสมการ Differential-Algebraci Equations หรือย่อว่า DAE โดยตัวสมการพีชคณิตนั้นทำหน้าที่เป็นเสมือนสมการอนุพันธ์ที่มีการเปลี่ยนแปลงที่รวดเร็วมากจนเสมือนกับว่าเข้าสู่สภาวะคงตัว (steady state) ในทันทีทันใด ในขณะที่สมการอนุพันธ์อื่นที่เหลือค่อย ๆ มีการเปลี่ยนแปลงอย่างช้า ๆ
 
ปัญหาของ Stiff equation คือพจน์หรือสมการที่มีการเปลี่ยนแปลงอย่างรวดเร็วนั้นเป็นตัวกำหนดช่วงก้าว (step size) ของการคำนวณ ด้วยการที่มันมีการเปลี่ยนแปลงที่รวดเร็วทำให้ต้องใช้ช่วงก้าวที่สั้นมากในการเริ่มต้นการคำนวณ แต่เมื่อค่าของพจน์หรือสมการที่มีการเปลี่ยนแปลงอย่างรวดเร็วนั้นแทบจะไม่มีผลกระทบอะไรต่อคำตอบแล้ว ถ้าคำนวณโดยใช้ระเบียบวิธี Singel step method (คือใช้จุดเริ่มต้นในการคำนวณเพียงจุดเดียว) ที่อยู่ในกลุ่ม Explicit method จะพบว่าจะไม่สามารถเพิ่มความยาวช่วงก้าวของการคำนวณเพื่อเร่งการคำนวณได้ จำเป็นต้องใช้ช่วงก้าวที่แคบมากนั้นไปตลอดการคำนวณ ทำให้เสียเวลาการคำนวณมาก ตัวอย่างของปัญหาประเภทนี้เช่นการเกิดปฏิกิริยาคายความร้อนใน fixed-bed tubular reactor ที่อัตราการไหลและ/หรือความเข้มข้นของสารตั้งต้นนั้นสามารถเปลี่ยนแปลงจากค่าหนึ่งไปยังอีกค่าหนึ่งได้อย่างรวดเร็ว (จนอาจสมมุติได้ว่าเป็นแบบ step change) ในขณะที่การเปลี่ยนแปลงอุณหภูมิภายใน fixed-bed นั้นจะเปลี่ยนแปลงช้ากว่า
 
กรณีเช่นนี้การใช้ระเบียบวิธีพวก Multi step method จะเหมาะสมมากกว่า แม้ว่าระเบียบวิธีพวก Multi step method จะมีข้อเสียคือไม่สามารถเริ่มต้นการคำนวณด้วยตัวเองได้ จำเป็นต้องเริ่มต้นด้วยการใช้ระเบียบวิธีพวก Single step ก่อน จากนั้นจึงค่อยเปลี่ยนมาใช้ระเบียบพวก Multi step method ในบรรดาระเบียบวิธี Multi step method นั้น ระเบียบวิธีอาดามส์-แบชฟอร์ทอันดัน 4 (4th order Adams-Bashforth หรือพวกที่ได้รับการพัฒนาโดยใช้ระเบียบวิธีนี้เป็นตัวตั้งต้น) เป็นหนึ่งในวิธีการที่นิยมใช้กัน โดยในระเบียบวิธีอาดามส์-แบชฟอร์ทอันดัน 4 นี้จะมีการใช้ข้อมูลย้อนหลังจากตำแหน่งปัจจุบันไปอีก 3 ตำแหน่งในการทำนายค่าจุดถัดไป








สำหรับคนทึ่คิดว่าในเมื่อมันมีโปรแกรม MATLAB ให้ใช้ แล้วทำไมเรายังต้องเรียนรู้เรื่องแบบนี้อีก หรือคนที่ต้องทำงานกับนักวิจัยที่ทำ simulation ก็ขอแนะนำให้ไปอ่าน Memoir ปีที่ ๙ ฉบับที่ ๑๔๐๑ วันพฤหัสบดีที่ ๖ กรกฎาคม ๒๕๖๐ เรื่อง "รู้ทันนักวิจัย (๖) บน simulation ทุกอย่างเป็นไปได้หมด (ภาค ๒)" เพิ่มเติมได้ครับ