Tracer une image d'un système dynamique discret
J'essaye de tracer un système dynamique discret de la forme $$\vec{x}_{k+1} = A \vec{x}_k$$ où $A$ est un $2\times 2$ matrice sous la forme $$\begin{pmatrix}a&b\\c&d\end{pmatrix}$$ où $a$, $b$ et $c$sont des nombres réels. Il a une valeur initiale sous la forme$$\begin{pmatrix}e \\f\end{pmatrix}$$
Je voudrais créer un tracé similaire à celui de: Création d'une image d'un système dynamique discret Mais je suis incapable d'obtenir la fonction tracée car j'ai essayé les deux VectorPlot
et ListPlot
avec peu de succès. Tout conseil serait très apprécié :-)
Le problème exact sur lequel je travaille est: $$\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*}$$ Je regarde les parcelles créées par différentes valeurs pour $a$ et $b$ tel que $1$ et $1/2$.
J'ai essayé ce qui suit:
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]

Réponses
Utilisez les curseurs pour modifier les entrées de la matrice. Cliquez et faites glisser les localisateurs (petits disques) pour modifier les points initiaux; ALT + Cliquez pour ajouter / supprimer des localisateurs.
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]

Une implémentation alternative utilisant 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]

Mise à jour: Modification de la deuxième méthode pour l'exemple dans la mise à jour d'OP:
ClearAll [a, b, aA, 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]

Si vous souhaitez contrôler le point de départ avec un 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]

Éditer
Nous pouvons changer x0
par Locator
et changer {a,b}
par 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]
Original
A = {{Cos[π/3], -Sin[π/3] - .1}, {Sin[π/3], Cos[π/3]}};
x0 = {1, 1};
pts = NestList[A . # &, x0, 15];
ListPlot[pts, Joined -> True, AspectRatio -> Automatic]

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