odeint中的循环函数
Recurring delta function in odeint
我有以下odeint程序:
#include <boost/array.hpp>
#include <boost/numeric/odeint.hpp>
using namespace std;
typedef boost::array< double , 1 > state_type;
void eqsystem(const state_type &x, state_type &dxdt, double t) {
dxdt[0] = 3;
}
void write_system( const state_type &x , const double t ) {
cout << t << 't' << x[0] << endl;
}
int main(){
double t0=0, t1=100;
double tstep0=0.01;
state_type x = {{ 0 }};
cout<<"ttValue"<<endl;
boost::numeric::odeint::integrate( eqsystem , x , t0 , t1 , tstep0 , write_system );
}
每当t
是10的倍数时,我想设置x[0]=0.1
。
也就是说,我想要一个循环函数
或者,如果我可以让函数出现在有限个数的时间点上,我将能够近似递归。
不幸的是,我无法在odeint中找到delta函数的文档。有人知道如何做到这一点吗?
这在odeint中是不可能的,至少一般不可能。您有两个选择:
首先用非常尖锐的高斯函数近似δ峰。
第二,积分到峰值的时间点。应用增量峰值,即在现有解决方案中添加一个步骤,并从这一点开始集成到下一个峰值,依此类推。
对于具有不连续的ODE也有一些"奇异的"方法,但它们通常处理的是ODE本身具有不连续而不是外部驱动的情况。
相关文章:
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 循环中的随机函数
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 未在函数C++中执行的循环
- 无穷大而循环时具有递归函数
- 当 A 在 for 循环中调用函数 B 时,如何计算函数 A 的空间复杂度?
- 用于在 C++ 中使用 while 循环查找下一个素数的简单函数
- 这个返回元素位置的基于循环的函数有什么问题?
- 接受线程 C++ 套接字中的函数循环
- 我需要做一个空函数循环回来,而不会让它崩溃或跳过
- 无限构造函数循环
- C 查找无SQRT函数循环故障的平方根
- 如何让我的checkLength函数循环,直到用户输入超过5个字符的密码
- 停止一个函数循环,然后恢复它们
- 使用链表函数循环
- C++模板元编程成员函数循环展开
- C++函数循环和if语句不起作用
- 在c++中使用递归函数循环遍历deque
- 互惠友元成员函数=循环包含声明
- c++验证函数循环在第一次迭代后返回相同的结果