【发布时间】:2016-01-17 19:52:26
【问题描述】:
使用boost c++ odeint库,如何求解以下运动常微分方程,
z'' = -n²·z.
上述ODE的解析解为
z(t) = (z0'/n)·sin(n·t) + z0·cos(n·t)。
OP 在回答中根据评论(1 月 17 日 23:01)尝试解决方案
我的程序是:
void ode( const state_type &z , state_type &dzdt , double t ) {
dzdt[0] = z[1];
dzdt[1] = -1 * z[0] * w * w;
}
void write_ode( const state_type &z , const double t ) {
cout << t << '\t' << z[0] << '\t' << z[1] << endl;
}
int main { ...
integrate( ode , z , t , 1000 , 0.1 , write_ode );
}
但集成函数只返回 z0 和 z0' 的值。我需要找到 z(t) 的值。
【问题讨论】:
-
这个问题对于 Stack Overflow 来说有点过于抽象和概念化。 SO 更多的是用于获得特定编程问题的答案,而不是用于一般算法建议(当然也不是为了让人们为您编写代码)。一旦你有了一个算法并且你第一次尝试编写代码来解决这个问题,这个网站可以帮助你解决具体问题。
-
z(0) 和 z'(0) 是初始值,需要您自己提供。
-
为什么问题已关闭?这个问题的措辞不是很好,但我认为这个问题不需要结束。这里有几个类似于这个问题的问题,但它们没有关闭。请重新考虑打开它。