lundi 30 juillet 2018

Un exemple pour illustrer l'utilisation conjointe de pst-solides3d et pst-contourplot.

Il s'agit de la version 0.7 de pst-contourplot. Tous les exemples publiés ainsi que la documentation restent valables. Cette version est incluse dans le zip (pst-contourplot-v0.7.zip) qui est dans le répertoire :
L'idée a été d'étudier  la possibilité de faire quelque chose qui se rapprocherait un peu de ces représentations réalisées avec mathematica (je n'ai pas vu le nom de l'auteur) :

La dernière image utilise l'extension pst-shl permettant de dessiner les surfaces par des lignes parallèles à x :
Il s'agit de la version  pst-shl.v.03 (elle est aussi incluse dans (pst-contourplot-v0.7.zip) ) et ici :



dimanche 22 juillet 2018

pst-contourplot : fonctions complexes

Famille de courbes orthogonales à une famille de sinusoïdes :
En 1922, G.Fontané commence son article “Sur deux familles de courbes orthogonales” ainsi :
« Si l’on écrit, pour une fonction F(z) d’une variable complexe, F(z) = P(x, y) + iQ(x, y) on sait que les courbes :
P(x, y) = const, Q(x, y) = const.,
forment deux familles de courbes orthogonales. »
On peut ainsi représenter toutes les fonctions complexes classiques. En voici trois exemples :



Ces exemples sont dans le répertoire :
Fichier : exemple-5.tex. Le fichier zippé  contient tous ls fichiers.

Le listing de ces exemples :

\documentclass{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{pst-contourplot,pst-plot}
\usepackage{amsmath}
\usepackage[colorlinks=true]{hyperref}
\author{manuel.luque27@gmail.com}
\begin{document}
\section{Famille de courbes orthogonales à une famille de sinusoïdes}
\begin{center}
\begin{pspicture}(-3.14,-4)(3.14,4)
\psgrid[subgriddiv=0,gridcolor=red!30,subgridcolor=green,gridlabels=0pt,griddots=10](-3,-4)(3,4)
\multido{\n=0.0+0.5,\nS=-2.4+0.4}{13}{
\psplot[algebraic,plotpoints=720,linecolor=red]{-3.14}{3.14}{\nS*sin(x)}
\psContourPlot[unit=1,a=0.1,algebraic,function=y^2-2*ln(abs(cos(x)))-\n,linecolor=blue](-3.14,-3)(3.14,3)}
\psContourPlot[unit=1,a=0.025,algebraic,function=y^2-2*ln(abs(cos(x)))-8,linecolor=blue](-3.14,-3)(3.14,3)
\psframe[dimen=middle](-3.14,-4)(3.14,4)
\multido{\i=-4+1}{9}{\psline(-3.14,\i)(-3.2,\i)\uput[l](-3.14,\i){\small\i}}
\multido{\i=-3+1}{7}{\psline(\i,-4)(\i,-4.1)\uput[d](\i,-4){\small\i}}
\end{pspicture}
\end{center}
\section{Familles de courbes orthogonales définies par une fonction complexe}
G.Fontané commence son article ``\textit{Sur deux familles de courbes orthogonales}''\footnote{\url{www.numdam.org/article/NAM_1922_5_1__173_0.pdf}} ainsi :

<< Si l'on écrit, pour une fonction F(z) d'une variable complexe,
 $F(z)=P(x,y)+iQ(x,y)$
 on sait que les courbes :
 \[ P(x,y)=\text{const},\quad Q(x,y)=\text{const.},\]
 forment deux familles de courbes orthogonales. >>

On peut ainsi représenter toutes les fonctions complexes classiques. En voici trois exemples :

%\[\cos(z)=\cos(x)\cosh(y)-i\sin(x)\sinh(y)\]
\begin{center}
\begin{pspicture}(-3.5,-5.5)(3.5,5.5)
\rput(0,5.25){$\cos(z)=\cos(x)\cosh(y)-i\sin(x)\sinh(y)$}
\psgrid[subgriddiv=0,gridcolor=red!30,subgridcolor=green,gridlabels=0pt,griddots=10](-3,-5)(3,5)
\psframe(-3.15,-5)(3.15,5.1)
\multido{\n=-8.0+1.0}{17}{
\psContourPlot[unit=1,a=0.05,algebraic,function=cos(x)*ch(y)-\n,linecolor=blue](-3.14,-5)(3.14,5)
\psContourPlot[unit=1,a=0.05,algebraic,function=-sin(x)*sh(y)-\n,linecolor=red](-3.15,-5)(3.14,5)}
\multido{\i=-5+1}{11}{\psline(-3.15,\i)(-3.2,\i)\uput[l](-3.15,\i){\small\i}}
\multido{\i=-3+1}{7}{\psline(\i,-5)(\i,-5.1)\uput[d](\i,-5){\small\i}}
\uput{0.2}[d](-3.2,-4.9){$-\pi$}\uput[d](3.15,-4.9){$\pi$}
\end{pspicture}
\end{center}

%\[\tanh(z)=\frac{\sinh(2x)}{\cos(2y) + \cosh(2x)}+i\frac{\sin(2y)}{\cos(2y) + \cosh(2x)} \]
\begin{center}
\begin{pspicture}(-4,-6)(4,7)
\psgrid[subgriddiv=0,gridcolor=red!30,subgridcolor=green,gridlabels=7pt,griddots=10](-4,-6)(4,6)
\rput(0,6.5){$\tanh(z)=\frac{\sinh(2x)}{\cos(2y) + \cosh(2x)}+i\frac{\sin(2y)}{\cos(2y) + \cosh(2x)}$}
\psgrid[unit=2,subgriddiv=0,gridcolor=red!30,subgridcolor=green,gridlabels=0pt,griddots=10](-2,-3)(2,3)
\psframe(-4,-6)(4.1,6.1)
\multido{\n=-2.5+0.5,\nH=0.0+.1}{11}{
\psContourPlot[unit=2,a=0.05,algebraic,function=sh(2*x)/(cos(2*y)+ch(2*x))-\n,linecolor=blue](-2,-3)(2,3)
\psContourPlot[unit=2,a=0.05,algebraic,function=sin(2*y)/(cos(2*y)+ch(2*x))-\n,linecolor=red](-2,-3)(2,3)
}
\end{pspicture}
\end{center}

%\[ \mathrm{e}^z=\mathrm{e}^x \cos(y) + i \mathrm{e}^x\sin(y)\]

\begin{center}
\begin{pspicture}(-4,-3.5)(4,4)
\psgrid[subgriddiv=0,gridcolor=red!30,subgridcolor=green,gridlabels=0pt,griddots=10](-4,-3)(4,3)
\rput(0,3.5){$ \mathrm{e}^z=\mathrm{e}^x \cos(y) + i \mathrm{e}^x\sin(y)$}
\psframe(-4,-3.14)(4.1,3.2)
\foreach \r in {-8,-6,-4,-2,-0.5,-0.2,-0.05,0.05,0.2,0.5,2,4,6,8}{%
\psContourPlot[unit=1,a=0.1,algebraic,function=Euler^x*cos(y)-\r,linecolor=blue](-4,-3.14)(4,3.14)
\psContourPlot[unit=1,a=0.1,algebraic,function=Euler^x*sin(y)-\r,linecolor=red](-4,-3.2)(4,3.14)}
\multido{\i=-3+1}{7}{\psline(-4,\i)(-4.1,\i)\uput[l](-4,\i){\small\i}}
\multido{\i=-4+1}{9}{\psline(\i,-3.14)(\i,-3.2)\uput[d](\i,-3.14){\small\i}}
\end{pspicture}
\end{center}

\begin{center}
\begin{pspicture}(-4,-3.5)(4,4)
\psgrid[subgriddiv=0,gridcolor=red!30,subgridcolor=green,gridlabels=0pt,griddots=10](-4,-3)(4,3)
\rput(0,3.5){$ \mathrm{e}^z=\mathrm{e}^x \cos(y) + i \mathrm{e}^x\sin(y)$}
\psframe*[linecolor=red](-4,-3.14)(4.1,3.2)
\multido{\n=1.0+-0.1,\nH=0.0+0.05}{21}{%
% \psContourPlot[unit=1,a=0.1,algebraic,function=Euler^x*cos(y)-\r,linecolor=blue](-4,-3.14)(4,3.14)
\psContourPlot[unit=1,a=0.1,algebraic,function=Euler^x*sin(y)-\n,Fill,fillcolor={[hsb]{\nH,1,1}},linecolor=white](-4,-3.2)(4,3.14)}
\multido{\i=-3+1}{7}{\psline(-4,\i)(-4.1,\i)\uput[l](-4,\i){\small\i}}
\multido{\i=-4+1}{9}{\psline(\i,-3.14)(\i,-3.2)\uput[d](\i,-3.14){\small\i}}
\end{pspicture}
\end{center}
\end{document}






mercredi 11 juillet 2018

Mise à jour de pst-contourplot et pst-2fils

La nouvelle version de pst-contourplot est dans ce répertoire avec les exemples et la documentation :

Le fichier zippé contient le package, la documentation et les fichiers sources des exemples.

Les lignes de champ et les équipotentielles de 2 fils parallèles uniformément chargés tiennent compte de la nouvelle version de pst-contourplot. Les fichiers sont dans le répertoire :


12 juillet 2018 : correction de l'option [algebraic] qui est bien plus rapide maintenant, il n'est plus nécessaire de coder en postscript pour que la compilation s'effectue rapidement (superbe travail de Dominique Rodriguez pour cette option).

15 juillet 2018 : une nouvelle version qui contient des options nouvelles suivantes :
  • [showpoints]  booléen pour afficher les points 
  • [WriteData] : pour enregistrer sur le disque les points de la courbe
ainsi qu'une commande \psReadData[FileName=...] pour dessiner la courbe enregistrée.

La documentation en anglais (pst-contourplot-docEN.pdf) est incluse.

Cette version est actualisée dans le répertoire indiqué au début.

3 exemples on été rajoutés :
Le fichier "exemples-3.tex" est dans le répertoire. En voici le listing, les sources sont indiquées dans les commentaires :

\documentclass[pstricks]{standalone}
\usepackage{pst-contourplot,multido,pst-plot}
\begin{document}

\begin{pspicture}(-6.25,-6.25)(6.25,6.25)
% https://mathematica.stackexchange.com/questions/547/plotting-an-implicit-polar-equation
\psframe(-6.25,-6.25)(6.25,6.25)
\pstVerb{
/arctan {
 3 dict begin
 /x exch def
 /y exch def
 /Arc y x atan def
  Arc 180 ge {/Arc Arc 360 sub def} if
  Arc
 end
} def
}%
\psContourPlot[unit=0.25,a=0.1,function=y x arctan DegToRad dup mul 5.55 x dup mul y dup mul add sqrt RadToDeg cos mul sub,linewidth=0.2,Fill,fillcolor=orange](-25,-25)(25,25)
\end{pspicture}

\begin{pspicture}[showgrid](-0.5,-0.5)(10,10)
% https://stackoverflow.com/questions/42076864/plotting-the-implicit-function-xy-logx-logy-2-0-on-matlab
\multido{\nC=5.6+-0.5,\n=0.0+0.1}{8}{
\psContourPlot[unit=1,a=0.1,algebraic,function=-ln(x)-ln(y)+x+y-\nC,Fill,fillcolor={[hsb]{\n,1,1}}](0.01,0.01)(10,10)}
\end{pspicture}

\begin{pspicture}(-5,-5)(5,5)
% https://mathsbyagirl.wordpress.com/2015/12/04/math-isnt-cool/
\psframe*[linecolor=cyan](-5,-5)(5,5)
\psContourPlot[unit=1,a=0.02,algebraic,function=sin(x^2+y^2)-cos(x*y),Fill,fillcolor=orange](-5,-5)(5,5)
\end{pspicture}
\end{document}

18 juillet 2018 

J'emprunte ces exemples au cours de Julien Royer :

Le fichier source exemple-4.tex est dans le répertoire indiqué au début.
pst-contourplot.tex a été modifié pour assurer la compatibilité de l'option [grid] avec celle de pst-solides3d.

des lignes de niveau, en 3D, avec pst-solides3d :
En projection sur un plan horizontal avec pst-contourplot :
Le listing de ces derniers exemples :

\documentclass[pstricks]{standalone}
\usepackage{pst-solides3d,pst-contourplot}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
% Julien Royer
% https://www.math.univ-toulouse.fr/~jroyer/TD/2015-16-L2PS/L2PS-poly.pdf
\psframe(-5,-5)(5,5)
\multido{\n=-2.0+.2,\nH=0.0+0.05}{20}{
\psContourPlot[unit=1,a=0.05,algebraic,function=sin(x)-sin(y)-\n,Fill,fillcolor={[hsb]{\nH,1,1}},ReverseColors](-5,-5)(5,5)}
\end{pspicture}

\begin{pspicture}(-5,-5)(5,5)
% Julien Royer
% https://www.math.univ-toulouse.fr/~jroyer/TD/2015-16-L2PS/L2PS-poly.pdf
\psframe(-5,-5)(5,5)
\multido{\n=-2.0+.2,\nH=0.0+0.05}{20}{
\psContourPlot[unit=1,a=0.05,algebraic,function=sin(x)-sin(y)-\n,linecolor={[hsb]{\nH,1,1}}](-5,-5)(5,5)}
\end{pspicture}

\begin{pspicture}(-5,-5)(5,5)
% https://www.math.univ-toulouse.fr/~jroyer/TD/2015-16-L2PS/L2PS-poly.pdf
\psframe(-5,-5)(5,5)
\multido{\n=-1.00+.05,\nH=0.0+0.04}{25}{
\psContourPlot[unit=2,a=0.05,algebraic,function=(x^2-2*y^2)*Euler^(-2*x^2-y^2)-\n,linecolor={[hsb]{\nH,1,1}}](-2.5,-2.5)(2.5,2.5)}
\end{pspicture}

\begin{pspicture}(-5,-5)(5,5)
\psframe(-5,-5)(5,5)
\psset{viewpoint=50 40 20 rtp2xyz,Decran=70,lightsrc=50 30 35 rtp2xyz}
\psSurface[
    fillcolor=white,algebraic,
    intersectionplan={[0 0 1 -0.1] [0 0 1 0.3] [0 0 1 0.2]},
    intersectioncolor=(bleu) (red) (green),
    intersectionlinewidth=1,
    intersectiontype=0,
    ngrid=.1 .1,incolor=yellow!50,linewidth=0.01](-2.5,-2.5)(2.5,2.5){2*(x^2-2*y^2)*Euler^(-2*x^2-y^2)}
\end{pspicture}
\end{document}

20 juillet 2018 : Le package a été déposé sur le serveur du CTAN :









mardi 10 juillet 2018

Champs magnétiques créés par des fils parallèles

Il s'est agit de représenter la topographie des lignes du champ magnétique généré par des fils rectilignes parallèles parcourus par des courants d’intensité constante de valeurs et de sens identiques ou différents.
Schématiquement, cette représentation utilisera surtout le package "pst-contourplot",mais dans un cas plus simple (deux fils parcourus par des courants identiques et sens contraire), les commandes de base de PSTricks suffisent.
Au-delà des moyens utilisés pour représenter les lignes de champ, il est intéressant est de constater que la topographie de ces lignes est celle de courbes étudiées bien avant l’élaboration des lois de l’électromagnétisme : on retrouve en effet les ovales de Cassini (et le lemniscate de Bernouilli) dans le cas de deux fils parcourus par des courants identiques et de même sens, dans le cas de plusieurs fils on a des cassiniennes et par exemple, les cercles d’Apollonius lorsque deux fils sont parcourus par des courants identiques et sens contraire.
L’étude théorique permettant d’établir l’équation des lignes de champ ainsi que la généralisation aux cas de n conducteurs parcourus par des courants de sens et de d’intensité différents sont dues à Patrice Mégret, que je remercie chaleureusement de sa contribution.
Les fichiers sources et pdf sont dans le répertoire :
le fichier zippé contient tous les fichiers avec ceux du package pst-contourplot. Cette version n'est pas compatible avec la précédente. J'ai prévu de mettre à jour une nouvelle documentation ainsi que les exemples précédemment publiés.
Voici les images extraites du document :
2 fils parcourus par des courants de même intensité et sens :



L'intensité de l'un est le double de l'autre :
3 fils parcourus par des courants de même intensité et sens :

 Les 4 fils sont parcourus par des courant de même intensité mais dont le sens change d’un conducteur au suivant :
Fils parallèles passant par les sommets d’un hexagone :
3 fils alignés, le courant qui passe par le fil du milieu est de sens contraire aux deux autres :
Deux fils parallèles parcourus par des courants de même intensité et de sens contraire :
Un exemple montrant comment utiliser pst-contourplot pour dessiner et orienter les lignes du champ
magnétique créées par des fils parallèles parcourus par des courants de sens et d’intensité différents.
Les explications sont dans le fichier (five-parallel-wires.tex et five-parallel-wires.pdf). Tous les fichiers sont dans le répertoire :
Le ficher zippé contient tous les fichiers.
 En voici une image :