- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个一般性问题,我将在更具体的情况下提出这个问题。
如果想找到双摆的动力学,可以从数学上推导出运动方程,重写 ODE 使其具有对数值计算有用的特殊形式,并使用 C++ 中的 odeint 求解 ODE(参见堆栈溢出的例子 https://stackoverflow.com/a/30582741 )。
现在假设我们想对 n 个耦合摆(n 在运行时已知)做同样的事情。这需要我们写一个所谓的拉格朗日函数(动能 - 势能),这个函数的不同导数将是我们需要求解的 ODE。此外,必须以适合 odeint 的形式重写这些 ODE。这对于一般人来说很难用手完成。
在像 Mathematica 和 Maple 这样的程序中,这实际上很容易。可以从拉格朗日量中显式推导出所需的 ODE,而 ODE 求解器不需要我们将方程置于任何特殊形式(参见此处 mathematica 中的示例 https://mathematica.stackexchange.com/a/84279)。
是否可以在不经历太多麻烦的情况下用 C++ 做这样的事情?
可能的方法:
一种可能的方法是使用 c++ 包 ginac .这可以帮助我们分析推导 ODE。但我不知道如何将来自 ginac 的表达式重写为适合 odeint 中数值计算的形式。有什么想法吗?
最佳答案
简单的惯性项在您只需要计算 dV/dq 而不是 dT/dp 的意义上有所帮助。 odeint 提供了辛积分器的一个版本,它只期望 dV/dq 并假设 dT/dp 在您的情况下是微不足道的。但是,您仍然需要获得一个衍生物。
关于c++ - 来自 C++ 中拉格朗日/变分法的 ODE 求解器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31263391/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!