12.4 グラフの重ね描き - Dept. Math., Hiroshima...
Transcript of 12.4 グラフの重ね描き - Dept. Math., Hiroshima...
12.4 グラフの重ね描き
graph1 = Plot@Sin@xD, 8x, -2 Pi, 2 Pi<, PlotStyle ® [email protected], RGBColor@1, 0, 0D<D
-6 -4 -2 2 4 6
-1.0
-0.5
0.5
1.0
graph2 = Plot@Cos@xD, 8x, -2 Pi, 2 Pi<, PlotStyle ® [email protected], RGBColor@0, 1, 0D<D
-6 -4 -2 2 4 6
-1.0
-0.5
0.5
1.0
Show@graph1, graph2D
-6 -4 -2 2 4 6
-1.0
-0.5
0.5
1.0
Showは既に描画したグラフを使って、重ね描きをするとき便利である。
Lotka-Volterra 方程式x'(t) = 2 x(t) - x(t) y(t)y'(t) = - 3 y(t) + 2 x(t) y(t)
のいくつかの初期値に対する x-y 平面上における解曲線を重ね描きしてみよう。
(x(0), y(0)) = (1.5, 1.0), (1.5, 1.25), (1.5, 1.5), (1.5, 1.75) で試してみよ。
Showは既に描画したグラフを使って、重ね描きをするとき便利である。
Lotka-Volterra 方程式x'(t) = 2 x(t) - x(t) y(t)y'(t) = - 3 y(t) + 2 x(t) y(t)
のいくつかの初期値に対する x-y 平面上における解曲線を重ね描きしてみよう。
(x(0), y(0)) = (1.5, 1.0), (1.5, 1.25), (1.5, 1.5), (1.5, 1.75) で試してみよ。
sol1 = NDSolve@8x'@tD � 2 x@tD - x@tD y@tD,y'@tD � -3 y@tD + 2 x@tD y@tD,x@0D � 1.5,y@0D � 1.0
<, 8x@tD, y@tD<, 8t, 0, 10<D88x@tD ® InterpolatingFunction@880., 10.<<, <>D@tD,y@tD ® InterpolatingFunction@880., 10.<<, <>D@tD<<
sol2 = NDSolve@8x'@tD � 2 x@tD - x@tD y@tD,y'@tD � -3 y@tD + 2 x@tD y@tD,x@0D � 1.5,y@0D � 1.25
<, 8x@tD, y@tD<, 8t, 0, 10<D88x@tD ® InterpolatingFunction@880., 10.<<, <>D@tD,y@tD ® InterpolatingFunction@880., 10.<<, <>D@tD<<
sol3 = NDSolve@8x'@tD � 2 x@tD - x@tD y@tD,y'@tD � -3 y@tD + 2 x@tD y@tD,x@0D � 1.5,y@0D � 1.5
<, 8x@tD, y@tD<, 8t, 0, 10<D88x@tD ® InterpolatingFunction@880., 10.<<, <>D@tD,y@tD ® InterpolatingFunction@880., 10.<<, <>D@tD<<
sol4 = NDSolve@8x'@tD � 2 x@tD - x@tD y@tD,y'@tD � -3 y@tD + 2 x@tD y@tD,x@0D � 1.5,y@0D � 1.75
<, 8x@tD, y@tD<, 8t, 0, 10<D88x@tD ® InterpolatingFunction@880., 10.<<, <>D@tD,y@tD ® InterpolatingFunction@880., 10.<<, <>D@tD<<
g1 = ParametricPlot@Evaluate@8x@tD, y@tD< �. sol1D, 8t, 0, 10<,PlotStyle ® [email protected]<, AspectRatio ® 1, PlotRange ® 880, 3<, 80, 4<<D;
g2 = ParametricPlot@Evaluate@8x@tD, y@tD< �. sol2D, 8t, 0, 10<,PlotStyle ® [email protected]<, AspectRatio ® 1, PlotRange ® 880, 3<, 80, 4<<D;
g3 = ParametricPlot@Evaluate@8x@tD, y@tD< �. sol3D, 8t, 0, 10<,PlotStyle ® [email protected]<, AspectRatio ® 1, PlotRange ® 880, 3<, 80, 4<<D;
g4 = ParametricPlot@Evaluate@8x@tD, y@tD< �. sol4D, 8t, 0, 10<,PlotStyle ® [email protected]<, AspectRatio ® 1, PlotRange ® 880, 3<, 80, 4<<D;
2 Lec7.22.nb
Show@g1, g2, g3, g4D
0.0 0.5 1.0 1.5 2.0 2.5 3.00
1
2
3
4
このやり方だと、解曲線をたくさん重ね描きするにはつらい。
このような場合、以下のようにするとよい。
data = 8<;Do@sol = NDSolve@
8x'@tD � 2 x@tD - x@tD y@tD,y'@tD � -3 y@tD + 2 x@tD y@tD,x@0D � 1.5,y@0D � 0.1 n
<,8x@tD, y@tD<,8t, 0, 10<
D;data = Append@data, ParametricPlot@Evaluate@8x@tD, y@tD< �. solD, 8t, 0, 10<,
PlotStyle ® [email protected]<, AspectRatio ® 1, PlotRange ® 880, 4<, 80, 5<<DD,8n, 1, 20<
D
Lec7.22.nb 3
Show@dataD
0 1 2 3 40
1
2
3
4
5
?? Do
Do@expr, 8imax<D 式exprをimax 回評価する.
Do@expr, 8i, imax<D 変数 iの値が1から imax まで刻み幅1で式expr を順に評価する.
Do@expr, 8i, imin, imax<D 初期値 i = imin から始める.
Do@expr, 8i, imin, imax, di<D di をステップの増分として使用する.
Do@expr, 8i, 8i1, i2, ¼<<D 連続する値 i1, i2, ¼を使用する.
DoAexpr, 8i, imin, imax<, 9 j, jmin, jmax=, ¼E それぞれのiにおいて jを変化させて,式expr を評価する.�
Attributes@DoD = 8HoldAll, Protected<
12.5 リミットサイクルを持つ方程式 - van der Pol 方程式
van der Pol(ファン デル ポール) 振動子は非線形の減衰を受けた非保存系の振動子である。
支配方程式はvan der Pol 方程式と呼ばれる次の2階微分方程式である。
x'' - Μ I1 - x2M x ' + x = 0 (Μ > 0)
x' = y と置くことによって2変数の連立一階微分方程式系にすることができる。やってみよ。
x' = y
y' = Μ (1 - x2M - x (Μ > 0)
Μ = 0.25;
4 Lec7.22.nb
vdp = NDSolveA9x'@tD � y@tD,y'@tD � Μ I1 - x@tD2M y@tD - x@tD,x@0D � 2,y@0D � 3
=,8x@tD, y@tD<,8t, 0, 100<
E88x@tD ® InterpolatingFunction@880., 100.<<, <>D@tD,y@tD ® InterpolatingFunction@880., 100.<<, <>D@tD<<
Plot@Evaluate@8x@tD, y@tD< �. vdpD, 8t, 0, 100<,PlotStyle ® [email protected]<, PlotRange ® 8-3, 3<D
20 40 60 80 100
-3
-2
-1
1
2
3
ParametricPlot@Evaluate@8x@tD, y@tD< �. vdpD, 8t, 0, 100<,PlotStyle ® [email protected]<, PlotRange ® 88-3, 3<, 8-3, 3<<D
-3 -2 -1 1 2 3
-3
-2
-1
1
2
3
初期値を (n / 10, 0) (n = 1, 2, ..., 40) と動かしたときの解を重ね描きしてみよ。
Lec7.22.nb 5
data = 8<;DoAvdp = NDSolveA
9x'@tD � y@tD,y'@tD � Μ I1 - x@tD2M y@tD - x@tD,x@0D � 0.1 n,y@0D � 0
=,8x@tD, y@tD<,8t, 0, 50<
E;data = Append@data, ParametricPlot@Evaluate@8x@tD, y@tD< �. vdpD,
8t, 0, 50<, PlotStyle ® [email protected]<, PlotRange ® 88-4, 4<, 8-4, 4<<DD,8n, 1, 40<E;
Show@dataD
-4 -2 2 4
-4
-2
2
4
このように初期値によらず、t が大きくなるとき一つの周期軌道に近づいてくるような場合、
この周期軌道をリミットサイクルという。
乱数を用いて初期値をでたらめにとり、結果を重ね描きする場合
6 Lec7.22.nb
data = 8<;DoAvdp = NDSolveA
9x'@tD � y@tD,y'@tD � Μ I1 - x@tD2M y@tD - x@tD,x@0D � RandomReal@8-4, 4<D,y@0D � RandomReal@8-4, 4<D
=,8x@tD, y@tD<,8t, 0, 50<
E;data = Append@data, ParametricPlot@Evaluate@8x@tD, y@tD< �. vdpD,
8t, 0, 50<, PlotStyle ® [email protected]<, PlotRange ® 88-4, 4<, 8-4, 4<<DD,8100<E;
Show@dataD
-4 -2 2 4
-4
-2
2
4
12.6 カオスが生じる方程式 - Rossler方程式
Rossler (レスラー)方程式
x' = - y - zy' = x + ayz' = b + xz - cz
a = 0.2, b = 0.2, c = 4.5
Lec7.22.nb 7
a = 0.2;b = 0.2;c = 4.5;sol = NDSolve@
8x'@tD � -y@tD - z@tD,y'@tD � x@tD + a y@tD,z'@tD � b + x@tD z@tD - c z@tD,x@0D � 1.0,y@0D � 1.0,z@0D � 1.0
<,8x@tD, y@tD, z@tD<,8t, 0, 150<
D;ParametricPlot3D@Evaluate@8x@tD, y@tD, z@tD< �. solD,
8t, 0, 150<, PlotStyle ® [email protected]<, PlotRange ® AllD
-5 0 5
-5
0
5
0
5
10
8 Lec7.22.nb