असतत डायनेमिक सिस्टम की छवि को प्लॉट करना

Jan 02 2021

मैं फार्म की एक असतत गतिशील प्रणाली की साजिश करने की कोशिश कर रहा हूं $$\vec{x}_{k+1} = A \vec{x}_k$$ कहां है $A$ एक है $2\times 2$ रूप में मैट्रिक्स $$\begin{pmatrix}a&b\\c&d\end{pmatrix}$$ कहां है $a$, $b$ तथा $c$असली नंबर हैं। इसका प्रारंभिक मूल्य रूप में है$$\begin{pmatrix}e \\f\end{pmatrix}$$

मैं इसके समान एक प्लॉट बनाना चाहूंगा: असतत डायनामिक सिस्टम की छवि बनाना लेकिन फ़ंक्शन को प्लॉट करने के लिए एक नुकसान में हूं क्योंकि मैंने दोनों की कोशिश की है VectorPlotऔर ListPlotथोड़ी सफलता के साथ। कोई भी सलाह काफी सराही जाएगी :-)

मैं जिस सटीक समस्या पर काम कर रहा हूं वह है: $$\begin{align*} &\vec{x}_k = \begin{pmatrix}2ba-a-b&ba-a-b\\2(a+b-ab)&2(a+b)-ab\end{pmatrix}\vec{x},&\vec{x}_0 = \begin{pmatrix}2\\1/3\end{pmatrix}. \end{align*}$$ मैं विभिन्न मूल्यों द्वारा निर्मित भूखंडों को देख रहा हूं $a$ तथा $b$ जैसे कि $1$ तथा $1/2$

मैंने निम्नलिखित कोशिश की:

a = 1; b = 1/2;
A = {{2*b*a-a-b,b*a-a-b},{2(a+b-a*b),2(a+b)-ab}};
x0 = {1, 1/3};
pts = NestList[A.# &, x0, 15];
ListPlot[pts, Joined -> True, AspectRatio -> Automatic]

जवाब

10 kglr Jan 02 2021 at 07:53

मैट्रिक्स प्रविष्टियों को संशोधित करने के लिए स्लाइडर्स का उपयोग करें। प्रारंभिक बिंदुओं को संशोधित करने के लिए लोकेटर (छोटे डिस्क) पर क्लिक करें और खींचें; ALT + लोकेटर जोड़ने / हटाने के लिए क्लिक करें।

Manipulate[ListLinePlot[Transpose @ NestList[#.{{a, b}, {c, d}} &, pt, 100],
   PlotStyle -> PointSize[Medium], PlotRange -> 5 {{-1, 1}, {-1, 1}}, 
   BaseStyle -> Arrowheads[{0., .05, 0.}], AspectRatio -> Automatic, 
   PlotLegends -> Placed[LineLegend[Defer /@ pt, LegendLabel -> "{x0,y0}", 
      LegendFunction -> Panel], Right], 
   Epilog -> {AbsolutePointSize[10], 
        {ColorData[97]@#, Point@pt[[#]]} & /@ Range[Length[pt]]}, 
   ImageSize -> 400, Frame -> True] /. Line -> Arrow,
 Spacer[10], Spacer[10], Spacer[10], 
 Grid[{{Item[Labeled[Control@{{a, .8, Style["a", 18]}, 0, 1, Slider, 
        ImageSize -> Small}, Style[Dynamic[a], 20], Top], 
     Background -> (Dynamic @ ColorData[{"Rainbow", {-1, 1}}][a])], 
    Item[Labeled[Control@{{b, .0, Style["b", 18]}, -1, 1, Slider, 
        ImageSize -> Small}, Style[Dynamic[b], 20], Top], 
     Background -> (Dynamic @ ColorData[{"Rainbow", {-1, 1}}][b])]}, 
    {Item[Labeled[Control@{{c, .0, Style["c", 18]}, -1, 1, Slider, 
        ImageSize -> Small}, Style[Dynamic[c], 20], Top], 
     Background -> (Dynamic@ColorData[{"Rainbow", {-1, 1}}][c])], 
    Item[Labeled[Control@{{d, .4, Style["d", 18]}, 0, 1, Slider, 
        ImageSize -> Small}, Style[Dynamic[d], 20], Top], 
     Background -> (Dynamic@ColorData[{"Rainbow", {-1, 1}}][d])]}}, 
  Alignment -> {Center, Center}, ItemSize -> {15, 15}, Dividers -> All],
 {{pt, 3 {{1, 1}, {-1, 1}, {1, -1}}}, Locator, 
    Appearance -> None, LocatorAutoCreate -> {1, 10}}, 
 Alignment -> Center, ControlPlacement -> Left]

एक वैकल्पिक कार्यान्वयन Graphics:

Manipulate[Legended[Graphics[{AbsolutePointSize[10], ColorData[97]@#, 
    Arrowheads[.03], Point @ pt[[#]], 
    Arrow[Partition[NestList[{{a, b}, {c, d}}.# &, pt[[#]], t - 1], 2, 1]]} & /@ 
     Range[Length[pt]], 
   ImageSize -> 400, Frame -> True, Axes -> True, 
   PlotRange -> 5 {{-1, 1}, {-1, 1}}], 
  Placed[LineLegend[ColorData[97] /@ Range[Length @ pt], Defer /@ pt, 
    LegendLabel -> "{x0,y0}", LegendFunction -> Panel], Right]],
 Spacer[10], Spacer[10], Spacer[10], 
 Grid[{{Item[Labeled[Control @ {{a, .8, Style["a", 18]}, 0, 1, Slider, 
        ImageSize -> Small}, Style[Dynamic[a], 20], Top], 
     Background -> (Dynamic @ ColorData[{"Rainbow", {-1, 1}}][a])], 
    Item[Labeled[Control @ {{b, .0, Style["b", 18]}, -1, 1, Slider, 
         ImageSize -> Small}, Style[Dynamic[b], 20], Top], 
       Background -> (Dynamic @ ColorData[{"Rainbow", {-1, 1}}][b])]},
    {Item[Labeled[Control @ {{c, .0, Style["c", 18]}, -1, 1, Slider, 
         ImageSize -> Small}, Style[Dynamic[c], 20], Top], 
       Background -> (Dynamic @ ColorData[{"Rainbow", {-1, 1}}][c])], 
    Item[Labeled[Control @ {{d, .4, Style["d", 18]}, 0, 1, Slider, 
         ImageSize -> Small}, Style[Dynamic[d], 20], Top], 
       Background -> (Dynamic @ ColorData[{"Rainbow", {-1, 1}}][d])]}}, 
  Alignment -> {Center, Center}, ItemSize -> {16, 16}, Dividers -> All],
  {{pt, 3 {{1, 1}, {-1, 1}, {1, -1}}}, Locator, 
     Appearance -> None, LocatorAutoCreate -> {1, 10}},
  Spacer[10],
  {{t, 1}, 1, 80, 1, Animator, AnimationRunning -> False, DisplayAllSteps -> True}, 
 Alignment -> Center, ControlPlacement -> Left]

अद्यतन: ओपी के अद्यतन में उदाहरण के लिए दूसरी विधि का संशोधन:

ClearAll [a, b, a, x0] aA [a_, b_]: = {{2 ab - a, b, ab - a - b}, {2 (a + b - ab), 2 (a + b) - ab}} x0 = {1, 1/3};

Manipulate[Graphics[{AbsolutePointSize[10], ColorData[97]@1, Arrowheads[.03], 
   Point@x0, 
   Arrow[Partition[NestList[aA[a, b].# &, x0, t - 1], 2, 1]]}, 
  AspectRatio -> 1, ImageSize -> 400, Frame -> True, Axes -> True, 
  PlotRange -> All], Spacer[10], Spacer[10], Spacer[10], 
 Grid[{{Item[Labeled[Control@{{a, 1, Style["a", 18]}, -1, 1, Slider, 
        ImageSize -> Small}, Style[Dynamic[a], 20], Top], 
     Background -> (Dynamic@ColorData[{"Rainbow", {-1, 1}}][a])], 
    Item[Labeled[Control@{{b, .5, Style["b", 18]}, -1, 1, Slider, 
        ImageSize -> Small}, Style[Dynamic[b], 20], Top], 
     Background -> (Dynamic@ColorData[{"Rainbow", {-1, 1}}][b])]}}, 
  Alignment -> {Center, Center}, ItemSize -> {16, 16}, Dividers -> All], 
 Spacer[10], 
 {{t, 1}, 1, 15, 1, Animator, AnimationRunning -> False, DisplayAllSteps -> True}, 
 Alignment -> Center, ControlPlacement -> Left]

यदि आप एक के साथ प्रारंभिक बिंदु को नियंत्रित करना चाहते हैं Locator:

Manipulate[Labeled[Graphics[{AbsolutePointSize[10], ColorData[97]@#, 
      Arrowheads[.03], Point@pt[[#]], 
      Arrow[Partition[NestList[aA[a, b].# &, pt[[#]], t - 1], 2, 1]]} & /@ 
        Range[Length[pt]], ImageSize -> 400, Frame -> True, 
   Axes -> True, PlotRange -> All, AspectRatio -> 1], 
  Dynamic[pt[[1]]], Top], Spacer[10], Spacer[10], Spacer[10], 
 Grid[{{Item[Labeled[Control@{{a, 1, Style["a", 18]}, 0, 1, Slider, 
        ImageSize -> Small}, Style[Dynamic[a], 20], Top], 
     Background -> (Dynamic@ColorData[{"Rainbow", {-1, 1}}][a])], 
    Item[Labeled[Control@{{b, .5, Style["b", 18]}, -1, 1, Slider, 
        ImageSize -> Small}, Style[Dynamic[b], 20], Top], 
     Background -> (Dynamic@ColorData[{"Rainbow", {-1, 1}}][b])]}}, 
  Alignment -> {Center, Center}, ItemSize -> {16, 16}, Dividers -> All], 
  {{pt, {x0}}, Locator, Appearance -> None,  LocatorAutoCreate -> False}, 
 Spacer[10], 
 {{t, 1}, 1, 15, 1, Animator, AnimationRunning -> False, DisplayAllSteps -> True}, 
  Alignment -> Center, ControlPlacement -> Left]

7 cvgmt Jan 02 2021 at 06:40

संपादित करें

हम बदल सकते हैं x0द्वारा Locatorऔर बदलने के {a,b}द्वारा Slide2D

A[{a_, b_}] := {{2*b*a - a - b, b*a - a - b}, {2 (a + b - a*b), 
    2 (a + b) - a*b}};
Manipulate[
 ListPlot[NestList[A[ab] . # &, x0, 15], Joined -> True, 
  PlotRange -> {{-10, 10}, {-10, 10}}, 
  AspectRatio -> 1], {{ab, {1, 1/2}, 
   Dynamic["{a,b}=" <> 
     ToString[ab, TraditionalForm]]}, {.8, .4}, {1.2, .6}}, 
 Dynamic["x0=" <> ToString[x0, TraditionalForm]], {{x0, {2, 1/3}}, 
  Locator}, ControlPlacement -> Right]

मूल

A = {{Cos[π/3], -Sin[π/3] - .1}, {Sin[π/3], Cos[π/3]}};
x0 = {1, 1};
pts = NestList[A . # &, x0, 15];
ListPlot[pts, Joined -> True, AspectRatio -> Automatic]

या

A = {{Cos[π/3], -Sin[π/3] - .1}, {Sin[π/3], Cos[π/3]}};
x0 = {1, 1};
pts = NestList[A . # &, x0, 15];
Graphics[Arrow[Partition[pts, 2, 1]]]