Railpower Dokümantasyonu

Numerik İntegratör

Boost kütüphanesine dahil edilen ordinary differential equation solver olarak tabir edilen odeint sistemin numerik integratörüdür.

Numerik integratör sistemde gelecek versiyonlarda özellikler eklenecek şekilde kodlanmıştır. Şu anda kullanılan integratör adaptif integratördür.

integrate_adaptive( stepper_controlled , *this , x , 0.0 , step_time , getDT() , observer );

Genel adaptif integratör dökümantasyonu için: Boost / Integrate functions kısmına bakılabilir. Adaptif geliştirme bu konunun kapsamına girmektedir.1


Stepper

Başlı başına integratörler hiçbir anlam ifade etmemekte olup integrasyonların alındığı aralıkları düzenleyen bu aralıklarda her hesaplamanın sonucunu bize geri döndüren bir yapıya ihtiyaç vardır, bu yapılar stepper olarak adlandırılırlar. Bu sistemde controlled stepper kullanılmıştır. Bu stepper birim zamanda hata aralığının içinde kalan her değer için integrasyon aralığını düşürür ve daha doğru sonuçlar vermeye çalışır. Buna rağmen adım sayısı verilen aralıkta değişmez, hata artarsa ve adımlar iterasyona yetmeyecek duruma gelmeye başlarsa adım genişliğini arttırır.

auto stepper_controlled = make_controlled( 1E-12 , 1E-12 , runge_kutta_dopri5< state_type >() );

Railpower projesinin sürümlerinde ilerleme kaydedildikçe diğer stepperların kullanımı da dahil edilecektir.

Stepper Dormand-Prince metodunu kullanmaktadır 5. dereceden çözüm üretmektedir.

Şu anda yukarıda verilen kod örneğinde görüldüğü üzere kontrollü stepper kullanılmıştır. Stepper'ın ilk argümanı absolute error(mutlak hata), ikinci argümanı relative error(bağıl hata) olarak belirlenmiştir ve değerleri 1E-12dir.