หนังสือเก่าที่ผมเคยเห็นบอกว่าจำนวนขั้นต่ำของขั้นตอนของวิธีการที่ชัดเจน Runge-Kutta ของคำสั่งที่ระบุไม่เป็นที่รู้จักสำหรับการสั่งซื้อ9 สิ่งนี้ยังคงเป็นจริงหรือไม่?
มีไลบรารีใดบ้างที่ทำงานร่วมกับวิธี Runge-Kutta ระดับสูงโดยอัตโนมัติ
หนังสือเก่าที่ผมเคยเห็นบอกว่าจำนวนขั้นต่ำของขั้นตอนของวิธีการที่ชัดเจน Runge-Kutta ของคำสั่งที่ระบุไม่เป็นที่รู้จักสำหรับการสั่งซื้อ9 สิ่งนี้ยังคงเป็นจริงหรือไม่?
มีไลบรารีใดบ้างที่ทำงานร่วมกับวิธี Runge-Kutta ระดับสูงโดยอัตโนมัติ
คำตอบ:
นั่นคือความจริง ในหนังสือของบุชเชอร์หน้า 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 อาจมีบางแพ็คเกจอื่น ๆ ที่นั่น แต่ฉันรู้ต่อไปนี้ (ทั้งที่ฉันเขียน):
อีกสังเกตที่น่าสนใจเกี่ยวกับเงื่อนไขการสั่งซื้อซึ่งจะกลายเป็นอย่างมีนัยสำคัญในการสั่งซื้อสูงเช่นเป็นที่มีสองวิธีที่จะได้รับจากพวกเขาและพวกเขาให้คุณที่แตกต่างกัน ( แต่เทียบเท่ารวม) เงื่อนไข: หนึ่งเป็นเพราะเนื้ออื่น ๆที่จะ Albrecht
@ DavidKetcheson คำตอบของประเด็นใหญ่: คุณสามารถสร้างวิธีการเรียงลำดับสูงพอโดยใช้การคาดการณ์ซึ่งเป็นขอบเขตที่มองโลกในแง่ร้ายมากและคุณสามารถทำได้ดีกว่ามากทุกอย่างดีมาจากมือ (ด้วยความช่วยเหลือของคอมพิวเตอร์บางเครื่อง เครื่องมือพีชคณิต) ไม่รู้จักขอบเขตล่างและวิธีการเรียงลำดับสูงสุดเกิดจาก Feagin จากความคิดเห็นบางส่วนฉันต้องการที่จะตอบคำถามด้วยการอภิปรายเกี่ยวกับการจัดแสดงสุดยอดโต๊ะอาหารที่ทันสมัย
หากคุณต้องการบทสรุปของ RK tableaus คุณสามารถค้นหาได้ในรหัส Juliaนี้ การอ้างอิงสำหรับกระดาษที่มาจากพวกเขาอยู่ในเอกสารสำหรับตัวสร้างฉาก เอกสารนักพัฒนาซอฟต์แวร์สำหรับ DifferentialEquations.jl จะแสดงรายการ tableaus เหล่านี้ทั้งหมดที่พร้อมใช้งานและคุณสามารถดูได้ที่นี่ว่าสิ่งเหล่านี้ได้รับการทดสอบโดยใช้ชุดการรวมอย่างต่อเนื่องของ Travis และ AppVeyor เพื่อให้แน่ใจว่าไม่เพียง แต่เงื่อนไขการสั่งซื้อเท่านั้น บรรลุบรรจบที่ร้องขอ (การทดสอบการตรวจสอบ) จากสิ่งเหล่านี้คุณจะเห็นว่ามี:
(ที่ฉันสามารถหาที่เผยแพร่) อีกครั้งทั้งหมดมาด้วยมือ
การทดสอบคอนเวอร์เจนซ์แสดงให้เห็นว่าบางส่วนของการพิสูจน์ไม่ได้ถูกนำมาใช้เพื่อความแม่นยำสูงพอที่จะทำงานสำหรับตัวเลขที่มากกว่า 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 และฉันชอบที่จะเห็นการวิจัยเพิ่มเติมในเรื่องนี้