@ DavidKetcheson'un cevabı büyük noktalara çarpıyor: her zaman ekstrapolasyon kullanarak yeterince yüksek düzen yöntemleri inşa edebilirsiniz, bu çok kötümser bir bağ ve her zaman çok daha iyi yapabilirsiniz, tüm iyi olanlar elle elde edilir (bazı bilgisayarların yardımıyla) cebir araçları), alt sınır bilinmemektedir ve en yüksek dereceli yöntemler Feagin'den kaynaklanmaktadır. Bazı yorumlar göz önüne alındığında, bu alandaki son teknoloji tableaus tartışmasıyla cevabı tamamlamak istedim.
RK tableaus'un bir özetini istiyorsanız, bu Julia kodunda bir tane bulabilirsiniz . Geldikleri bildiri için alıntılar tablo oluşturucularının öğretilerinde bulunmaktadır. DifferentialEquations.jl için geliştirici belgeleri , tüm bu tabloları kullanıma hazır olarak listelemektedir ve burada bunların yalnızca sipariş koşullarının karşılanmadığından emin olmak için Travis ve AppVeyor sürekli entegrasyon paketleri kullanılarak test edildiğini görebilirsiniz. istenen yakınsamaya ulaşmak (doğrulama testi). Bunlardan şunu görebilirsiniz:
- 5 sipariş 9 yöntem
- 6 sipariş 10 yöntem
- 2 sipariş 12 yöntem
- 1 sipariş 14 yöntem
(yayınlandığını bulabilirim). Yine, hepsi elle türetildi.
Yakınsama testleri sözcükler bazı (onlar yorumlanmıştır fazla 64 bit numaraları için çalışmalarına yeterince yüksek hassasiyet yürütülen olmadığını göstermek böyle ). Bu, farkında olmak için ilginç bir tuhaflık: Bu yüksek siparişlerde genellikle sadece "bir hataya x
" sipariş koşullarını karşılayan katsayılar alırsınız , ancak keyfi hassas aritmetik kullanırken bu sınırları gerçekten tespit edebilirsiniz. Bu nedenle, katsayıları gerçekleştirdiğiniz hassasiyet önemlidir ve test etmek istediğiniz hassasiyeti kapsayacak şekilde seçmelisiniz (/ elbette kullanın).
Bir sürü kararlılık grafiği istiyorsanız, sadece plot(tableau)
Plots.jl reçetesini kullanabilirsiniz. Bu yazının birçoğuna sahip iyi bir not seti Peter Stone'un web sitesinde bulunabilir (aşağıya gidin ve sipariş 10 düzenlerini söyleyin ve bir sürü PDF alın). DifferentialEquations.jl geliştirirken, test problemleri üzerinde sistematik olarak bunları geçmek / ana kütüphaneye hangilerinin dahil edilmesi gerektiğini görmek için analitik göstergelere bakmak için bu tableaus setini oluşturdum. Burada kısa notlar aldım . Ana kütüphanede bulunan algoritmalardan da görebileceğiniz gibi, değerli bulduğum Verner ve Feagin metodlarıydı. Verner 9. sipariş yöntemi, siparişle de eşleşen bir interpolant ile en yüksek sipariş yöntemidir. Bu bilinmesi gereken bir şey: Feagin yöntemlerinde eşleşen bir interpolant yoktur (ancak Hermite'yi önyükleyebilirsiniz, ancak bu gerçekten verimsizdir).
Hepsi çok verimli uygulamalarla uygulandığından, onlarla kendiniz oynayabilir ve farklı özelliklerin gerçekte ne kadar önemli olduğunu görebilirsiniz. Kullanılan Feagin yöntemlerini gösteren bir Jupyter dizüstü bilgisayar . Yakınsama grafiğinin gerçekten 1e-48
hata yapacağına dikkat edin . Yüksek sipariş yöntemleri, gerçekten çok çok düşük bir toleransa ihtiyacınız olduğunda düşük sipariş yöntemlerinden daha verimlidir. Bazılarını DiffEqBenchmarks.jl'de kullanan bazı kriterler bulabilirsiniz , ancak kullanıldıklarında genellikle 9. derece Verner yöntemidir ve genellikle karşılaştırmanın bu yüksek siparişin etkili olduğu rejimde olmadığını gösterir.
Eğer oynamak ve bazı yüksek dereceli yöntemlerle çalışmak istiyorsanız, bulduğum şey RK-Opt bazı türetmek için iyi bir araçtır (@DavidKetcheson belirtildiği gibi) ve DifferentialEquations.jl yayınlanan tüm yöntemleri (sanırım? ) uygulayabilirsiniz böylece onlara karşı kolayca test / kıyaslama yapabilirsiniz. Ancak, bırakılabilecek bir varsayım bulamazsanız, testlerimden Verner (6-9 siparişleri) ve Feagin (10+ siparişleri) yöntemlerini yenen bir şey bulamadım. Yine de YMMV ve bu konuda daha fazla araştırma görmek isterim.