日晷库中cvodes的python绑定。
pycvodes的Python项目详细描述
pycvodes提供了 Python绑定到 Ordinary Differential Equation 中来自cvodes的集成例程 SUNDIALS suite。pycvodes允许用户进行数值积分 (系统)微分方程。请注意,敏感度分析的例程尚未在此绑定中公开(这使得 其功能与cvode基本相同)。
以下多步骤方法可用:
- bdf:后向微分公式(1到5阶)
- adams:隐式adams方法(顺序1到12)
注意,bdf(作为隐式步进器)需要用户提供 用于计算jacobian的回调。
您可能还想知道可以使用pycvodesfrom pyodesys 例如,可以解析地导出雅可比矩阵(使用同态)。pyodesys还提供 绘图功能,C++代码生成等等。
文档
最新稳定版本的自动生成API文档可在以下位置找到: https://bjodah.github.io/pycvodes/latest (当前主分支的开发版本如下: http://hera.physchem.kth.se/~pycvodes/branches/master/html)。
安装
最简单的安装方法是使用conda package manager:
$ conda install -c conda-forge pycvodes pytest $ python -m pytest --pyargs pycvodes
测试应该通过。
手动安装
此处提供二进制分布: https://anaconda.org/bjodah/pycvodes
源分发在以下位置可用: https://pypi.python.org/pypi/pycvodes
从源安装时,可以通过设置 环境变量PYCVODES_LAPACK,以后可以从python访问您的选择:
>>>frompycvodesimport_config>>>_config.env['LAPACK']# doctest: +SKIP'lapack,blas'
如果使用pip安装pycvodes请注意,您需要安装日晷 (及其开发头,启用了cvodes&lapack)在安装pycvodes之前。
示例
经典范德波尔振荡器(见examples/van_der_pol.py)
>>>importnumpyasnp>>>frompycvodesimportintegrate_predefined# also: integrate_adaptive>>>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=None,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)...ifdfdtisnotNone:...dfdt[:]=0...>>>y0=[1,0];dt0=1e-8;t0=0.0;atol=1e-8;rtol=1e-8>>>tout=np.linspace(0,10.0,200)>>>yout,info=integrate_predefined(f,j,y0,tout,atol,rtol,dt0,...method='bdf')>>>importmatplotlib.pyplotasplt>>>series=plt.plot(tout,yout)>>>plt.show()# doctest: +SKIP
有关更多示例,请参见examples/,并在此处显示Jupyter笔记本: http://hera.physchem.kth.se/~pycvodes/branches/master/examples