10

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

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

如何绘制斜率场?

我找到了一个例子,但对我来说理解起来很复杂 http://demonstrations.wolfram.com/SlopeFields/

4

2 回答 2

18

您需要的命令(从版本 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]]

-xy


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

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]}

罪[xy]

于 2012-01-18T08:57:41.467 回答
0

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

于 2012-01-18T06:22:17.027 回答