[问题] 如何增加计算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