- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 ODE 系统,我想在求解器到达精确时间点时更改变量的值。我正在尝试做的与此类似 example in Julia
我尝试做的是使用 else 和 if 来检查时间 t 是否已到。然而,这是行不通的,因为包含时间的数组并没有经过那个确切的点。还尝试使用 t_eval 但没有成功。
使用 julia 示例中显示的相同问题,我们有:
from scipy.integrate import solve_ivp
import numpy as np
import matplotlib.pyplot as plt
def f(t, u):
if t == 4 and u[0] < 4:
u[0] += 10
du = np.empty(1)
du[0] = -u[0]
return du
u0=[10.0]
V = 1
t = [0,10]
u0 = [10.0]
sol = solve_ivp(f,t,u0)
plt.plot(sol.t, sol.y[0])
有没有办法复制 julia 回调函数?
最佳答案
与其尝试使用回调来精确复制该代码,分两个阶段求解方程似乎更简单:
import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
def f(t, u):
du = -u
return du
dose = 10.0
u0 = dose
V = 4
t0 = 0
t1 = 4
t2 = 10
t = np.linspace(t0, t1, 100)
sol1 = solve_ivp(f, [t0, t1], [u0], dense_output=True, t_eval=t)
u0 = sol1.y[0, -1]
if u0 / V < 4:
u0 += dose
t = np.linspace(t1, t2, 150)
sol2 = solve_ivp(f, [t1, t2], [u0], dense_output=True, t_eval=t)
plt.plot(sol1.t, sol1.y[0], 'b')
plt.plot([sol1.t[-1], sol2.t[0]], [sol1.y[0, -1], sol2.y[0, 0]], 'b--')
plt.plot(sol2.t, sol2.y[0], 'b')
plt.grid()
plt.xlabel('t')
plt.show()
关于python - 如何使用 solve_ivp 通过精确点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57119246/
我正在尝试求解以下简单的线性方程组: x'(t) = A_eps(t) x(t) 其中 x 是一个 n 维向量,A_eps(t) 是一个随时间变化的矩阵。 以下是我在帖子之后所做的尝试: scipy
我很难适应 scipy 的 solve_ivp。假设我们有一个普通的二阶线性微分方程,例如 spring (y'' = -k**2*y)。条件是当 Spring 处于位置 0(时间 0)时速度为 v0
我有一个 ODE 系统,我想在求解器到达精确时间点时更改变量的值。我正在尝试做的与此类似 example in Julia 我尝试做的是使用 else 和 if 来检查时间 t 是否已到。然而,这是行
我不明白为什么会出现此错误...这是代码: from scipy.integrate import solve_ivp def exponential_decay(t, y): return -0.5
尝试使用solve_ivp的矢量化选项,奇怪的是它会抛出一个错误,即y0必须是一维的。MWE: from scipy.integrate import solve_ivp import numpy a
我正在尝试使用solve_ivp,但我不明白它如何处理参数中的初始值。 solve_ivp 上的 documentation 指出: scipy.integrate.solve_ivp(fun, t_
这是我关于堆栈溢出的第一篇文章。所以我在 SciPy 的文档中遇到了solve_ivp求解器的这个例子。正在解决的问题如下: 加农炮在撞击时向上发射并产生最终事件。事件的终端字段和方向字段通过猴子修补
我想优化微分方程组中的参数。举一个最小的例子,我有微分方程: dx1/dt=-k*x1 和 dx2/dt=k*x1。 因此,我使用 solve_ivp 对 ODE 进行积分,并使用 curve_fit
我正在尝试求解一个简单的 ODE 以可视化时间响应,这适用于使用 SciPy 中新的 solve_ivp 集成 API 的恒定输入条件。例如: def dN1_dt_simple(t, N1):
Scipy 正在从 odeint 转向 solve_ivp,它不再支持为动力学函数传递附加参数。相反,lambdas are recommended 。但是,当我对事件尝试相同的操作时,它们无法正常工
我一直在尝试使用 solve_ivp 或 solve_bvp 来解决我一直遇到的问题,但我没有取得任何进展。我认为我这里的代码可以工作,但我无法获得正确的范围。出于某种原因,我无法理解范围总是从 0
我不确定 scipy.integrate.solve_ivp 中的事件处理是否正常工作。在下面的示例中,我集成了一个导数,该导数应生成具有三个根的三次多项式,分别位于 x=-6、x=-2 和 x=2。
示例 ODE 的解析解 我通过解决以下初始值问题来测试这些方法之间的差异: y'=2*y-t 您可以通过考虑 y(t) 是齐次解 y_h(t)=c1*exp(2t) 和特定解 y_p(t)=t/2+1
Solve_ivp 是 Scipy 中的初始值问题求解器函数。简而言之 scipy.integrate.solve_ivp(fun, t_span, y0, method=’RK45’, t_eval
我正在尝试使用 solve_ivp 求解大型微分方程组。 from scipy import integrate sol = integrate.solve_ivp(func_syst
来自 https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.solve_ivp.html 与 sol = scipy
我从事航天器轨迹设计工作,我正在实现一种算法来寻找周期性轨道,该算法需要在轨迹穿过特定平面时进行检测。我正在使用 scipy.integrate 的 solve_ivp 及其 events 功能。 理
为了使用 SciPy 求解简单的 ODE,我曾经使用 odeint 函数,其形式为: scipy.integrate.odeint(func, y0, t, args=(), Dfun=None, c
目前,我确实使用 assimulos solver suite求解形式为 0 = F(t, y(t), y'(t)) 的隐式微分方程。我想使用 native scipy 安装附带的求解器,并查看了 s
我是一名优秀的程序员,十分优秀!