Düzeltmelerle başlayayım. Hayır, odeint
hiç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.
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:
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
:
İ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.