boost中odeint的python绑定。
pyodeint的Python项目详细描述
pyodeint提供了 Python绑定到odeint。 目前,以下步进器已曝光:
- rosenbrock4:四阶rosenbrock(隐式多步)步进器
- dopri5:5阶dopri5(显式runge kutta)
- bs:bulirsch-stoer步进器(修改的中点规则)。
Rosenbrock4步进器要求用户提供 计算雅可比矩阵。
您可能还想知道可以使用pyodeintfrom pyodesys 它可以为你解析地导出雅可比(pyodesys也提供了 绘图功能,C++代码生成等等。
文档
最新稳定版本的自动生成API文档可在以下位置找到: https://bjodah.github.io/pyodeint/latest (当前主分支的开发版本如下: http://hera.physchem.kth.se/~pyodeint/branches/master/html)。
安装
最简单的安装方法是使用conda package manager:
$ conda install -c conda-forge pyodeint pytest $ python -m pytest --pyargs pyodeint
测试应该通过。
此处提供二进制分布: https://anaconda.org/bjodah/pyodeint
源分发在以下位置可用: https://pypi.python.org/pypi/pyodeint
下面是如何从源代码构建的示例:
$ CPATH=/opt/boost_1_65_0/include python3 setup.py build_ext -i
示例
经典范德波尔振荡器(见examples/van_der_pol.py)
>>>frompyodeintimportintegrate_adaptive# also: integrate_predefined>>>mu=1.0>>>deff(t,y,dydt):...dydt[0]=y[1]...dydt[1]=-y[0]+mu*y[1]*(1-y[0]**2)...>>>defj(t,y,Jmat,dfdt,fy=None):...Jmat[0,0]=0...Jmat[0,1]=1...Jmat[1,0]=-1-mu*2*y[1]*y[0]...Jmat[1,1]=mu*(1-y[0]**2)...dfdt[0]=0...dfdt[1]=0...>>>y0=[1,0];tend=10.0;dt0=1e-8;t0=0.0;atol=1e-8;rtol=1e-8>>>tout,yout,info=integrate_adaptive(f,j,y0,t0,tend,dt0,atol,rtol,...method='rosenbrock4',nsteps=1000)>>>importmatplotlib.pyplotasplt>>>series=plt.plot(tout,yout)>>>plt.show()# doctest: +SKIP
有关更多示例,请参见examples/,并在此处显示Jupyter笔记本: http://hera.physchem.kth.se/~pyodeint/branches/master/examples
另请参见
pyodesys了解如何自动 生成jacobian回调函数(并轻松切换到其他解算器)。
许可证
源代码是开放源码的,在 “简化(2条款)BSD许可证”。有关详细信息,请参见LICENSE。 欢迎投稿人在https://github.com/bjodah/pyodeint提出改进建议