【问题标题】:How do I plot a slope field using mathematica?如何使用mathematica 绘制斜率场?
【发布时间】:2012-01-18 05:44:06
【问题描述】:

我正在尝试使用mathematica 绘制一些微分方程的斜率场,但无法弄清楚。假设我有方程式

    y' = y(t) 
    y(t) = C * E^t

如何绘制斜率场?

我找到了一个例子,但我很难理解 http://demonstrations.wolfram.com/SlopeFields/

【问题讨论】:

    标签: wolfram-mathematica plot differential-equations


    【解决方案1】:

    您需要的命令(从版本 7 开始)是 VectorPlot。文档中有很好的示例。

    我认为您感兴趣的情况是微分方程

    y'[x] == f[x, y[x]]
    

    如果您在问题中给出,

    f[x_, y_] := y
    

    与指数相结合

    In[]:= sol = DSolve[y'[x] == f[x, y[x]], y, x]
    Out[]= {{y -> Function[{x}, E^x c]}}
    

    我们可以绘制斜率场 (见wikibooks:ODE:Graphing)使用

    VectorPlot[{1, f[x, y]}, {x, -2, 2}, {y, -2, 2}]
    

    这可以用 DE 的解决方案来绘制,例如

    Show[VectorPlot[{1, f[x, y]}, {x, -2, 2}, {y, -2, 8}, 
       VectorStyle -> Arrowheads[0.03]],
     Plot[Evaluate[Table[y[x] /. sol, {c, -10, 10, 1}]], {x, -2, 2}, 
       PlotRange -> All]]
    

    也许一个更有趣的例子是高斯

    In[]:= f[x_, y_] := -x y
    
    In[]:= sol = DSolve[y'[x] == f[x, y[x]], y, x] /. C[1] -> c
    Out[]= {{y -> Function[{x}, E^(-(x^2/2)) c]}}
    
    Show[VectorPlot[{1, f[x, y]}, {x, -2, 2}, {y, -2, 8}, 
      VectorStyle -> Arrowheads[0.026]],
     Plot[Evaluate[Table[y[x] /. sol, {c, -10, 10, 1}]], {x, -2, 2}, 
      PlotRange -> All]]
    


    最后还有一个梯度场的相关概念,这里看一个函数的梯度(向量导数):

    In[]:= f[x_, y_] := Sin[x y]
           D[f[x, y], {{x, y}}]
           VectorPlot[%, {x, -2, 2}, {y, -2, 2}]
    
    Out[]= {y Cos[x y], x Cos[x y]}
    

    【讨论】:

      【解决方案2】:

      从您链接的演示中可以看出它需要一个函数 f(x,y) 但您有一组微分。但是,知道 f(x,y)=y(x)',您可以使用 f(x,y)=C*E^x where x=t。我的差速器可能有点生锈,但我很确定这是对的。

      【讨论】:

      • 有人买了 1 条用于坡地的衬垫吗?
      • 1 班轮?如果你需要知道如何把它放进去,你可以查看physicsforums.com/showthread.php?t=152157 它不止一行,因为 Mathematica 显然需要导入一个库,然后调用绘图函数本身就更多了。
      猜你喜欢
      • 2019-04-09
      • 1970-01-01
      • 2020-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多