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