PythonOdeint:覆盖正在运行的解算器中的变量

PythonOdeint:覆盖正在运行的解算器中的变量,python,math,scipy,differential-equations,Python,Math,Scipy,Differential Equations,我承认,这个问题听起来很奇怪。 我创建了一个由11个常微分方程组成的系统,其中第一个方程类似于一个指数衰减的系统外信号 dx1/dt = -v1*x1 在实际系统中,该信号源于某种故障。最佳情况是x1=0=const,因此,我感兴趣的是这会对我的系统造成什么影响,所以我需要在某些点将x1=0转换为x=1dx1/dt=-v1*x1之后将x1重置为接近0(我不认为任何低于0.01的x1会影响整个系统) 例如:假设信号出现在t=(5,7,13,17)。因此,v1=0.5时,x1将为 x1 = (0,

我承认,这个问题听起来很奇怪。 我创建了一个由11个常微分方程组成的系统,其中第一个方程类似于一个指数衰减的系统外信号

dx1/dt = -v1*x1
在实际系统中,该信号源于某种故障。最佳情况是
x1=0=const
,因此,我感兴趣的是这会对我的系统造成什么影响,所以我需要在某些点将
x1=0
转换为
x=1
dx1/dt=-v1*x1
之后将x1重置为接近0(我不认为任何低于0.01的x1会影响整个系统)

例如:假设信号出现在
t=(5,7,13,17)
。因此,v1=0.5时,x1将为

x1 = (0,0,0,0,0,1,0.5,1,0.5,0.25,0.125,0.0625,0.03125, 0.015626,~0,~0,~0,1)
我不确定如何对这种行为建模我的第一个猜测是,如果解算器击中我的树顶,只覆盖x1值,但显然这并不像听起来那么简单


有人有什么想法吗?

我不清楚你到底在问什么;e、 g.“信号出现”是什么意思?您使用的是哪种积分器(odeint?)?了解常微分方程组也会很有帮助。这不是求解器或其他方程的问题。我需要知道如何插入这种奇怪的行为,大多数情况下是
x(t)=0
,但在某些情况下
t=5
,例如
x(t)
跳到
x(t)=1
,如果
dx1/dt=-v1*x1
中的
v1=0
,我会保持这种状态。我的初始值是
x(0)=0
,我需要覆盖一些
t
x(t)
值。像一个用于逐步函数的部分积分可能会产生与预期相同的结果,但这似乎是一个很大的困难,我希望这是可以避免的。你可以看看哪个能够处理事件。要获得更多帮助,您需要了解您的方程式。。。