NDSolve 函数中的常数值是否可以有两个取决于 NDSolve 函数输出的值?

发布于 2024-11-04 23:47:41 字数 480 浏览 0 评论 0原文

我有一个 ODE 系统。其中一个 ODE 有一个常量参数,我想根据 ODE 解决方案之一在两个不同值之间进行更改。

例如,假设我有以下方程:

{
  A'[x] == -q A[x]B[x],
  B'[x] ==  q A[x]B[x] - g B[x],
  C'[x] ==  g B[x]
}

现在,当 qg 为常量值时,我可以使用 NDSolve 函数轻松求解它们。我想做的是改变 q 的值,以便当 B[x] 低于某一阈值时它有一个值,但当 B[x] 低于某一阈值时它的值会发生变化>B[x] 上升到该阈值以上。

我尝试过在 NDSolve 之外使用 If 语句和 Piecewise 函数,但我还没有设法让它工作。

I have a system of ODE's. One of the ODE's has a constant parameter which I want to alter between two different values depending on one of the ODE solutions.

So for example let's say that I have the following equations:

{
  A'[x] == -q A[x]B[x],
  B'[x] ==  q A[x]B[x] - g B[x],
  C'[x] ==  g B[x]
}

Now I can solve them easily using the NDSolve function when q and g are constant values. What I want to do though is vary the value of q so that it has one value when B[x] is below a certain threshold but then changes in value when B[x] rises above this threshold value.

I've tried using If statements and Piecewise functions outside of the NDSolve but I haven't managed to get it working.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

Hello爱情风 2024-11-11 23:47:41

这可能会做你想要的事情。我省略了第三个方程,它看起来是多余的。

Clear[f, g, s, t, x];
s[a_, b_] = Piecewise[{{a*b - b, b < 1}, {2 a*b - b, b >= 1}}];
t[a_, b_] = Piecewise[{{-a*b, b < 1}, {-2 a*b, b >= 1}}]; 
{f[x_], g[x_]} = {f[x], g[x]} /. 
  First[NDSolve[{
    f'[x] == t[f[x], g[x]],
    g'[x] == s[f[x], g[x]],
    f[0] == 10, g[0] == 1},
  {f[x], g[x]}, {x, 0, 2}]]

This might do something like what you want. I left out the third equation, which seems superfluous.

Clear[f, g, s, t, x];
s[a_, b_] = Piecewise[{{a*b - b, b < 1}, {2 a*b - b, b >= 1}}];
t[a_, b_] = Piecewise[{{-a*b, b < 1}, {-2 a*b, b >= 1}}]; 
{f[x_], g[x_]} = {f[x], g[x]} /. 
  First[NDSolve[{
    f'[x] == t[f[x], g[x]],
    g'[x] == s[f[x], g[x]],
    f[0] == 10, g[0] == 1},
  {f[x], g[x]}, {x, 0, 2}]]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文