“Sempatik”, sayısal bütünleştiricilere atıfta bulunmak ne demektir ve SciPy'nin iddiası bunları kullanıyor mu?


25

Bu yazımda şöyle yazdım:

... varsayılan olarak sadece sempatik yöntemler kullandığını varsaydığım SciPy entegratörü.

İçinde odeint"sert olmayan (Adams) bir yöntem" veya "sert (BDF) bir yöntem" kullanan SciPy'ye atıfta bulunuyorum . Kaynağa göre :

def odeint(func, y0, t, args=(), Dfun=None, col_deriv=0, full_output=0,
           ml=None, mu=None, rtol=None, atol=None, tcrit=None, h0=0.0,
           hmax=0.0, hmin=0.0, ixpr=0, mxstep=0, mxhnil=0, mxordn=12,
           mxords=5, printmessg=0):
    """
    Integrate a system of ordinary differential equations.

    Solve a system of ordinary differential equations using lsoda from the
    FORTRAN library odepack.

    Solves the initial value problem for stiff or non-stiff systems
    of first order ode-s::
        dy/dt = func(y, t0, ...)
    where y can be a vector.
    """

İşte bir olan örnek sadece beklendiği gibi eksenden sapmasıdır olduğunu göstermek için üç ay boyunca dünya etrafında bir uydunun yörüngesi yaymak.

I inanıyoruz olmayan simplektik entegratörleri da konserve enerji (veya diğer miktarlar) için eğiliminde olacaktır istenmeyen bir özelliği vardır ve bu nedenle, örneğin yörünge mekaniği istenmez. Ancak, sempatik bir bütünleştiriciyi sempatik yapan şeyin ne olduğundan tam olarak emin değilim.

Mülkiyetin ne olduğunu (bu, bir sempatik bütünleştiriciyi sempatik kılan), anlaşılması kolay ve (oldukça) anlaşılması kolay ancak yanlış olmayan bir şekilde açıklamak mümkün müdür? Entegratörün testte nasıl performans gösterdiğinden ziyade dahili olarak nasıl işlediğini göz önüne alarak soruyorum .

Ve benim odeintşüphem sadece sempatik entegratörleri kullanan doğru mu?


4
Güçlü bir kural olarak, bir kara kutu entegratörünün konum ve momentum denklemlerini ayırmanızı gerektiriyorsa sempatik olduğunu ummalısınız.
origimbo

@ origimbo Teşekkürler. Bunlar yapıyor ve odeintoldukça eski, yerleşik ve iyi referanslanmış kaynak kodları (düzenlenmiş soru, referanslar ODEPACK ve LSODA referansları) için bir Python sarmalayıcısı gibi gözüküyor . My bağlantılı örnek Şekil 6D durum vektörü, üç konum ve üç hızlar oluşur.
Hata! Beklemedik

11
ODEPACK ve LSODA'daki ODE entegratörleri sempatik entegratör değildir .
Brian Borchers

2
İşte iki çok basit çözücüyü karşılaştıran çalışılmış bir örnek: Euler ve Symplectic Euler: idontgetoutmuch.wordpress.com/2013/08/06/… .
idontgetoutmuch

2
Hairer, Nørsett ve Wanner tarafından yazılmış kitap , sempatik yöntemlerin iyi bir açıklamasını sunar. Özellikle Şekil 16.1 bak ve rakamlar burada .
JM

Yanıtlar:


47

Düzeltmelerle başlayayım. Hayır, odeinthiçbir sempatik entegratör yok. Hayır, sempatik entegrasyon enerjinin korunumu anlamına gelmez.

Semplectic ne anlama geliyor ve ne zaman kullanmalısınız?

Her şeyden önce, semplectic ne anlama geliyor? Sempatik, çözümün sempatik bir manifoldda var olduğu anlamına gelir. Semplectic manifold, 2 formuyla tanımlanan bir çözüm kümesidir. Semplectic manifoldların detayları muhtemelen matematiksel saçmalık gibi görünür, bu nedenle bunun yerine, böyle bir manifolddaki iki değişken kümesi arasında doğrudan bir ilişki vardır. Bunun fizik için önemli olmasının nedeni, Hamiltonian'ın denklemlerinin doğal olarak çözümlerin faz uzayındaki sempatik bir manifoldda bulunması, doğal bölünmenin konum ve momentum bileşenleri olmasıdır. Gerçek Hamilton çözümü için, bu faz uzay yolu sabit enerjidir.

Bir belirtici bütünleştirici, çözümü bir belirtici manifoldda yer alan bir birleştiricidir. Ayrıklaştırma hatası nedeniyle, bir Hamiltonian sistemini çözerken, manifold üzerinde tam olarak doğru yörüngeyi alamaz. Bunun yerine, bu yörünge kendisi bozulur sipariş için n gerçek yörüngeden. Sonra zamanla bu yörüngenin sayısal hatası nedeniyle doğrusal bir kayma var. Normal bütünleştiriciler ikinci dereceden (veya daha fazla) kayma eğilimindedir ve bu aşama alanı yolu (yalnızca yerel) hakkında iyi bir küresel garantileri yoktur.O(Δtn)n

Bunun ne anlama geldiği, sempatik bütünleştiricilerin, bu sürüklenme eksikliğinden ve bu da neredeyse periyodiklik garantisinden ötürü uzun zaman düzenlerini normal bütünleştiricilere göre daha iyi yakalama eğiliminde olmalarıdır. Bu dizüstü bilgisayar Kepler probleminde bu özellikleri iyi görüntüler . İlk resim, neden çözümün periyodik niteliğiyle bahsettiğimi gösteriyor.

görüntü tanımını buraya girin

Bu, DifentialEquations.jl . Enerjinin tam olarak korunmadığını görebilirsiniz, ancak varyasyonu, bozulan çözüm manifoldunun gerçek manifolddan ne kadar uzakta olduğuna bağlıdır. Fakat sayısal çözümün kendisi sempatik bir manifoldda bulunduğundan, neredeyse tam olarak periyodik olma eğilimindedir (görebileceğiniz bazı doğrusal sayısal sapmalarla), bu da uzun vadeli entegrasyon için çok güzel bir şekilde yapmayı sağlar. RK4 ile aynı şeyi yaparsanız, felaket alabilirsiniz:

görüntü tanımını buraya girin

Sayısal çözümde gerçek bir periyodiklik olmadığı ve bu nedenle fazla mesainin sürüklenme eğiliminde olduğunu görebilirsiniz.

Bu, sempatik entegratörleri seçmenin gerçek sebebini vurgular: sempatik entegratörler, sempatik özelliği olan problemlere uzun süreli entegrasyonlar için iyidir (Hamiltonian sistemleri) . Öyleyse birkaç şeyden geçelim. Sempatik bir problemde bile her zaman sempatik entegratörlere ihtiyacınız olmadığını unutmayın. Bu durumda, uyarlanabilir bir 5. sıra Runge-Kutta metodu iyi yapabilir. İşte Tsit5:

görüntü tanımını buraya girin

İki şeye dikkat edin. Birincisi, faz uzay grafiğindeki gerçek sürüklenmeyi görememeniz yeterince iyi bir doğruluk elde eder. Bununla birlikte, sağ tarafta, bu enerji kaymasının olduğunu görüyorsunuz, ve eğer yeterince uzun bir entegrasyon yapıyorsanız, bu yöntem periyodik özelliklere sahip çözüm yönteminin yanı sıra yapmayacaktır. Fakat bu soruyu gündeme getirmektedir, verimlilik açısından akıllıca nasıl doğru bir şekilde entegre olur? Bu biraz daha az kesin. In DiffEqBenchmarks.jl bu soruyu araştıran bazı kriterler bulabilirsiniz. Örneğin, bu defterdörtlü bir Boson modelinden bir Hamilton denklem sistemindeki çalışma zamanına karşı enerji hatasını inceliyor ve gerçekten yüksek doğruluk istiyorsanız, çok uzun entegrasyon sürelerinde bile sadece yüksek dereceli bir RK veya Runge-Kutta Nystrom kullanmanın daha verimli olduğunu gösteriyor RKN) yöntemi. Bu mantıklı çünkü bütünleştiricilerin belirleyici özelliği yerine getirmek için biraz verimlilikten vazgeçmeleri ve hemen hemen sabit bir zaman adımına sahip olmaları gerekiyor (ikincisine doğru ilerleyen bazı araştırmalar var ama çok uzak değil).

Ek olarak, bu dizüstü bilgisayarların her ikisinden de, yalnızca standart bir yöntem uygulayabileceğinizi ve onu her adımda (veya her birkaç adımda) çözelti manifolduna geri yansıtabileceğinizi fark edin. DifferentialEquations.jl ManifoldProjection geri çağırmasını kullanan örneklerin yaptığı budur. Koruma yasalarının güvence altına alındığını, ancak her adımda örtülü bir sistemi çözmenin ek bir maliyeti olan garantileri görürsünüz. Koruma denklemlerini eklemek için tam olarak örtülü bir ODE çözücü veya tekil kütle matrisleri de kullanabilirsiniz, ancak sonuçta bu yöntemlerin bir tradeoff olarak hesaplamalı olarak daha maliyetli olması.

Özetlemek gerekirse, sempatik bir bütünleştirici için ulaşmak istediğiniz sorunların sınıfı, hesaplama kaynaklarını çok kesin bir şekilde (tolerans <1e-12) almak için yatırım yapmak istemediğiniz sempatik bir manifold (Hamiltonian sistemleri) üzerinde bir çözüme sahip olanlardır. çözüm ve kesin enerjiye / vb. ihtiyaç duymaz. koruma. Bu, uzun vadeli entegrasyon özellikleriyle ilgili olduğunu vurguluyor, bu nedenle, literatürden bazılarının önerdiği gibi sadece çok soğukkanlı bir şekilde akın etmemelisiniz. Ancak, saçma doğruluğu olmadan yeterince hızlı çözmeniz gereken uzun süre entegrasyonların olduğu Astrofizik gibi birçok alanda hala çok önemli bir araçtır.

Semplectic entegratörlerini nerede bulabilirim? Ne tür sempatik bütünleştiriciler var?

Genelde iki sempatik entegratör sınıfı vardır. Semplectic Runge-Kutta entegratörleri (yukarıdaki örneklerde gösterilenlerdir) ve semplect özelliğine sahip örtülü Runge-Kutta yöntemleri vardır. @Origimbo'nun da belirttiği gibi, sempatik Runge-Kutta entegratörleri, onlara konumlandırılmış ve momentum kısımlarını ayrı ayrı ele alabilmeleri için bölümlenmiş bir yapı sağlamalarını ister. Bununla birlikte, yoruma karşı, örtük Runge-Kutta yöntemleri buna gerek duymadan sempatiktir, ancak bunun yerine doğrusal olmayan bir sistemin çözülmesini gerektirir. Bu çok kötü değil, çünkü sistem katı değilse, bu doğrusal olmayan sistem fonksiyonel yineleme veya Anderson ivmesiyle çözülebilir, ancak sempatik RK yöntemleri yine de verimlilik için tercih edilmelidir.

Bununla birlikte, odeint, bu ailelerin herhangi birinin yöntemlerine sahip değildir, bu nedenle sempatik entegrasyon sağlayıcıları arıyorsanız, iyi bir seçim değildir. Fortran'da, Hairer'in sitesinde kullanabileceğiniz küçük bir set var . Mathematica'da yerleşik bir kaç tane var . GSL ODE çözücüleri , IIRC'nin sempatik olduğu RK Gaussian nokta entegratörlerine sahiptir, ancak GSL yöntemlerini kullanmanın tek nedeni budur.

Ancak en kapsamlı sempatik entegratör kümesi Julia'daki DifferentialEquations.jl'de bulunabilir (bunun yukarıdaki defterlerde kullanıldığını hatırlayın). Mevcut sempatik Runge-Kutta yöntemlerinin listesi bu sayfada bulunur ve örtülü orta nokta yönteminin de belirtici olduğunu farkedersiniz (örtülü Runge-Kutta Trapezoid yönteminin "neredeyse belirtici" olduğu kabul edilir). Yalnızca en büyük yöntem setine sahip değil, aynı zamanda açık kaynak kodludur (kodu ve testlerini yüksek seviyede bir dilde görebilirsiniz) ve çok sayıda kıyaslama vardır . Fiziksel sorunları çözmek için kullanmak için iyi bir tanıtım not defteri bu eğitim not defteri. Ancak, elbette ilk ODE dersi ile pakete başlamanız önerilir .

Genel olarak, bu blog yazısında sayısal diferansiyel denklem takımlarının ayrıntılı bir analizini bulabilirsiniz . Oldukça ayrıntılı fakat her birini bundan daha az ayrıntıya soktuğu için çok fazla konu içermesi gerektiğinden, herhangi bir şekilde genişletilmesini istemek için çekinmeyin.


10
Bu cevapla Stack Exchange Jackpot’u yakalamış gibiyim! Bu benim için mükemmel bir cevap, bazılarını hemen anlıyorum ve beni daha fazla okumak için endişeli bırakmadığım kısımları. Bu cevabı iyice kaynaklamak için harcadığınız zamanın yanı sıra diğer faydalı ve öğretici linkleri de dahil ettiğiniz için gerçekten teşekkür ederim.
Hata! Beklemedik

Matematiksel ayrıntılara girmeden önce, kabaca belirticinin hacminin korunması anlamına geldiğini söyleyebiliriz , değil mi?
Miguel

2
FTR, uyarlanabilir 5. sıra Runge-Kutta'nın burada RK4'ten çok daha iyi performans göstermesinin nedeni, daha yüksek bir sıraya sahip olması değil, daha uygun adım boyutları seçmesidir. RK4'ün bu kadar kötü performans göstermesinin nedeni, esas olarak adım ebatının kanatlı alanda uygun olmayan bir şekilde yüksek olmasıdır; adım büyüklüğünün yarısı olan aynı çözücü çok daha iyi bir çözüm sağlayacaktır. (Sadece, yörüngeyi, apogee çevresinde ince bir şekilde çözmek için gerekli olmadığında çok fazla zaman
harcardı

1
Mükemmel bir fuar. Bir yan soru olarak: OP Python'a atıfla başlar - bağlantılı Julia örneklerinin çizgileri boyunca Python öğreticileri / paketleri öneriliyor mu?
Quetzalcoatl

1
Bu tür bütünleştiriciler için bildiğim tek Python paketi farklıdır , README'de belgelenmemiştir ancak tüm bu aynı yöntemlere erişebilir ve bu paketi kullanarak Python'da yeniden yazabilirsiniz.
Chris Rackauckas

14

pq'H(p,q)

dqdt=+'Hp
dpdt=-'Hq.
'H
p(t),q(t)=φt(p(t0),q(t0))
dpdqpqBunun, faz uzayındaki kapalı eğrilerin içindeki alanın korunduğunu söyleyerek söyleyebileceğin bir boyutudur. Bu, her türden güzel stabilite özelliğini garanti eder, çünkü yörüngelerin "topları" birbirine "yakın" kalmalıdır.

Nümerik olarak sempatik bir bütünleştirici aynı şekilde hareket eder ve aynı zamanda bu alanı / iki şekli korur. Bu da, korunmuş bir "sayısal Hamiltoniyen" olduğu anlamına gelir (ki bu, tam olarak aynı değildir [okunamaz 'değildir). Kararlılığın doğrulukla aynı olmadığını unutmayın, bu nedenle sempatik yöntemlerin avantajlarının çoğu, çok uzun zaman boyunca bütünleşirken ortaya çıkar (örneğin, yönteminiz hızla yanlış bir şekilde çürümesine izin vermezken, Dünya'nın yanlış tarafına bir uydu yerleştirebilir) o).


Bunun için teşekkür ederim! Şimdi maaşımın üzerindeki kelimeleri kullanacağım. Yörüngelerin n topları, 3 gövdeli simülasyonlarda olduğu gibi çatallanmalara yakın olduklarında daha fazla risk altındadır. bakınız Doedel ve diğ. 2007, Int. J. Bifurcation ve Chaos, v 17, no. 8 (2007) 2625–2677 Nasıl yaptım? Ayrıca ieec.cat/hosted/web-libpoint/papers/…
uhoh

2
Okuyucu matematiksel detayların farkında olmadığı sürece, istikrarın belirtilmesi yanıltıcıdır, çünkü birimin korunması, bireysel yörüngelerin yakın kaldığı anlamına gelmez.
Miguel

1
@Miguel Bunun matematiksel ayrıntıları takip etmeyen okuyucunun her iki şekilde de cüret ettiği durumlardan biri olduğunu düşünüyorum; yararları faydalıdır. Kasıtlı olarak yanlış olmayan daha iyi bir şey düşünebiliyorsanız, yeniden yazma önerilerini kabul etmekten mutlu olurum.
origimbo

22

1
@Miguel: Fakat parçacıkların kabarcığının iki veya daha fazla parçaya bölünmesine izin verilir. Onun toplam hacmi sadece sabit kalmalı.
Wolfgang Bangerth,
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.