Как мне построить поле наклона с помощью Mathematica? - PullRequest
9 голосов
/ 18 января 2012

Я пытаюсь построить поля наклона некоторых дифференциальных уравнений, используя mathematica, но не могу понять. Скажи, у меня есть уравнение

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

Как мне построить поле наклона?

Я нашел пример, но мне сложно понять http://demonstrations.wolfram.com/SlopeFields/

Ответы [ 2 ]

17 голосов
/ 18 января 2012

Необходимая вам команда (начиная с версии 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]}}

Мы можем построить поле наклона (см. вики-книги: ODE: График ) с использованием

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

y

Это можно построить с решениями 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]]

y again

Возможно, более интересный пример - гауссовский

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

Sin[x y]

0 голосов
/ 18 января 2012

Из демонстрации, которую вы связали, может показаться, что она принимает функцию f (x, y), но у вас есть набор дифференциалов. Однако, зная, что f(x,y)=y(x)', вы можете просто использовать f(x,y)=C*E^x, где x=t. Мои дифференциалы могут быть немного ржавыми, но я уверен, что это правильно.

...