9. ve daha yüksek seviye için açık Runge Kutta yöntemlerinin oluşturulması


9

Gördüğüm bazı eski kitaplar, belirli bir siparişin açık bir Runge-Kutta yönteminin minimum aşama sayısının siparişler için bilinmediğini . Bu hala doğru mu?9

Yüksek dereceli Runge-Kutta yöntemleriyle otomatik olarak çalışmak için hangi kütüphaneler var?


"Otomatik olarak çalışmak" ile ne demek istiyorsun?
David Ketcheson

@DavidKetcheson Katsayıların oluşturulması ve özelliklerinin incelenmesi. Kaç tane koşul ve değişken olduğu göz önüne alındığında, birisinin tamamen el ile yüksek dereceli bir yöntem elde edeceğini hayal bile edemiyorum.
Kirill

Bu katsayıları üretecek herhangi bir yazılım bilmiyorum. Ben gibi, çevrimiçi yüksek mertebeden RK yöntemleri gördüğüm o Terry Feagin tarafından geliştirilen,. 10. derece için katsayıların elde edilmesini anlatan makale buradadır . Otomatik yöntem kolayca uygulanacak gibi görünmüyor ve var olduğundan şüpheliyim. (Bir yan not olarak, hiçbir zaman 9. sırada bir RK görmedim, her zaman (7) 8 veya (8) 10. RK9'un da var olduğundan emin değilim!)
Etienne Pellegrini

(7) 8, (8) 9, (8) 10, (10) 12 ve (12) 14'ün hepsi DifferrntialEquations.jl . Sonra bir sürü problem üzerinde deneyebilirsiniz. Biraz ayrıntılı bir değerlendirme yapacağım.
Chris Rackauckas

8. siparişin üstünde kayan nokta doğruluğu içinde genellikle yararlı olmadığını unutmayın. Verner yöntemleri gerçekten iyidir, ancak FSAL için sadece 6'ya kadar kolaydır. Feagin'in enterpolasyonu yoktur.
Chris Rackauckas

Yanıtlar:


14

sınırlar

Bu hala doğrudur. In Kasap kitabında ise: sayfa 196, bu şu diyor 1985 kağıt, Kasap siparişi 8 almak için 11 aşamalarını gerektiğini gösterdi ve bu keskindir. 10. sipariş için, Hairer 17 aşamalı yöntemlerden oluşan bir aile türetmiştir , ancak daha iyisini yapıp yapamayacağı bilinmemektedir. Aynı bilgiler Hairer, Norsett ve Wanner cilt. Ben . İkinci referans aynı zamanda yüksek mertebeden çiftler geliştirmek için bazı tekniklerden geçer (8. mertebeye kadar).

Herhangi bir sipariş için gereken minimum aşama sayısı üzerinde bir üst sınır vardır, çünkü bunları ekstrapolasyonla inşa edebilirsiniz. Bu çok uzun zamandır bilinmektedir; bir açıklama için bu son makaleme bakınız . Bununla birlikte, bu sınır düzende kuadratiktir ve kesinlikle oldukça kötümserdir. Aşağıda tartışılan nodepy yazılımı, bu yöntemler ve ayrıca herhangi bir sıradaki ertelenmiş düzeltme yöntemleri (Runge-Kutta yöntemleri) için kesin katsayılar üretebilir.

@Etienne'nin elle yapılan en yüksek sipariş yöntemlerinin Terry Feagin'den kaynaklandığını söyleme konusunda doğru olduğuna inanıyorum. Diğer yorumu ile ilgili olarak, bu makale bazı 9 (8) çift içermektedir:

JH Verner, Düşük kademeli yüksek dereceli açık Runge-Kutta çiftleri, Uygulamalı Sayısal Matematik, Cilt 22, Sayılar 1–3, Kasım 1996, Sayfa 345-357

İşte (kümülatif) sipariş koşullarının bir tablosu N- her sipariş için gerekli p; bu tablo literatürde verilenlerden daha ileri gider ve nodepy kullanılarak üretilir:

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

Yazılım

Çok yüksek sipariş yöntemleri için, sipariş koşullarının sayısı ve karmaşıklığı elle başa çıkmak imkansız hale gelir. Bazı sembolik paketler (en azından Mathematica), Runge-Kutta sipariş koşullarını oluşturma yeteneklerine sahiptir. Muhtemelen orada başka paketler var, ancak aşağıdakilerin farkındayım (her ikisi de yazdım):

  • nodepy : sipariş koşullarının keyfi sıraya göre sembolik ifadeler ve kod üretebilen bir Python paketi. Ayrıca, bu koşulları kontrol etmek, hata katsayılarını hesaplamak vb. İçin Python kodunu da içerir.
  • RK-Opt : Diğer birçok şeyin yanı sıra, birkaç farklı amaç için optimize edilmiş katsayılarla yüksek dereceli Runge-Kutta yöntemlerini bulabilen bir MATLAB paketi. Şu anda 9. sıra açık RK'yı işleyemedi (aşama sırası bir yöntem için 8. sıraya, daha yüksek aşama sırası olan yöntemler için onuncu sıraya kadar çıkıyor). İlgilendiğiniz bir şeyse, 9. dereceden (ve daha yüksek) koşulları oldukça kolay bir şekilde ekleyebilirim.

Bu kadar yüksek siparişlerde önemli hale gelen düzen koşulları hakkında bir başka ilginç not, bunları türetmenin iki yolunun olması ve size farklı (ama toplu olarak eşdeğer) koşullar vermesidir: biri Kasap, diğeri Albrecht'e .


5

@ 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-48hata 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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.