การสร้างวิธี Runge Kutta ที่ชัดเจนของลำดับ 9 และสูงกว่า


9

หนังสือเก่าที่ผมเคยเห็นบอกว่าจำนวนขั้นต่ำของขั้นตอนของวิธีการที่ชัดเจน Runge-Kutta ของคำสั่งที่ระบุไม่เป็นที่รู้จักสำหรับการสั่งซื้อ9 สิ่งนี้ยังคงเป็นจริงหรือไม่?9

มีไลบรารีใดบ้างที่ทำงานร่วมกับวิธี Runge-Kutta ระดับสูงโดยอัตโนมัติ


"ทำงานโดยอัตโนมัติกับ" หมายความว่าอย่างไร
David Ketcheson

@DavidKetcheson สร้างค่าสัมประสิทธิ์และตรวจสอบคุณสมบัติของพวกเขา ฉันไม่สามารถจินตนาการได้เลยว่าใครบางคนจะได้รับวิธีการสั่งซื้อด้วยมืออย่างหมดจดเนื่องจากเงื่อนไขและตัวแปรที่มี
คิริลล์

ฉันไม่รู้เกี่ยวกับซอฟต์แวร์ใด ๆ เพื่อสร้างสัมประสิทธิ์เช่นนั้น ฉันเคยเห็นวิธี RK ลำดับสูงทางออนไลน์เช่นที่พัฒนาโดย Terry Feagin กระดาษอธิบายกระบวนการของการได้รับค่าสัมประสิทธิ์สำหรับการสั่งซื้อ 10 คือที่นี่ ดูเหมือนว่าจะไม่มีการใช้วิธีอัตโนมัติอย่างง่ายดายและฉันสงสัยว่ามันมีอยู่จริง (ตามหมายเหตุด้านข้างฉันไม่เคยเห็นลำดับ RK 9 เสมอ (7) 8 หรือ (8) 10 ไม่แน่ใจว่า RK9 มีอยู่เช่นกัน!)
Etienne Pellegrini

(7) 8 (8) 9 (8) 10 (10) 12 และ (12) 14 ทุกคนมีการใช้งานใน DifferrntialEquations.jl คุณสามารถลองใช้กับปัญหามากมาย ฉันจะให้การประเมินรายละเอียดเล็กน้อย
Chris Rackauckas

โปรดทราบว่าลำดับที่ 8 ข้างต้นนั้นไม่มีประโยชน์ในความแม่นยำของจุดลอยตัว วิธีการของเวอร์เนอร์นั้นดีมาก แต่มีเพียงแค่ 6 ข้อเท่านั้นที่ง่ายต่อการ FSAL Feagin ไม่มีการแก้ไข
Chris Rackauckas

คำตอบ:


14

ขอบเขต

นั่นคือความจริง ในหนังสือของบุชเชอร์หน้า 196 มีข้อความระบุไว้ดังต่อไปนี้: ในกระดาษ 1985 บุชเชอร์แสดงให้เห็นว่าคุณต้องใช้ 11 ขั้นตอนในการสั่งซื้อ 8และนี่คือความคมชัด สำหรับการสั่งซื้อ 10 Hairer ได้รับตระกูลของวิธีการ 17 ขั้นตอนแต่ไม่มีใครรู้ว่าสามารถทำได้ดีกว่า ข้อมูลเดียวกันนี้ให้ไว้ในหมวด II.5 ของHairer, Norsett และ Wanner ผม การอ้างอิงหลังนั้นยังใช้เทคนิคบางอย่างในการพัฒนาคู่ที่มีลำดับสูง (สูงสุด 8 ลำดับ)

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

ฉันเชื่อว่า @Enene ถูกต้องในการบอกว่าวิธีการเรียงลำดับสูงสุดที่ถูกสร้างขึ้นด้วยมือนั้นเป็นเพราะเทอร์รี่เฟิน เกี่ยวกับความคิดเห็นอื่น ๆ ของเขากระดาษนี้มีบางคู่ 9 (8):

JH Verner คู่ Runge-Kutta ลำดับสูงที่มีลำดับขั้นต่ำคณิตศาสตร์ประยุกต์เชิงตัวเลขเล่มที่ 22 ฉบับที่ 1-3, พฤศจิกายน 2539, หน้า 345-357

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

p | N
-----
1 | 1
2 | 2
3 | 4
4 | 8
5 | 17
6 | 37
7 | 85
8 | 200
9 | 486
10| 1205
11| 3047
12| 7813
13| 20300
14| 53264

ซอฟต์แวร์

สำหรับวิธีการสั่งซื้อที่สูงมากจำนวนและความซับซ้อนของเงื่อนไขการสั่งซื้อจะไม่สามารถจัดการด้วยมือได้ แพคเกจสัญลักษณ์บางอย่าง (อย่างน้อย Mathematica) มีความสามารถในการสร้างเงื่อนไขการสั่งซื้อ Runge-Kutta อาจมีบางแพ็คเกจอื่น ๆ ที่นั่น แต่ฉันรู้ต่อไปนี้ (ทั้งที่ฉันเขียน):

  • พยักหน้า : แพคเกจหลามที่สามารถสร้างการแสดงออกสัญลักษณ์และรหัสสำหรับเงื่อนไขการสั่งซื้อเพื่อการสั่งซื้อโดยพลการ นอกจากนี้ยังมีรหัส Python สำหรับตรวจสอบเงื่อนไขเหล่านั้นการคำนวณสัมประสิทธิ์ข้อผิดพลาด ฯลฯ
  • RK-Opt : แพ็คเกจ MATLAB ที่เหนือกว่าวิธีอื่น ๆ ของ Runge-Kutta ที่มีค่าสัมประสิทธิ์เหมาะสำหรับจุดประสงค์ที่แตกต่างกัน ขณะนี้ไม่สามารถจัดการ RK ที่ชัดเจนในลำดับที่ 9 ได้ (ขึ้นอยู่กับลำดับที่ 8 สำหรับวิธีการสั่งซื้อแบบลำดับขั้นหนึ่งและลำดับที่สิบสำหรับวิธีที่มีลำดับขั้นสูงกว่า) หากนั่นคือสิ่งที่คุณสนใจฉันสามารถเพิ่มเงื่อนไขลำดับที่ 9 (และสูงกว่า) ได้อย่างง่ายดาย

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


5

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

หากคุณต้องการบทสรุปของ RK tableaus คุณสามารถค้นหาได้ในรหัส Juliaนี้ การอ้างอิงสำหรับกระดาษที่มาจากพวกเขาอยู่ในเอกสารสำหรับตัวสร้างฉาก เอกสารนักพัฒนาซอฟต์แวร์สำหรับ DifferentialEquations.jl จะแสดงรายการ tableaus เหล่านี้ทั้งหมดที่พร้อมใช้งานและคุณสามารถดูได้ที่นี่ว่าสิ่งเหล่านี้ได้รับการทดสอบโดยใช้ชุดการรวมอย่างต่อเนื่องของ Travis และ AppVeyor เพื่อให้แน่ใจว่าไม่เพียง แต่เงื่อนไขการสั่งซื้อเท่านั้น บรรลุบรรจบที่ร้องขอ (การทดสอบการตรวจสอบ) จากสิ่งเหล่านี้คุณจะเห็นว่ามี:

  • 5 คำสั่ง 9 วิธี
  • 6 คำสั่ง 10 วิธี
  • สั่งซื้อ 2 วิธี 12
  • 1 วิธีสั่งซื้อ 14

(ที่ฉันสามารถหาที่เผยแพร่) อีกครั้งทั้งหมดมาด้วยมือ

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

หากคุณต้องการแปลงความมั่นคงจำนวนมากคุณสามารถplot(tableau)ใช้สูตร Plots.jl ชุดของบันทึกย่อที่ดีซึ่งมีการจดบันทึกจำนวนมากนี้สามารถพบได้บนเว็บไซต์ของ Peter Stone (ไปด้านล่างและคลิกที่คำสั่ง 10 แผนและคุณจะได้รับ PDF จำนวนมาก) เมื่อพัฒนา DifferentialEquations.jl ฉันได้สร้างชุดของ tableaus ที่จะผ่านปัญหาเหล่านี้อย่างเป็นระบบในการทดสอบปัญหา / ดูที่ตัวบ่งชี้การวิเคราะห์เพื่อดูว่าควรรวมอันใดในไลบรารีหลัก ฉันทำบันทึกบางอย่างที่นี่ อย่างที่คุณเห็นจากอัลกอริทึมที่รวมอยู่ในไลบรารีหลักสิ่งที่ฉันพบว่าคุ้มค่าคือวิธีการของเวอร์เนอร์และเฟากิน วิธีการสั่งซื้อ Verner 9 เป็นวิธีการสั่งซื้อที่สูงที่สุดพร้อมกับหน่วยสอดแทรกคำสั่งซื้อที่ตรงกัน นั่นเป็นสิ่งที่ต้องจดจำ: วิธีการของ Feagin นั้นไม่มี interpolant ที่ตรงกัน (แม้ว่าคุณสามารถ bootstrap Hermite ได้ แต่มันไม่มีประสิทธิภาพจริงๆ)

เนื่องจากมีการใช้งานทั้งหมดด้วยการใช้งานที่มีประสิทธิภาพมากคุณสามารถเล่นกับพวกเขาด้วยตัวเองและดูว่าคุณสมบัติที่แตกต่างมีความสำคัญจริง นี่เป็นโน้ตบุ๊ค Jupyter ซึ่งแสดงให้เห็นวิธีการ Feagin ในการใช้งาน ขอให้สังเกตว่าพล็อตการลู่เข้าจริงๆจะเกิด1e-48ข้อผิดพลาด วิธีการสั่งซื้อขั้นสูงนั้นมีประสิทธิภาพมากกว่าวิธีการสั่งซื้อที่ต่ำกว่าเมื่อคุณต้องการความอดทนน้อยมาก คุณสามารถค้นหาการวัดประสิทธิภาพบางอย่างที่ใช้บางอย่างได้ที่ DiffEqBenchmarks.jlแม้ว่าเมื่อใช้แล้วมันมักจะเป็นวิธีที่ 9 ของคำสั่งเวอร์เนอร์และมักจะแสดงให้เห็นว่าการวัดประสิทธิภาพนั้นไม่ได้อยู่ในระบอบการปกครองที่มีประสิทธิภาพสูง

ดังนั้นหากคุณต้องการที่จะเล่นและทำงานกับวิธีการสั่งซื้อขั้นสูง RK-Opt เป็นสิ่งที่ฉันพบว่าเป็นเครื่องมือที่ดีสำหรับการได้มา (เช่น @DavidKetcheson ที่กล่าวถึง) และ DifferentialEquations.jl มีวิธีการเผยแพร่ทั้งหมด (ฉันคิดว่า? ) ดำเนินการเพื่อให้คุณสามารถทดสอบ / เปรียบเทียบกับพวกเขาได้อย่างง่ายดาย อย่างไรก็ตามหากคุณไม่พบข้อสันนิษฐานที่สามารถทิ้งได้จากการทดสอบของฉันฉันไม่สามารถหาบางสิ่งที่ชนะวิธีเวอร์เนอร์ (คำสั่ง 6-9) และ Feagin (คำสั่ง 10+) แม้ว่า YMMV และฉันชอบที่จะเห็นการวิจัยเพิ่มเติมในเรื่องนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.