Runge-Kutta ve Veri Noktalarını Yeniden Kullanma


11

Python yani d y birinci dereceden bir ODE çözmek için dördüncü derece Runge-Kutta yöntemi uygulamaya çalışıyorum. Yöntemin nasıl çalıştığını anlıyorum, ancakf(x,y)hesaplanmasayısını en aza indiren verimli bir algoritma yazmaya çalışıyorumçünkü bu oldukça maliyetli. Adımlar üzerinde arttıkça daha önce hesaplanan ancak nasıl yapılacağını göremediğiniz veri noktalarını yeniden kullanabileceğiniz söylendi. Bunu nasıl yapacağını bilen var mı yoksa mümkün değil mi?dydx=f(x,y)f(x,y)


Araştırma "ezber". f(x,y)Sonuçlarınızı not almak için kolayca "sarın" .

2
@ S.Lott: Terim "r" olmadan "anı".

1
@DietrichEpp: Tamamen Doğru. Mac OS X, teknik bilgisi olmayan yeni, agresif bir yazım denetleyicisine sahiptir.

Bu 4. dereceden bir yöntemle simüle edilen 2. dereceden bir sistem midir?

İşte çok sayıda alternatif çözüm listesi: google.com/… Bunlardan herhangi biri muhtemelen yardımcı olacaktır.

Yanıtlar:


8

Eğer giden varsa yp_1 = f(x_1, y_1)için yp_2 = f(x_1+h, y_2)size orta noktaları ihtiyacımız olacak:

K1 = f(x_1+h/2, y_1+h/2*yp_1)
K2 = f(x_1+h/2, y_1+h/2*K1)
K3 = f(x_1+h, y_1+h*K2)

x_2 = x_1 + h
y_2 = y_1 + h/6*(yp_1+2*K1+2*K2+K3)
yp_2 = f(x_2, y_2)

Genel olarak, ara noktaların hiçbiri bir sonraki adımda yararlı değildir. Çünkü K1<> K2ve K3<> yp_2.


4

N NN=4N

Geçmiş işlev değerlendirmelerini yeniden kullanmak istiyorsanız, Adams-Bashforth gibi çok adımlı bir yöntem kullanmanız gerekir.

Her durumda, her strateji için ödeme yaparsınız. Tek adımlı yöntemler çok sayıda işlev değerlendirmesi gerektirir, ancak çok adımlı yöntemler en büyük bellek gereksinimine sahiptir.

Düzenleme: Düzeltme. İfadem yalnızca açık yöntemler için geçerlidir. Durum, örtülü yöntemler için daha az açıktır, çünkü aşama sayısı doğrudan işlev değerlendirme sayısına dönüşmez.


Muhtemelen biraz daha spesifik olmalıyım. Daha fazla ayrıntı için Kasap'a bakınız: Kasap, JC ve J. Wiley. Adi Diferansiyel Denklemler için Sayısal Yöntemler. Wiley Online Library, 2008. ODE çözümleri için mükemmel referans ve aynı zamanda RK yöntemleri için çok sayıda var olmama kanıtı sağlar (örneğin, sadece 4 işlev değerlendirmesi kullanan sipariş 5 Runge-Kutta yöntemi yoktur.)
Reid.Atcheson

1
Tamlık için: talepleriniz "genel Runge-Kutta yöntemleri" için değil, sadece açık Runge-Kutta yöntemleri için geçerlidir.
David Ketcheson

Tüh! Haklısın, bunun için üzgünüm.
Reid.Atcheson

1

ODE'nizi çözmek için Runge-Kutta Yöntemleri kullandığınızı biliyorum, ancak f (x, y) 'nizin eski hesaplanmış değerlerini yeniden kullanmak istiyorsanız, Adams-Bashforth veya Adams-Moulton gibi çok aşamalı yöntemleri düşünmek isteyebilirsiniz. yöntemleri. Tabii ki, bu yöntemlerin dezavantajı, uyarlanabilir zaman adımını çok kolay kullanamamanızdır.


0

Lütfen "gömülü" yöntemleri kontrol edin: Bu tür RK yöntemlerindeki amaç, yüksek dereceli yöntemin düşük dereceli yöntemle aynı işlev değerlendirmelerini kullandığı farklı siparişlerle iki yönteme sahip olmaktır. Bu, çok verimli hata tahminine olanak tanır. Bkz. P.165 ve Hairer, Norsett ve Wanner'ın “Adi Diferansiyel Denklemlerin Çözülmesi I: Kayıtsız Problemler”. Tipik örnekler Fehlberg sipariş 7 (8) yöntemleridir.

Ayrıca, PYTHON'daki ODE'leri çözmeye çalışıyorsanız , assimulo'ya bakın . Bu paketle birkaç haftadır oynuyorum ve oldukça mutluyum.

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.