gpt4 book ai didi

numerical-methods - 使用 odeint 函数定义

转载 作者:行者123 更新时间:2023-12-01 10:04:30 25 4
gpt4 key购买 nike

非常菜鸟的问题,所以请耐心等待。

我正在按照此处给出的示例进行操作--> http://www.codeproject.com/Articles/268589/odeint-v2-Solving-ordinary-differential-equations

特别是,我在看这个函数:

void lorenz( state_type &x , state_type &dxdt , double t )
{
dxdt[0] = sigma * ( x[1] - x[0] );
dxdt[1] = R * x[0] - x[1] - x[0] * x[2];
dxdt[2] = x[0]*x[1] - b * x[2];
}

在我的例子中,R 具有一系列值(具有 100 个 double 值的向量)。

odeint 被称为:

integrate_const( runge_kutta4< state_type >() , lorenz , x , 0.0 , 10.0 , dt );

我想对 R 的每个值都执行此操作。我该如何完成此操作?我对 C++/OOP 的了解有限,但我愿意学习。

谢谢。

最佳答案

您可以使用“类”版本,但要对其进行修改,以便使用您感兴趣的 R 值对其进行初始化。

class lorenz_class {
double R_;
public:
lorenz_class (double r) : R_(r) {}
void operator()( state_type &x , state_type &dxdt , double t ) {
dxdt[0] = sigma * ( x[1] - x[0] );
dxdt[1] = R_ * x[0] - x[1] - x[0] * x[2];
dxdt[2] = x[0]*x[1] - b * x[2];
}
};

然后,迭代您的向量 R 并将值传递给您传递给 integrate_const 模板函数的 lorenz_class 实例。

for (unsigned i = 0; i < myR.size(); ++i) {
lorenz_class lorenz(myR[i]);
integrate_const( runge_kutta4< state_type >() , lorenz , x , 0.0 , 10.0 , dt );
}

关于numerical-methods - 使用 odeint 函数定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12060111/

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