Chargement des fichiers du répertoire lorenz
[pst-eqdf.git] / lorenz / animYZ_Lorenz-PSTricks.tex
diff --git a/lorenz/animYZ_Lorenz-PSTricks.tex b/lorenz/animYZ_Lorenz-PSTricks.tex
new file mode 100644 (file)
index 0000000..a9cf5af
--- /dev/null
@@ -0,0 +1,261 @@
+\documentclass{article}\r
+\usepackage[a4paper,margin=2cm]{geometry}\r
+\usepackage{animate}\r
+\usepackage{pst-node,pst-eqdf}\r
+\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+% Essai de Manuel Luque 19 février 2003\r
+% transformé par Denis Girou le 25 février 2003\r
+% révision le 14 septembre 2011\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+\makeatletter\r
+\pst@addfams{pst-plothsb}\r
+\r
+\define@key[psset]{pst-plothsb}{HueBegin}{% Between 0 and 1\r
+\edef\PstParametricplotHSB@HueBegin{#1}}\r
+\r
+\define@key[psset]{pst-plothsb}{HueEnd}{% Between 0 and 1\r
+\edef\PstParametricplotHSB@HueEnd{#1}}\r
+\r
+\newif\ifPst@HSB\r
+\define@key[psset]{pst-plothsb}{HSB}[true]{\@nameuse{Pst@HSB#1}}\r
+\r
+% Default values\r
+\psset{HueBegin=0,HueEnd=1,HSB=true}\r
+\r
+\def\parametricplotHSB{\pst@object{parametricplotHSB}}\r
+\def\parametricplotHSB@i{\@ifnextchar[{\parametricplotHSB@do}{\parametricplotHSB@do[]}}\r
+\def\parametricplotHSB@do[#1]#2#3#4{{%\r
+\psset{#1}%\r
+\begin@ClosedObj\r
+\addto@pscode{%\r
+/t  #2 def\r
+/dt #3 t sub \psk@plotpoints\space div def\r
+/t t dt sub def\r
+/Counter 0 def\r
+\psk@plotpoints {\r
+  /t t dt add def\r
+  /Counter Counter 1 add def\r
+/F@pstplot \ifPst@algebraic (#4)\r
+                    tx@AlgToPs begin AlgToPs end cvx\r
+                 \else { #4 }\r
+          \fi\r
+   def\r
+\ifPst@algebraic\r
+   F@pstplot\r
+    \else  #4\r
+\fi\r
+  \pst@number\psyunit mul exch\r
+  \pst@number\psxunit mul exch\r
+  1 Counter eq\r
+    {moveto}                    % First point\r
+    {\ifPst@HSB                 % Other points than the first one\r
+       /PointY exch def\r
+       /PointX exch def\r
+       Counter \psk@plotpoints\space div\r
+           \PstParametricplotHSB@HueEnd\space\r
+             \PstParametricplotHSB@HueBegin\space sub mul\r
+           \PstParametricplotHSB@HueBegin\space add\r
+         1 1 sethsbcolor\r
+       PointX PointY lineto\r
+       stroke\r
+       PointX PointY moveto\r
+     \else\r
+       lineto\r
+     \fi} ifelse\r
+    } repeat}% fin du code ps\r
+\end@ClosedObj}} % fin de la commande PSTricks\r
+\r
+\makeatother\r
+\r
+\makeatletter\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+% adaptation de \parametricplotHSB\r
+% à \lisplotHSB\r
+% le 10 juin 2012\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+\def\listplotHSB{\pst@object{listplotHSB}}\r
+\def\listplotHSB@i#1{%\r
+\begin@ClosedObj\r
+  \addto@pscode{%\r
+  /Counter 0 def\r
+     /XY@ [ #1 ] def\r
+     XY@ 0 get\r
+     XY@ 1 get\r
+  \pst@number\psyunit mul exch\r
+  \pst@number\psxunit mul exch\r
+       moveto\r
+     /L XY@ length def\r
+     2 2 L 2 sub {/i exch def\r
+   /x1  XY@ i get \pst@number\psxunit mul def\r
+   /y1  XY@ i 1 add get \pst@number\psyunit mul def\r
+    x1 y1\r
+    \ifPst@HSB\r
+    Counter L 2 div div\r
+    \PstParametricplotHSB@HueEnd\space\r
+    \PstParametricplotHSB@HueBegin\space sub mul\r
+    \PstParametricplotHSB@HueBegin\space add\r
+    1 1 sethsbcolor\r
+    /Counter Counter 1 add def\r
+    \fi\r
+     lineto\r
+     stroke\r
+  x1 y1 moveto\r
+  } for\r
+  }%\r
+\end@ClosedObj}\r
+\makeatother\r
+\def\formules{%\r
+    /xObservateur abscisse Sin1 mul neg ordonnee Cos1 mul add def\r
+    /yObservateur abscisse Cos1Sin2 mul neg ordonnee Sin1Sin2 mul sub cote Cos2 mul add def\r
+    /zObservateur abscisse neg Cos1Cos2 mul ordonnee Sin1Cos2 mul sub cote Sin2 mul sub Dobs add def\r
+    /xScreen DScreen xObservateur mul zObservateur div def\r
+    /yScreen DScreen yObservateur mul zObservateur div def\r
+  xScreen yScreen}\r
+\r
+\makeatletter\r
+\pst@addfams{pst-pnodeTroisD}\r
+\r
+\define@key[psset]{pst-pnodeTroisD}{THETA}{\edef\psk@TroisD@Theta{#1 }}\r
+\define@key[psset]{pst-pnodeTroisD}{PHI}{\edef\psk@TroisD@Phi{#1 }}\r
+\define@key[psset]{pst-pnodeTroisD}{Dobs}{\edef\psk@TroisD@Dobs{#1 }}\r
+\define@key[psset]{pst-pnodeTroisD}{Decran}{\edef\psk@TroisD@Ecran{#1 }}\r
+\psset{THETA=300,PHI=20,Dobs=200,Decran=25}\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+\def\pnodeTroisD{\@ifnextchar[{\pst@pnodeTroisD}{\pst@pnodeTroisD[]}}\r
+\r
+\def\pst@pnodeTroisD[#1](#2,#3,#4)#5{{%\r
+\pst@killglue\r
+\psset{#1}%\r
+\pnode(!\r
+ /THETA \psk@TroisD@Theta\space def\r
+ /PHI \psk@TroisD@Phi\space def\r
+ /Dobs \psk@TroisD@Dobs\space def\r
+ /DScreen \psk@TroisD@Ecran\space def\r
+ /Sin1 THETA sin def\r
+ /Sin2 PHI sin def\r
+ /Cos1 THETA cos def\r
+ /Cos2 PHI cos def\r
+ /Cos1Sin2 Cos1 Sin2 mul def\r
+ /Sin1Sin2 Sin1 Sin2 mul def\r
+ /Cos1Cos2 Cos1 Cos2 mul def\r
+ /Sin1Cos2 Sin1 Cos2 mul def\r
+ /xObservateur #2 Sin1 mul neg #3 Cos1 mul add def\r
+ /yObservateur #2 Cos1Sin2 mul neg #3 Sin1Sin2 mul sub #4 Cos2 mul add def\r
+ /zObservateur #2 neg Cos1Cos2 mul #3 Sin1Cos2 mul sub #4 Sin2 mul sub Dobs add def\r
+ /xScreen DScreen xObservateur mul zObservateur div def\r
+ /yScreen DScreen yObservateur mul zObservateur div def\r
+  xScreen yScreen){#5}}}\r
+\makeatother\r
+%timeline\r
+\begin{filecontents}{lorenzXZ.txt}\r
+::0x0\r
+::1\r
+::2\r
+::3\r
+::4\r
+::5\r
+::6\r
+::7\r
+::8\r
+::9\r
+::10\r
+::11\r
+::12\r
+::13\r
+::14\r
+::15\r
+::16\r
+::17\r
+::18\r
+::19\r
+::20\r
+::21\r
+::22\r
+::23\r
+::24\r
+::25\r
+::26\r
+::27\r
+::28\r
+::29\r
+::30\r
+::31\r
+::32\r
+::33\r
+::34\r
+::35\r
+::36\r
+::37\r
+::38\r
+::39\r
+::40\r
+::41\r
+::42\r
+::43\r
+::44\r
+::45\r
+::46\r
+::47\r
+::48\r
+::49\r
+::50\r
+::51\r
+\end{filecontents}\r
+\title{L'attracteur de Lorenz avec PSTricks}\r
+\date{12 juin 2012}\r
+\begin{document}\r
+\def\parametres{\r
+    /Pr 10 def\r
+    /Rh 28 def\r
+    /beta 8 3 div def\r
+}%\r
+% y[0] y[1] y[2]\r
+ % x    y     z\r
+\def\Lorenz{\r
+Pr*(y[1]-y[0])|%\r
+Rh*y[0]-y[1]-y[0]*y[2]|%\r
+y[0]*y[1]-beta*y[2]%\r
+}\r
+\def\conditionsInitiales{10 10 30}\r
+\begin{center}\r
+\begin{pspicture}(-8,-.01)(8,0.01)\r
+%\psgrid[subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=0pt]%\r
+\pstVerb{\parametres}%\r
+  \psequadiff[% y,z\r
+  tabname=tabXYZ,\r
+  method=rk4,\r
+  whichabs=1,whichord=2,\r
+  saveData,filename=LorenzYZ.dat,\r
+  plotpoints=2501,algebraic]{0}{25}{\conditionsInitiales}{\Lorenz}\r
+%% une commande PSTricks est indispensable si on ne vaut pas tracer le courbe\r
+ \psdot[linecolor=white,dotsize=0.001](0,0)\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+%\listplotHSB[unit=0.25]{tabXY aload pop}%\r
+%\uput[r](8,0){$x$}\r
+%\uput[u](0,8){$y$}\r
+\end{pspicture}\r
+\end{center}\r
+\begin{center}\r
+\def\nFrames{51}% 200 images\r
+\pstVerb{/YZlorenz [ (LorenzYZ.dat) run ] def}%\r
+\begin{animateinline}[controls,timeline=lorenzxy.txt,%\r
+                     begin={\begin{pspicture}(-8,-1)(8,14)},\r
+                     end={\end{pspicture}}]{10}% 10 images/s\r
+\psgrid[subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=0pt]%\r
+\rput(0,13.5){\large\textbf{YZ}$(x_0=10,y_0=10,z_0=30)$}\r
+\listplotHSB[unit=0.25,HSB=false,linecolor=gray]{YZlorenz aload pop}%\r
+\newframe\r
+\multiframe{\nFrames}{i=0+100}{% tous les 100 pts\r
+ \pstVerb{      /YZpartiel {0 2 \i\space {/i exch def\r
+                 YZlorenz i get\r
+                 YZlorenz i 1 add get\r
+                 } for\r
+                 }def\r
+                 }%\r
+\listplotHSB[unit=0.25,linewidth=0.2,HueBegin=0.65,HueEnd=1]{YZpartiel}%\r
+}\r
+\end{animateinline}\r
+\end{center}\r
+\end{document}\r
+\r

Licence Creative Commons Les fichiers de Syracuse sont mis à disposition (sauf mention contraire) selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.