我想使用odeint boost积分器来查看Kerr时空中的测地曲线。这需要为各种参数值运行积分器(我有初始条件和初始动量矢量,因此系统的角动量将根据我的启动方式而变化)
我一直在关注这里列出的优秀例子
http://headmyshoulder.github.io/odeint-v2/examples.html
特别是Lorenz吸引子的例子。
我注意到的第一件事(在我的Kerr系统中,而不是Lorenz)是因为在某些初始条件下,我在t = 0时间点之后得到NaN(尽管毫无疑问这表明某处有更深的错误)。为了更好地探索这一点,我希望能够在不必每次重新编译的情况下更改系统的参数。这相当于想要改变,比如R或sigma而不重新编译。据我所知,没有直接的方法将额外的参数传递给集成函数,除了这里的第二个代码块
http://headmyshoulder.github.io/odeint-v2/doc/boost_numeric_odeint/tutorial/harmonic_oscillator.html
我承认,由于我缺乏C ++知识,我不太明白。我很欣赏如何获取运行时参数并将它们传递给这个求解器的知识,这样我就可以在不编译的情况下运行一堆批处理。
答案 0 :(得分:2)
您可以将运行时参数传递给定义ODE的系统函数:
.
├── .tmp
│ ├── app.css
│ ├── app.js
│ ├── header.html
│ └── index.html
├── bower_components
│ └── angular
├── dist
│ ├── app.min.css
│ ├── app.min.js
│ └── index.html
└── src
├── app.scss
├── app.ts
├── components
├── header.jade
├── index.html
└── shared
答案 1 :(得分:0)
我遇到了类似的问题。我所做的是定义了全局变量,以便我的函数可以访问我通过argvs传递的变量。如果您需要示例,请告诉我。