jeudi 10 mai 2018

Examples with pst-contourplot

Cette page est dédiée à des exemples réalisés avec le package pst-contourplot (version 0.03) :
\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,multido}
\begin{document}
\begin{pspicture}(-3,-4)(3,4)
\psContourPlot[unit=2,ncell=120 140,a=0.02,linecolor=yellow,Fill,fillcolor=red]{%
               x dup mul y dup mul add 1 sub 3 exp
               x dup mul y 3 exp mul sub}
\psgrid[subgriddiv=0,gridcolor=black,griddots=10,gridlabels=5pt]
\psline{}(0,3.5)(0,0)(5.5,0)
\uput[d](0,0){$O$}
\uput[u](0,3.5){$y$}
\uput[r](5.5,0){$x$}
\end{pspicture}
\end{document}


\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,multido}
\begin{document
\begin{pspicture}(-6,-4)(6,4)
\psframe*(-6,-4)(6,4)
\psContourPlot[unit=0.5,algebraic,ncell=60 40,a=0.4,linecolor=-red,Fill,fillcolor={[rgb]{0.5 0.5 1}}]{x*(x^2+y^2)-10*(x^2-y^2)-50}
\psContourPlot[unit=0.5,algebraic,ncell=60 40,a=0.4,linecolor=-red,Fill,fillcolor=-blue]{x*(x^2+y^2)-10*(x^2-y^2)-20}
\psContourPlot[unit=0.5,algebraic,ncell=60 40,a=0.4,linecolor=-red,Fill,fillcolor=-green]{x*(x^2+y^2)-10*(x^2-y^2)+10}
\psgrid[subgriddiv=0,gridcolor=white,griddots=10,gridlabels=5pt]
\psline[linecolor=white]{<->}(0,3.5)(0,0)(5.5,0)
\uput[d](0,0){\white$O$}
\uput[u](0,3.5){\white$y$}
\uput[r](5.5,0){\white$x$}
\end{pspicture}
\end{document}
L'équation de la courbe est donnée dans l'article de Wikipedia :
https://fr.wikipedia.org/wiki/Th%C3%A9or%C3%A8me_des_fonctions_implicites

\documentclass{article}
\usepackage{pst-contourplot,animate}
\begin{document}
\begin{animateinline}[controls,palindrome,
                     begin={\begin{pspicture}(-4,-4)(4,4)},
                     end={\end{pspicture}}]{10}% 10 images/s
\multiframe{20}{r=4+-0.1}{%
\psframe*[linecolor=orange](-4,-4)(4,4)
\pstVerb{/rayon 1 def}%
\psContourPlot[unit=2,ncell=180 180,a=0.02,linecolor={[rgb]{0 0 0.5}},Fill,fillcolor=cyan,ReverseColors]{%
               1 x rayon 30 cos mul sub dup mul y rayon 30 sin mul add dup mul add div
               1 x rayon 30 cos mul add dup mul y rayon 30 sin mul add dup mul add div add
               1 x dup mul y rayon sub dup mul add div add
               \r\space sub }
\psgrid[subgriddiv=0,gridcolor=black,griddots=10]}
\end{animateinline}
\end{document}

Remarque : les calculs sont plus rapides si les fonctions sont exprimées en postscript.

Pour les équations des courbes suivantes, leur origine est indiquée dans les commentaires.
\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,pst-plot}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
\psset{unit=0.8333}%
% https://www.maplesoft.com/applications/view.aspx?sid=1582&view=html
\psContourPlot[algebraic,ncell=120 120,a=0.1,linecolor=red,Fill,fillcolor=yellow,
                         ReverseColors]{x*y*cos(x^2 + y^2)-1}
\psaxes[labelFontSize=\scriptstyle]{->}(0,0)(-6,-6)(6,6)
\end{pspicture}
\end{document}


\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,pst-plot}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
% https://www.maplesoft.com/applications/view.aspx?sid=1582&view=html
\psset{unit=0.5}%
\psContourPlot[algebraic,ncell=200 200,a=0.1,linecolor=red]{sin(x + 2*sin(y))-cos(y + 3*cos(x))}
\psgrid[subgriddiv=0,gridcolor=black,griddots=10,gridlabels=0pt](-10,-10)(10,10)
\psaxes[labelFontSize=\scriptstyle]{->}(0,0)(-10,-10)(10,10)
\end{pspicture}
\end{document}

Ci-dessous, le calcul est fait en postscript, vous pourrez constater la rapidité des calculs.


\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,pst-math}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
% https://www.maplesoft.com/applications/view.aspx?sid=1582&view=html
\psframe*[linecolor=cyan](-5,-5)(5,5)
\psset{unit=0.5}%
\psContourPlot[ncell=200 200,a=0.1,linecolor=red,Fill,fillcolor=yellow,ReverseColors]{x y SIN 2 mul add SIN y x COS 3 mul add COS sub}
\end{pspicture}
\end{document} 


\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,pst-plot}
\begin{document}
\begin{pspicture}(-4,-4)(4.1,4.1)
\psframe*[linecolor=cyan](-4,-4)(4.1,4.1)
% Courbe déduite de 8 droites
% page 124 : Revue du Palais de la Découverte
% Courbes mathématiques
% Numéro spécial 8 . Juillet 1976
\psContourPlot[algebraic,ncell=80 80,a=0.1,linecolor=blue,Fill,fillcolor=orange,
                          ReverseColors]{(x^4-5*x^2+4)*(y^4-5*y^2+4)+1}
\psaxes[labelFontSize=\scriptstyle]{->}(0,0)(-4,-4)(4,4)
\end{pspicture}
\end{document}

\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,pst-plot}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
\psframe*[linecolor=cyan](-5,-5)(5,5)
% https://www.maplesoft.com/applications/view.aspx?sid=1582&view=html
\psset{unit=0.5}%
\psContourPlot[algebraic,ncell=200 200,a=0.1,linecolor=blue,Fill,fillcolor=orange,ReverseColors]{ ln((x + 7*sin(y))^2)- EXP(y + 2*cos(x))}
\psaxes[labelFontSize=\scriptstyle]{->}(0,0)(-10,-10)(10,10)
\end{pspicture}
\end{document}

\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot}
\begin{document}
\begin{pspicture}(-6,-6)(6,6)
% Courbe du diable
% page 52 : Revue du Palais de la Découverte
% Courbes mathématiques
% Numéro spécial 8 . Juillet 1976
% et Serge Mehl
% http://serge.mehl.free.fr/anx/Diable.html
\psframe*[linecolor=cyan](-6,-6)(6,6)
\psContourPlot[ncell=120 120,a=0.1,linecolor=red,Fill,fillcolor=yellow,ReverseColors]{x 4 exp y 4 exp sub 24 y 2 exp mul add 25 x 2 exp mul sub}
\end{pspicture}
\end{document}

Les lignes de champ créées par un ensemble de 4 dipôles de Hertz disposés aux sommets d'un carré dont le côté varie :
2 animations, les sommets du carré se rapprochent, puis s'éloignent et ainsi de suite :
Le listing  pour générer les images des 2 animations :

\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,pst-math,multido}
\begin{document}
% 4 dipôles de Hertz aux sommets d'un carré
% dont les sommets se rapprochent
\multido{\rX=1.1+-0.05}{22}{%
\begin{pspicture}(-6.25,-6.25)(6.25,6.25)
\pstVerb{/t 0 def /k0 2 PI mul def
         /xi1 -\rX\space def /xi2 \rX\space def /xi3 -\rX\space def /xi4 \rX\space def
         /yi1 -\rX\space def /yi2 \rX\space def /yi3 \rX\space def /yi4 -\rX\space def}%
\psframe*(-6.25,-6.25)(6.25,6.25)
\multido{\rc=-1.1+0.2,\n=0.0+0.1}{11}{
\definecolor{HERTZ}{hsb}{\n,1,1}
\psContourPlot[unit=5,ncell=200 200,a=0.0125,linewidth=0.01,linecolor=HERTZ]{
          /r1 x xi1 sub dup mul y yi1 sub dup mul add sqrt k0 mul def
          /theta1 y yi1 sub x xi1 sub atan def
          /r2 x xi2 sub dup mul y yi2 sub dup mul add sqrt k0 mul def
          /theta2 y yi2 sub x xi2 sub atan def
          /r3 x xi3 sub dup mul y yi3 sub dup mul add sqrt k0 mul def
          /theta3 y yi3 sub x xi3 sub atan def
          /r4 x xi4 sub dup mul y yi4 sub dup mul add sqrt k0 mul def
          /theta4 y yi4 sub x xi4 sub atan def
           r1 t sub COS r1 t sub SIN r1 div add theta1 sin dup mul mul
           r2 t sub COS r2 t sub SIN r2 div add theta2 sin dup mul mul add
           r3 t sub COS r3 t sub SIN r3 div add theta3 sin dup mul mul add
           r4 t sub COS r4 t sub SIN r4 div add theta4 sin dup mul mul add
           \rc\space sub}}%
\end{pspicture}}
\end{document}

\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,pst-math,multido}
\begin{document}
% 4 dipôles de Hertz aux sommets d'un carré
% dont les sommets se rapprochent
\multido{\rX=1.1+-0.05}{22}{%
\begin{pspicture}(-6.25,-6.25)(6.25,6.25)
\pstVerb{/t 0 def /k0 2 PI mul def
         /xi1 -\rX\space def /xi2 \rX\space def /xi3 -\rX\space def /xi4 \rX\space def
         /yi1 -\rX\space def /yi2 \rX\space def /yi3 \rX\space def /yi4 -\rX\space def}%
\psframe*[linecolor=yellow](-6.25,-6.25)(6.25,6.25)
\multido{\rc=-1.1+0.2,\n=0.0+0.1}{11}{
\definecolor{HERTZ}{hsb}{\n,1,1}
\psContourPlot[unit=5,ncell=200 200,a=0.0125,linewidth=0.005,fillcolor=HERTZ,Fill,ReverseColors,linecolor=HERTZ]{
          /r1 x xi1 sub dup mul y yi1 sub dup mul add sqrt k0 mul def
          /theta1 y yi1 sub x xi1 sub atan def
          /r2 x xi2 sub dup mul y yi2 sub dup mul add sqrt k0 mul def
          /theta2 y yi2 sub x xi2 sub atan def
          /r3 x xi3 sub dup mul y yi3 sub dup mul add sqrt k0 mul def
          /theta3 y yi3 sub x xi3 sub atan def
          /r4 x xi4 sub dup mul y yi4 sub dup mul add sqrt k0 mul def
          /theta4 y yi4 sub x xi4 sub atan def
           r1 t sub COS r1 t sub SIN r1 div add theta1 sin dup mul mul
           r2 t sub COS r2 t sub SIN r2 div add theta2 sin dup mul mul add
           r3 t sub COS r3 t sub SIN r3 div add theta3 sin dup mul mul add
           r4 t sub COS r4 t sub SIN r4 div add theta4 sin dup mul mul add
           \rc\space sub}}%
\end{pspicture}}
\end{document} 

Pour les exemples précédents l'instant est fixé (t=0). Il serait possible observer l'évoluion du champ au cours du temps. Mais cela a déjà été fait pour 2 dipôles par Letzte Änderung (je suppose qu'il s'agit du nom de l'auteur qui est indiqué au bas de la page) :
http://www.tet.ovgu.de/Lehre/Feldanimationen/Strahlungsfeld+des+Hertzschen+Dipols.html 

Je remercie Gilg Jürgen de m'avoir communiqué ce lien.







Aucun commentaire:

Enregistrer un commentaire