问题标签 [desolve]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - ODE,多根和事件,R
我喜欢解决一个涉及多个阈值的耦合微分方程系统。浏览 R 信息,这使我将 ODE 与根函数和事件函数结合使用。
通过各种示例,即温度模型,第 14 页http://cran.r-project.org/web/packages/diffEq/vignettes/ODEinR.pdf - 粘贴在下面的代码 - 我可以让我的模型行动在一个阈值上,即找到一个变量的根/达到阈值会触发一个事件。
该示例还表明,不同的根可以触发相同的事件函数(y[1] – 18 和 y[1]-20 都触发 eventfunc)。但是,我的问题是,是否也可以让不同的根触发不同的事件函数?换句话说,根据找到哪个root,触发不同的eventfunc?或者,在同一个 eventfunct 中,它是否可以根据找到的根执行不同的操作。
为了简单起见,我首先想看看这是否可以使用相同的示例,例如通过命名根和使用 if 语句?目前这行不通。这个事情谁有经验?如果您查看 attributes(out),ODE 似乎确实记录了遇到 $indroot 的根(但这是在评估之后。)提前谢谢您。
r - 导数数 =/= R 中的初始参数数误差
我正在尝试做一个 ODE 求解器,但我在函数中的方程与我在lotka()
函数中设置的初始参数之间的向量存在问题TLfit()
。我不明白为什么当我列出 3 个参数时它说我有一个长度为 1 的向量。谁能提供一些见解?
我得到错误:
r - deSolve & 循环求解 R 中的二阶微分方程?
你好亲爱的社区,
我试图解决一个二阶微分方程已经有一段时间了。方程式如下:
∂P/∂t = D * ∂^2P/∂x^2
我应该运行它几个 P;数据框的 P1= df$col1, P2=df$col2, P3=df$col3 和 D 将是 df$col4 并且 x 将是 df$col5
我正在尝试为此使用“deSolve”,但目前我没有太大的成功。我将不胜感激您对如何用 R 求解二阶微分方程的意见。
r - 在 ODE 系统中添加 if then 语句来条件初始值;解解
我正在尝试添加一个 if then 语句来调节我的一个状态变量的初始值,并且正在使用 deSolve。本质上,我想在模拟开始后引入第 3 个 ODE(在本例中为第 3 个物种)。
这是没有条件的代码的样子:
这是我到目前为止所拥有的,在尝试添加 if then 语句之后,说在 time = 50 之前,第三个状态变量的初始值为 0,并且在 time = 50 或以上时,初始值第三个状态变量将为 1。
有什么建议么?
如果我应该添加任何其他信息,请告诉我,非常感谢您的阅读!:)
ode - 使用 deSolve 时,如何将初始条件强制到离散化 PDE 上?
我正在尝试用一个 ODE 和一个二阶 PDE 求解一个微分方程组。我已经离散化了 PDE,以便我可以使用 deSolve ode.1D 来解决它,但现在我无法弄清楚如何将我的边界条件包含在空间 dE/dx 导数中。在 x = 0 和 x = 1 处,dE/dx 的边界值对于获得正确解很重要。如何将它们包含在模型中?
我的代码:
r - 如何以固定步骤获得输出?
我有一个微分方程系统,有点复杂,但我能得出的最接近的类比是催化化学反应,其中催化剂随着时间的推移而分解,例如
所以我们有dAdt(A,B) = -k1*A*B
并且dBbt(a,B) = -k2*B
我可以用rk4
一组固定的时间点对此进行建模......但我想运行它直到说 B < 1e-8
我认为这可以通过使用通用ode
包中的根函数来完成,但这也只需要一个times
参数,它迫使我提前选择我想要“A 和 B 的浓度”的时间。
注意:我的真实方程更复杂,实际上计算起来也很复杂——它们与化学无关,除了值都是正数,一旦一个接近零且没有任何可能性,系统的状态就会停止变化.
我有一个手动的 RK4 实现,可以满足我的要求,但是我编写的代码是我需要测试的代码,我知道这个deSolve
包已经过很好的测试,所以我只是在寻找一种方法来获得固定步长的输出,直到“根”函数返回 true
更新
这是一个解决我的问题的例子,我知道我想要答案的时间:
我想要的是“将代码的最后两行更改为此”
__name_of_function__
希望包中的某些功能deSolve
或相关的帮助程序包在哪里
r - deSolve ODE 积分错误,我是否使用了错误的函数?
我正在尝试解决一组与生物过程相关的方程。一个方程(约 5)用于形式的药代动力学(PK)曲线C = Co(exp(k1*t)-exp(k2*t)
。需要同时求解该方程的导数以及一些酶结合方程和不符合预期的初始结果。故障排除后,如果 k 为负,则使用 desolve ode 函数意识到 PK 导数本身不会进行数值积分。我尝试了 ode 函数中的所有方法(lsode、lsoda 等),但均未成功。我试过调整rtol,它没有解决。
是否有我应该研究的 deSolve ode 函数的替代方法?或者另一种解决这个问题的方法?
下面是带有简化方程的代码来演示该问题。当 k 为负时,积分解与解析结果不匹配。当 k 为正时,结果与预期一致。
第一张图像,k=0.2 的结果:当 k 为正时,分析和综合结果匹配
第二张图像,k=-0.2 的结果:当 k 为负时,积分结果与解析结果不匹配
有人指出,初始条件很容易解决上面的例子,这很有帮助。这是我无法准确积分的方程式,我尝试了几种不同的初始条件,但没有真正成功。
events - R包deSolve:使用函数和数据框的组合触发不同的事件
我正在使用 deSolve 包中的 ODE 函数。我知道我可以使用“事件”参数在给定时间使用数据框或函数触发事件(https://tpetzoldt.github.io/deSolve-forcing/deSolve-forcing.html#events)。是否可以使用数据框和函数的组合在给定时间触发不同的事件?