我必须解决一些刚性的常微分方程,所以我告诉自己Odeint提供的隐式方法。但是,当我在Xcode中复制并编译Odeint文档中的示例时, http://headmyshoulder.github.io/odeint-v2/doc/boost_numeric_odeint/tutorial/stiff_systems.html (有关完整示例,请参阅页面底部的链接" stiff_system.cpp"), 隐式rosenbrock4方法需要大约40030个步骤进行集成,而不是文档中声明的71。相比之下,对于同样适用于比较的runge_kutta_dopri5方法,我得到了文档中的1531步骤。相应地,隐式方法当然需要比runga_kutta方法更长的计算时间,尽管该示例应该例证隐式方法优于显式方法的优势,以解决这个特殊情况下的僵硬问题。 现在,如果我使用g ++编译器在另一台机器上编译代码,我几乎可以得到结果,即隐式方法的74步,这与文档建议的71非常接近,但仍然不准确。
任何人都可以解释为什么隐式方法不能正常使用Xcode 7.3.1以及可以用指定的方式在Xcode上使用它吗?
答案 0 :(得分:0)
所以,经过一些令人沮丧的搜索以获得odeint做它应该做的事情,我发现当你使用1.59版本的boost库(包含odeint)时一切正常。 rosenbrock4方法所描述的问题似乎只存在于1.60 - 1.62的后续版本中。所以,它肯定是库的问题,而不是xcode。我会把这个问题报告给odeint。与此同时,如果你遇到同样的问题,你可以下载boost 1.59,一切正常。