gpt4 book ai didi

c++ - C++中微分方程的数值解,采取的路径?

转载 作者:行者123 更新时间:2023-11-30 01:27:44 29 4
gpt4 key购买 nike

编辑

我现在正在使用 odeint。与我的强力算法实现相比,它使用起来相当简单,占用的内存也更少。

在这里查看我的问题 -->http://stackoverflow.com/questions/12060111/using-odeint-function-definition

这里-->http://stackoverflow.com/questions/12150160/odeint-streaming-observer-and-related-questions


我正在尝试实现一种数值方法 (Explicit Euler) 来求解一组三个耦合微分方程。我以前用过 C,但那是很久以前的事了(实际上忘记了一切)。我很清楚我想让我的程序做什么,也有一个粗略的算法。

我有兴趣使用 C++ 完成此任务(选择了 Stroustroup 的编程:使用 C++ 的原理和实践)。我的问题是,我应该使用数组还是 vector ? vector 似乎更容易处理,但我找不到如何让函数返回 vector ?一个函数是否可能返回多个 vector ?至此,我正在熟悉 C++ 语法。

我基本上需要我的函数返回许多数组。我意识到这在 C++ 中是不可能的,所以我也可以使用一些嵌套结构,例如 {{arr1}、{arr2}、{arr3}..}。请耐心等待,因为我是一个菜鸟,来自 Mathematica 编程。

谢谢!

最佳答案

如果您想使用 C++ 对常微分方程进行积分并且不想重新发明轮子,请使用 odeint .这个库正在成为用 C++ 求解 ODE 的事实标准。该代码非常灵活且经过高度优化,可以与任何手工制作的 C 代码(以及 Fortran 代码)相媲美。

评论你关于返回 vector 或数组的问题:如果它们被包装在一个类中(如 std::array),函数可以返回 vector 和数组。但不建议这样做,因为您会制作许多不必要的拷贝(包括每次都调用构造函数和析构函数)。我假设您想将函数方程放入 C++ 函数中并让它返回结果 vector 。对于此任务,如果将对 vector 的引用传递给函数并让函数填充此 vector ,效果会更好。这也是 odeint 实现这一点的方式。

关于c++ - C++中微分方程的数值解,采取的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8462128/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com