mardi 6 mai 2014

Intersection de courbes avec pst-eucl

Je me permets de donner la réponse de Thomas Söll à une question posée par Scott Randy(qui a par ailleurs donné lui-même une solution à sa question) dans le forum dédié à PSTricks :

http://www.tug.org/pipermail/pstricks/2014/010333.html

Cette solution utilise une possibilité  avec la commande "\pstInterFF" de pst-eucl, le package de Dominique RODRIGUEZ dédié aux constructions géométriques dans le plan, qui est de pouvoir chercher les intersections de deux courbes quelconques --pourvu, bien sûr, qu'elles soient définies par une équation. L'algorithme de Newton est utilisé pour la recherche et celle-ci peut être limitée autour d'un extremum local proche du zéro cherché.




Voici le code envoyé par Thomas Söll :

http://www.tug.org/pipermail/pstricks/2014/010334.html

Que je recopie ci-dessous :

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot,pst-eucl}

\begin{document}

\begin{pspicture}[showgrid=false,saveNodeCoors](-1,-1)(10,6)
\psset{xunit=2 ,yunit=0.6}
\psset{algebraic,plotstyle=curve}
%
\def\xE{4}
%
\definecolor{SuperLightBlue}{cmyk}{0.2,0,0,0}
\pstInterFF[dotscale=0.6]{0.25*x^2+1}{0.5*(x-4)^2}{3}{S}
%
\pscustom[fillstyle=solid,fillcolor=SuperLightBlue,linestyle=none]{%
      \psplot{0}{N-S.x}{0.25*x^2+1}
      \psline(*{N-S.x} {0.25*x^2+1})(0,0|*{N-S.x} {0.25*x^2+1})
      \closepath
}
\pscustom[fillstyle=solid,fillcolor=green!10,linestyle=none]{%
      \psplot{0}{N-S.x}{0.5*(x-4)^2}
      \psline(*{N-S.x} {0.5*(x-4)^2})(0,0|*{N-S.x} {0.5*(x-4)^2})
      \closepath
}
\pscustom[fillstyle=solid,fillcolor=yellow!40,linestyle=none]{%
      \psplot{N-S.x}{4}{0.25*x^2+1}
      \lineto(*{\xE} {0.5*(x-4)^2})
      \psplot{\xE}{N-S.x}{0.5*(x-4)^2}
      \closepath
}
\pscustom[fillstyle=solid,fillcolor=orange!40,linestyle=none]{%
      \psplot{0}{N-S.x}{0.25*x^2+1}
      \psplot{N-S.x}{\xE}{0.5*(x-4)^2}
      \lineto(\xE,0)
      \lineto(0,0)
      \closepath
}
\pscustom[fillstyle=solid,fillcolor=magenta!10,linestyle=none]{%
      \psplot{0}{N-S.x}{0.5*(x-4)^2}
      \psplot{N-S.x}{\xE}{0.25*x^2+1}
      \lineto(\xE,0|*{0} {0.5*(x-4)^2})
      \closepath
}
%
\psaxes[labels=none, ticks=none, linewidth=0.25pt](0,0)(4.5,8.25)%
[\footnotesize $q$ \textsf{(quantity)},90]%
[\footnotesize $p$ \textsf{(price/unit)},90]
%
\psplot[linecolor=blue]{0}{4}{0.5*(x-4)^2}
\psplot[linecolor=blue]{0}{4}{0.25*x^2+1}
%
\psline[linestyle=dotted](2,0)(2,2)
\psline[linestyle=dotted](0,2)(2,2)
%
\rput(1.3,6.25){\rnode{A}{\footnotesize \textsf{Producer Surplus}}}
\pnode(0.5,1.35){B}
\nccurve[angleA=180, angleB=135]{->}{A}{B}
%
\rput[r](-0.05,1){\footnotesize $p_0$}
\rput[r](-0.05,2){\footnotesize $p*$}
\rput[r](-0.05,8){\footnotesize $p_1$}
\rput[t](2,-0.1){\footnotesize $q*$}
\rput[t](4,-0.1){\footnotesize $q_1$}
\rput(3.3,3){\footnotesize \textsf{Supply}}
\rput(1.5,4.25){\footnotesize\textsf{Demand}}
\end{pspicture}

\end{document}

Aucun commentaire:

Enregistrer un commentaire