【问题标题】:Sketching solution curves for differential equations绘制微分方程的解曲线
【发布时间】:2011-07-23 05:56:44
【问题描述】:

我有一些微分方程,我想为各种起始值绘制解 N_0

以下是方程式:

dN\dt= bN^2 - aN

dN\dt = bN^2 (1 - N\K) - aN

我该怎么做?

我并不真正关心使用的语言。在专用数学方面,我的计算机上有数学和 matlab。我可以使用枫树。我必须做更多这样的事情,而且我想要任何语言的例子,因为它会帮助我弄清楚我想使用和学习哪一种。

【问题讨论】:

  • {a, b, N(0)} 和 {a, b, K, N(0)} 是两个大参数空间。您应该指定一个感兴趣的区域。 (例如第一个 eq 中的 a==b)...

标签: math matlab wolfram-mathematica maple


【解决方案1】:

我将假设第一个问题无法解析求解,以展示如何在数学中使用一般 ODE。

定义

p1[n0_, a_, b_, uplim_: 10] :=(n /. First@NDSolve[
      {n'[t] == b*n[t]^2 - a*n[t], n[0] == n0},n, {t, 0, uplim}]

返回 ODE 的解,即 a = p1[.1, 2., 3.] 然后例如a[.3] 告诉你n(.3)。然后可以做类似的事情

Show[Table[ans = p1[n0, 1, 1];
 Plot[ans[t], {t, 0, 10}, PlotRange \[Rule] Full],
 {n0, 0, 1, .05}], PlotRange \[Rule] {{0, 5}, {0, 1}}]

它绘制了一些具有不同初始值的解决方案:

或者,为了深入了解解决方案,可以交互操作abn0 的值:

Manipulate[
 ans = p1[n0, a, b];
 Plot[ans[t], {t, 0, 10},PlotRange -> {0, 1}],
 {{n0, .1}, 0, 1},
 {{a, 1}, 0, 2},
 {{b, 1}, 0, 2}]

它给出了类似的东西

在控件处于活动状态时(即您移动它们并且情节发生变化;尝试实时了解我的意思;请注意,您可以设置初始条件给出不同解决方案的参数)。

当然,这可以任意变得更复杂。同样在这种特殊情况下,这个 ODE 很容易进行分析积分,但是这种数值方法可以应用于通用 ODE(以及许多 PDE)。

【讨论】:

  • 由于NDSolve 接受初始条件列表,您还可以执行Plot[(Evaluate[p1[Range[0, 1, .05], 1, 1][t]]), {t, 0, 5}] 之类的操作来在同一张图中绘制解决方案列表。
【解决方案2】:

除了几个很好的答案之外,如果您只是想快速了解 ODE 针对许多起始值的解决方案,作为指导,您始终可以使用一行 StreamPlot。假设a==1b==1dy/dx == x^2 - x

StreamPlot[{1, x^2 - x}, {x, -3, 3}, {y, -3, 3}]

StreamStyle -> "Line" 只会给你线条,没有箭头。

【讨论】:

    【解决方案3】:

    Mathematica 中你使用 NDSolve(除非它可以解析求解,在这种情况下你使用 DSolve。所以对于你的第一个方程,我尝试了:

    b = 1.1; a = 2;
    s = NDSolve[{n'[t] == b n[t]^2 - a n[t], n[0] == 1}, n, {t, 0, 10}];
    Plot[Evaluate[n[t] /. s], {t, 1, 10}, PlotRange -> All]
    

    我不知道用什么来表示 a、b 或 N0,但我得到了这个结果:

    【讨论】:

      【解决方案4】:

      如果您乐于用数值求解方程,MATLAB 有一组 ODE 求解器可能有用。查看ode45 函数here 的文档。

      一般的方法是定义一个描述微分方程右侧的“ode 函数”。然后将此函数以及初始条件和积分范围传递给ode 求解器。

      这种方法的一个吸引人的特点是它以直接的方式扩展到耦合 ODE 的复杂系统。

      希望这会有所帮助。

      【讨论】:

      • 确实,我的印象是使用向量表示法在 Matlab 中处理 多变量 ODE(即 ODE 系统)比 Mathematica 更容易。对于一个或几个变量,我更喜欢 Mathematica。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多