[問題] 如何增加計算Runge-Kutta效率

作者: Absolitude (別再睡了起床了愛麗)   2018-10-15 03:06:55
各位板友好,我的問題大概是這樣
我想利用4th order Runge-Kutta方法追蹤帶電粒子在靜電磁場中的軌跡,這個靜電磁場
無法用解析方法表示,所以我用Interpolation分別建立電場和磁場的內插函數,再來按照
4th order Runge-Kutta處理兩個couple的微分方程的方式寫一個函數rk4,然後用
NestWhile執行rk4
4th order Runge-Kutta
https://i.imgur.com/qSgdghB.png
其中efr、efz、Br和Bz都是電磁場的內插函數
https://i.imgur.com/raE1PUy.png
不過計算的粒子數量一多就需要耗費不少時間,我覺得應該是我的程式寫得不太好,想請
問各路高手該如何提升計算效率,compile rk4對計算時間沒有顯著影響,我目前覺得問
題應該是出在內插函數算太慢,這有辦法處理嗎? Interpolation後的函數應該不用再
compile吧? 還是說rk4本身就不應該那樣寫? 感恩感恩
compile rk4 (沒影響)
https://i.imgur.com/szV0baY.png
作者: sunev (Veritas)   2018-10-15 04:06:00
不用內建的NDSolve嗎?
作者: AmibaGelos (Amiba Gelos)   2018-10-15 12:06:00
NDSolve最快 插值太貴改InterpolationOrder到2看看
作者: Eriri (英梨梨)   2018-11-06 22:03:00
既然不用NDsolve 這樣自己寫Runge Kutta 幹嘛還用Mathematica 不用其他更基本的語言不過以微分方程來說 NDsovle常常算法比自己寫的好很多 速度快不少就是了
作者: LPH66 (-6.2598534e+18f)   2018-11-12 11:18:00
補一篇上面不遠我回另一個也是寫 RK 法的 #1Q3PAMUA

Links booklink

Contact Us: admin [ a t ] ucptt.com