Mathematica を使用していくつかの微分方程式の勾配フィールドをプロットしようとしていますが、それを理解できません。私は方程式を持っているとしましょう
y' = y(t)
y(t) = C * E^t
勾配フィールドをプロットするにはどうすればよいですか?
私は例を見つけましたが、私が理解するために複雑にする方法 http://demonstrations.wolfram.com/SlopeFields/
Mathematica を使用していくつかの微分方程式の勾配フィールドをプロットしようとしていますが、それを理解できません。私は方程式を持っているとしましょう
y' = y(t)
y(t) = C * E^t
勾配フィールドをプロットするにはどうすればよいですか?
私は例を見つけましたが、私が理解するために複雑にする方法 http://demonstrations.wolfram.com/SlopeFields/
必要なコマンド (バージョン 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]}
リンクしたデモンストレーションから、関数 f(x,y) を取ることがわかりますが、一連の微分があります。ただし、それを知っていれば、 wheref(x,y)=y(x)'
を使用できます。私のデフは少し錆びているかもしれませんが、それは正しいと確信しています。f(x,y)=C*E^x
x=t