Как построить бифуркационный график, который легко модифицировать и просто сделать в Mathematica? - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть много бифуркационных участков, поэтому я хочу сделать что-то, что можно легко изменить.Прилагаемый код является первоначальной попыткой.

p1 = Plot[{Sqrt[a], -Sqrt[a]}, {a, -3, 6}];
horiz = Graphics@
  Line[ {{-3, 2}, {6, 2}} ];(*horizontal line at y=2 *)
horiz2 = Graphics@
  Line[ {{-3, -2}, {6, -2}} ];(*horizontal line at y=2 *)
vertm = Graphics@
  Line[ {{-1, -2}, {-1, 2}} ];(*vertical line at a=-1 *)
vert0 = Graphics@
  Line[ {{  0, -2}, {0, 2}} ];(*vertical line at a=0 *)
vert1 = Graphics@
  Line[ {{  1, -2}, {1, 2}} ];(*vertical line at a=1 *)
vert2 = Graphics@
  Line[ {{  2, -2}, {2, 2}} ];(*vertical line at a=21 *)
vert3 = Graphics@
  Line[ {{  3, -2}, {3, 2}} ];(*vertical line at a=3 *)
vert4 = Graphics@
  Line[ {{  4, -2}, {4, 2}} ];(*vertical line at a=4 *)
vert5 = Graphics@
  Line[ {{  5, -2}, {5, 2}} ];(*vertical line at a=5 *)
Show[p1, horiz, horiz2, vertm, vert0, vert1, vert2, vert3, vert4, \
vert5] 

Я хочу, чтобы вся парабола была красной, а не синей и золотой, а жирным, чтобы она выделялась.Было бы неплохо пометить каждую из вертикальных линий ниже, таких как = 1.Вы можете помочь?Спасибо.

С уважением, ММ

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

Основываясь на ваших комментариях, я думаю, что это больше похоже на то, что вы пытаетесь сделать.

verticalLines[xmin_, xmax_, step_] := 
 Table[Graphics@{Line[{{x, -2}, {x, 2}}], 
    Text["a = " <> ToString[x], {x, 2.2}], PointSize[Large], 
    Point[{x, -2}], Point[{x, 2}]}, {x, xmin, xmax, step}]

p1 = Plot[{Sqrt[a], -Sqrt[a]}, {a, -3, 6}, 
   PlotStyle -> {{Red, Thickness[0.01]}, {Red, Thickness[0.01]}}];

Show[p1, verticalLines[-1, 5, 1]]

enter image description here

0 голосов
/ 03 октября 2018
p1 = Plot[{0, -a}, {a, -4, 4}, PlotRange -> {-4, 4}, 
   AxesLabel -> {"a", "y=f_a(y)=dy/dt"}, 
   PlotStyle -> {   {Red, Thickness[0.007]}, {Red, 
      Thickness[0.005]}  }];
vertm3 = Graphics@{Line[{ {-3, -3.5}, {-3, 3.0} }], 
    Text["a = -3", {-3, 3.5}]};
vertm2 = Graphics@{Line[{ {-2, -3.5}, {-2, 3.0} }], 
    Text["a = -2", {-2, 3.5}]};
vertm =  Graphics@{Line[{ {-1, -3.5}, {-1, 3.0} }], 
    Text["a = -1", {-1, 3.5}]};
vert0 =   
  Graphics@{Line[{ {  0, -3.5}, {  0, 3.0} }], 
    Text[  "a = 0", {0, 3.5}]};
vert1 =  Graphics@{Line[{ {   1, -3.5}, {  1, 3.0} }], 
    Text[  "a = 1", {1, 3.5}]};
vert2 =  Graphics@{Line[{ {   2, -3.5}, {  2, 3.0} }], 
    Text[  "a = 2", {2, 3.5}]};
vert3 =  Graphics@{Line [{ {  3, -3.5}, {  3, 3.0} }], 
    Text[  "a = 3", {3, 3.5}]};   
Show[p1, vertm3, vertm2, vertm, vert0, vert1, vert2, vert3, 
 Epilog -> {PointSize -> Large,
         Point[{{-3, 0}, {-3, 3}, {-2, 0}, {-2, 2}, {-1, 0}, {-1, 
      1}, {0, 0}, {1, 0}, {1, -1}, {2, 0}, {2, -2}, {3, 
      0}, {3, -3}}] }]   
0 голосов
/ 28 сентября 2018

Для жирной красной параболы:

p1 = Plot[{Sqrt[a], -Sqrt[a]}, {a, -3, 6}, 
   PlotStyle -> {{Red, Thickness[0.01]}, {Red, Thickness[0.01]}}];

Для обозначения вертикальных линий:

vert1 = Graphics@{Line[{{1, -2}, {1, 2}}], Text["a = 1", {1, 2}]};
vert2 = Graphics@{Line[{{2, -2}, {2, 2}}], Text["a = 2", {2, 2}]};

Вы можете использовать Table для упрощения создания вертикальных линий.

Show[p1, vert1, vert2]

enter image description here

...