%% $Id: pst-func-doc.tex 72 2009-01-08 22:00:47Z herbert $ \documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings headexclude,footexclude,oneside]{pst-doc} \usepackage[utf8]{inputenc} \usepackage{pst-math} \let\pstMathFV\fileversion \usepackage{pstricks-add} \usepackage[baw,pstricks]{fvrb-ex} \lstset{pos=t,wide=true,language=PSTricks, morekeywords={psGammaDist,psChiIIDist,psTDist,psFDist,psBetaDist,psPlotImpl},basicstyle=\footnotesize\ttfamily} % \def\pshlabel#1{\footnotesize#1} \def\psvlabel#1{\footnotesize#1} % \makeatletter \def\DefOfOperator{\@ifstar{\DefOfOperator@}{\DefOfOperator@@}} \def\DefOfOperator@#1#2#3#4{{\operator@font#1}:\left\{\begin{array}{ccc} #2&\to\\ x&\mapsto\end{array}\right.} \def\DefOfOperator@@#1#2#3{{\operator@font#1}:\left\{\begin{array}{ccc} #2&\to\\ x&\mapsto&{\operator@font#1}(x)\end{array}\right.} \makeatother \begin{document} \title{\texttt{pst-math}} \subtitle{Special mathematical PostScript functions; v.\pstMathFV} \author{Christoph Jorssen\\Herbert Vo\ss} \docauthor{Christoph Jorssen\\Herbert Vo\ss} \date{\today} \maketitle \tableofcontents \clearpage \begin{abstract} \noindent \LPack{pst-math} is an extension to the PostScript language. The files \LFile{pst-math.sty} and \LFile{pst-math.tex} are only wrapper files for the \LFile{pst-math.pro} file, which defines all the new mathgematical functions for use with PostScript. \vfill\noindent Thanks to: \\ Jacques L'helgoualc'h; Dominik Rodriguez \end{abstract} \section{Trigonometry} \LPack{pst-math} introduces natural trigonometric postscript operators COS, SIN and TAN defined by \[\DefOfOperator{cos}{\mathbb R}{[-1,1]}\] \[\DefOfOperator{sin}{\mathbb R}{[-1,1]}\] \[\DefOfOperator{tan}{\mathbb R\backslash\{k\frac{\pi}2,k\in\mathbb Z\}}{\mathbb R}\] where $x$ is in \emph{radians}. TAN does \emph{not} produce PS error\footnote{TAN is defined with Div PSTricks operator rather than with div PS operator.} when $x=k\frac{pi}{2}$. \begin{center} \begin{tabular}{@{} >{\sffamily}l l >{\sffamily}l l @{} } \emph{Stack} & \emph{Operator} & \emph{Result} & \emph{Description} \\\hline num & \Lps{COS} & real & Return \Index{cosine} of \textsf{num} radians \\ num & \Lps{SIN} & real & Return \Index{sine} of \textsf{num} radians \\ num & \Lps{TAN} & real & Return \Index{tangent} of \textsf{num} radians\\\hline \end{tabular} \end{center} \begin{LTXexample}[pos=t,wide=false] \begin{pspicture}*(-5,-2)(5,2) \SpecialCoor % For label positionning \psaxes[labels=y,Dx=\pstPI2]{->}(0,0)(-5,-2)(5,2) \uput[-90](!PI 0){$\pi$} \uput[-90](!PI neg 0){$-\pi$} \uput[-90](!PI 2 div 0){$\frac{\pi}2$} \uput[-90](!PI 2 div neg 0){$-\frac{\pi}2$} \psplot[linewidth=1.5pt,linecolor=blue]{-5}{5}{x COS} \psplot[linewidth=1.5pt,linecolor=red]{-5}{5}{x SIN} \psplot[linewidth=1.5pt,linecolor=green]{-5}{5}{x TAN} \end{pspicture} \end{LTXexample} \LPack{pst-math} introduces natural trigonometric postscript operators \Lps{ACOS}, \Lps{ASIN} and \Lps{ATAN} defined by \[\DefOfOperator{acos}{[-1,1]}{[0,\pi]}\] \[\DefOfOperator{asin}{[-1,1]}{[-\frac{\pi}2,\frac{\pi}2]}\] \[\DefOfOperator{atan}{\mathbb R}{]-\frac{\pi}2,\frac{\pi}2[}\] \begin{center} \begin{tabular}{@{} >{\sffamily}l l >{\sffamily}l l @{} } \emph{Stack} & \emph{Operator} & \emph{Result} & \emph{Description} \\\hline num & \Lps{ACOS} & angle & Return \Index{arccosine} of \textsf{num} in radians \\ num & \Lps{ASIN} & angle & Return \Index{arcsine} of \textsf{num} in radians \\ num & \Lps{ATAN} & angle & Return \Index{arctangent} of \textsf{num} in radians \\\hline \end{tabular} \end{center} \medskip\noindent \begin{tabularx}{\linewidth}{!{\vrule width3pt}X} \Lps{ATAN} is \emph{not} defined as PS operator \Lps{atan}. \Lps{ATAN} needs only \emph{one} argument on the stack. \end{tabularx} \begin{LTXexample}[pos=t,wide=false] \begin{pspicture}(-5,-2)(5,4) \SpecialCoor % For label positionning \psaxes[labels=x,Dy=\pstPI2]{->}(0,0)(-5,-2)(5,4) \uput[0](!0 PI){$\pi$} \uput[0](!0 PI 2 div){$\frac{\pi}2$} \uput[0](!0 PI 2 div neg){$-\frac{\pi}2$} \psplot[linewidth=1.5pt,linecolor=blue]{-1}{1}{x ACOS} \psplot[linecolor=red]{-1}{1}{x ASIN} \psplot[linewidth=1.5pt,linecolor=green]{-5}{5}{x ATAN} \end{pspicture} \end{LTXexample} \section{Hyperbolic trigonometry} \LPack{pst-math} introduces hyperbolic trigonometric postscript operators \Lps{COSH}, \Lps{SINH} and \Lps{TANH} defined by \[\DefOfOperator{cosh}{\mathbb R}{[1,+\infty[}\] \[\DefOfOperator{sinh}{\mathbb R}{\mathbb R}\] \[\DefOfOperator{tanh}{\mathbb R}{]-1,1[}\] \begin{center} \begin{tabular}{@{} >{\sffamily}l l >{\sffamily}l l @{} } \emph{Stack} & \emph{Operator} & \emph{Result} & \emph{Description} \\\hline num & \Lps{COSH} & real & Return \Index{hyperbolic cosine} of \textsf{num} \\ num & \Lps{SINH} & real & Return \Index{hyperbolic sine} of \textsf{num} \\ num & \Lps{TANH} & real & Return \Index{hyperbolic tangent} of \textsf{num}\\\hline \end{tabular} \end{center} \begin{LTXexample}[pos=t,wide=false] \begin{pspicture}*(-5,-5)(5,5) \psaxes{->}(0,0)(-5,-5)(5,5) \psplot[linewidth=1.5pt,linecolor=blue]{-5}{5}{x COSH} \psplot[linewidth=1.5pt,linecolor=red]{-5}{5}{x SINH} \psplot[linewidth=1.5pt,linecolor=green]{-5}{5}{x TANH} \end{pspicture} \end{LTXexample} \LPack{pst-math} introduces reciprocal hyperbolic trigonometric postscript operators \Lps{ACOSH}, \Lps{ASINH} and \Lps{ATANH} defined by \[\DefOfOperator{acosh}{[1,+\infty[}{\mathbb R}\] \[\DefOfOperator{asinh}{\mathbb R}{\mathbb R}\] \[\DefOfOperator{atanh}{]-1,1[}{\mathbb R}\] \begin{center} \begin{tabular}{@{} >{\sffamily}l l >{\sffamily}l l @{} } \emph{Stack} & \emph{Operator} & \emph{Result} & \emph{Description} \\\hline num & \Lps{ACOSH} & real & Return \Index{reciprocal hyperbolic cosine} of \textsf{num} \\ num & \Lps{ASINH} & real & Return \Index{reciprocal hyperbolic sine} of \textsf{num} \\ num & \Lps{ATANH} & real & Return \Index{reciprocal hyperbolic tangent} of \textsf{num}\\\hline \end{tabular} \end{center} \begin{LTXexample}[pos=t,wide=false] \begin{pspicture}(-5,-4)(5,4) \psaxes{->}(0,0)(-5,-4)(5,4) \psplot[linewidth=1.5pt,linecolor=blue]{1}{5}{x ACOSH} \psplot[linewidth=1.5pt,linecolor=red]{-5}{5}{x ASINH} \psplot[linewidth=1.5pt,linecolor=green]{-.999}{.999}{x ATANH} \end{pspicture} \end{LTXexample} \section{Other operators} \LPack{pst-math} introduces postscript operator EXP defined by \[\DefOfOperator{exp}{\mathbb R}{\mathbb R}\] \begin{center} \begin{tabular}{@{} >{\sffamily}l l >{\sffamily}l l @{} } \emph{Stack} & \emph{Operator} & \emph{Result} & \emph{Description} \\\hline num & \Lps{EXP} & real & Return \Index{exponential} of \textsf{num}\\\hline \end{tabular} \end{center} \begin{LTXexample}[pos=t,wide=false] \begin{pspicture}*(-5,-1)(5,5) \psaxes{->}(0,0)(-5,-0.5)(5,5) \psplot[linecolor=blue,linewidth=1.5pt,plotpoints=1000]{-5}{5}{x EXP} \end{pspicture} \end{LTXexample} \LPack{pst-math} introduces postscript operator \Lps{GAUSS} defined by \[\DefOfOperator*{gauss}{\mathbb R}{\mathbb R}{\displaystyle\frac{1}{\sqrt{2\pi\sigma^2}}\exp-\frac{(x-\overline x)^2}{2\sigma^2}}\] \begin{center} \begin{tabularx}{\linewidth}{@{} >{\sffamily}l l >{\sffamily}l X @{} } \emph{Stack} & \emph{Operator} & \emph{Result} & \emph{Description} \\\hline num1 num2 num3 & \Lps{GAUSS} & real & Return gaussian of \textsf{num1} with mean \textsf{num2} and \Index{standard deviation} \textsf{num3}\\\hline \end{tabularx} \end{center} \begin{LTXexample}[pos=t,wide=false] \psset{yunit=5} \begin{pspicture}(-5,-.1)(5,1.1) \psaxes{->}(0,0)(-5,-.1)(5,1.1) \psplot[linecolor=blue,linewidth=1.5pt,plotpoints=1000]{-5}{5}{x 2 2 GAUSS} \psplot[linecolor=red,linewidth=1.5pt,plotpoints=1000]{-5}{5}{x 0 .5 GAUSS} \end{pspicture} \end{LTXexample} \LPack{pst-math} introduces postscript operator \Index{SINC} defined by \[\DefOfOperator*{sinc}{\mathbb R}{\mathbb R}{\displaystyle\frac{\sin x}x}\] \begin{center} \begin{tabular}{@{} >{\sffamily}l l >{\sffamily}l l @{} } \emph{Stack} & \emph{Operator} & \emph{Result} & \emph{Description} \\\hline num & \Lps{SINC} & real & Return \Index{cardinal sine} of \textsf{num} radians\\\hline \end{tabular} \end{center} \begin{LTXexample}[pos=t,wide=false] \psset{xunit=.25,yunit=3} \begin{pspicture}(-20,-.5)(20,1.5) \SpecialCoor % For label positionning \psaxes[labels=y,Dx=\pstPI1]{->}(0,0)(-20,-.5)(20,1.5) \uput[-90](!PI 0){$\pi$} \uput[-90](!PI neg 0){$-\pi$} \psplot[linecolor=blue,linewidth=1.5pt,plotpoints=1000]{-20}{20}{x SINC} \end{pspicture} \end{LTXexample} \LPack{pst-math} introduces postscript operator \Lps{GAMMA} and \Lps{GAMMALN} defined by \[\DefOfOperator*{\Gamma}{\mathbb{R} \backslash\mathbb{Z}}{\mathbb R}{\displaystyle\int_0^\infty t^{x-1}\mathrm e^{-t}\,\mathrm d t}\] \[\DefOfOperator*{\ln\Gamma}{]0,+\infty[}{\mathbb R}{\ln\displaystyle\int_0^t t^{x-1}\mathrm e^{-t}\,\mathrm d t}\] \begin{center} \begin{tabular}{@{} >{\sffamily}l l >{\sffamily}l l @{} } \emph{Stack} & \emph{Operator} & \emph{Result} & \emph{Description} \\\hline num & \Lps{GAMMA} & real & Return $\Gamma$\index{Gamma func@$\Gamma$ function} function of \textsf{num}\\ num & \Lps{GAMMALN} & real & Return \Index{logarithm} of $\Gamma$ function of \textsf{num}\\\hline \end{tabular} \end{center} \begin{LTXexample}[pos=t,wide=false] \begin{pspicture*}(-.5,-.5)(6.2,6.2) \psaxes{->}(0,0)(-.5,-.5)(6,6) \psplot[linecolor=blue,linewidth=1.5pt,plotpoints=200]{.1}{6}{x GAMMA} \psplot[linecolor=red,linewidth=1.5pt,plotpoints=200]{.1}{6}{x GAMMALN} \end{pspicture*} \end{LTXexample} \begin{LTXexample}[pos=t,wide=false] \psset{xunit=.25,yunit=3} \begin{pspicture}(-20,-.5)(20,1.5) \psaxes[Dx=5,Dy=.5]{->}(0,0)(-20,-.5)(20,1.5) \psplot[linecolor=blue,linewidth=1.5pt,plotpoints=1000]{-20}{20}{x BESSEL_J0} \psplot[linecolor=red,linewidth=1.5pt,plotpoints=1000]{-20}{20}{x BESSEL_J1} \end{pspicture} \end{LTXexample} \begin{LTXexample}[pos=t,wide=false] \psset{xunit=.5,yunit=3} \begin{pspicture}*(-1.5,-.75)(19,1.5) \psaxes[Dx=5,Dy=.5]{->}(0,0)(-1,-.75)(19,1.5) \psplot[linecolor=blue,linewidth=1.5pt,plotpoints=1000]{0.0001}{20}{x BESSEL_Y0} \psplot[linecolor=red,linewidth=1.5pt,plotpoints=1000]{0.0001}{20}{x BESSEL_Y1} %\psplot[linecolor=green,plotpoints=1000]{0.0001}{20}{x 2 BESSEL_Yn} \end{pspicture} \end{LTXexample} \section{Numerical integration} \begin{center} \begin{tabular}{@{} >{\sffamily}l l >{\sffamily}l l @{} } \emph{Stack} & \emph{Operator} & \emph{Result} & \emph{Description} \\\hline num num /var $\lbrace$ function $\rbrace$ num & \Lps{SIMPSON} & real & Return $\displaystyle\int\limits_a^b f(t)\mathrm{d}t$ \end{tabular} \end{center} %a b var f Ierr the first two variables are the low and high boundary integral, both can be values or \PS\ expressions. \verb+/var+ is the definition of the integrated variable (not x!), which is used in the following function description, which must be inside of braces. The last number is the tolerance for the step adjustment. The function \Lps{SIMPSON} can be nested. \begin{LTXexample}[pos=t,wide=false] \psset{xunit=.75} \begin{pspicture*}[showgrid=true](-0.4,-3.4)(10,3) \psplot[linestyle=dashed,linewidth=1.5pt]{.1}{10}{1 x div} \psplot[linecolor=red,linewidth=1.5pt]{.1}{10}{ 1 % start x % end /t % variable { 1 t div } % function .001 % tolerance SIMPSON } % \psplot[linecolor=blue,linewidth=1.5pt]{.1}{10}{1 x /t { 1 t div } 1 SIMPSON } \end{pspicture*} \end{LTXexample} \begin{LTXexample}[pos=t,wide=false] %%% Gaussian and relative integral from -x to x to its value sqrt{pi} \psset{unit=2} \begin{pspicture}[showgrid=true](-3,-1)(3,1) \psplot[linecolor=red,linewidth=1.5pt]{-3}{3}{Euler x dup mul neg exp } \psplot[linecolor=green,linewidth=1.5pt]{-3}{3} { x neg x /t { Euler t dup mul neg exp } .001 SIMPSON Pi sqrt div} \end{pspicture} \end{LTXexample} \psset{unit=1.75cm} %%% successive polynomial developments of sine-cosine \begin{pspicture}[showgrid=true](-3,-2)(3,2) \psaxes{->}(0,0)(-3,-2)(3,2) \psset{linewidth=1.5pt} \psplot[linecolor=green, algebraic=false, plotpoints=61, showpoints=true] {-3}{3}{0 x /tutu {1 0 tutu /toto { toto } .1 SIMPSON sub} .01 SIMPSON } \psplot[linecolor=blue, algebraic=false, plotpoints=61, showpoints=true] {-3}{3}{1 0 x /tata {0 tata /tutu {1 0 tutu /toto { toto } .1 SIMPSON sub} .01 SIMPSON } .01 SIMPSON sub} \psplot[linecolor=yellow, algebraic=false, plotpoints=61, showpoints=true] {-3}{3}{0 x /titi {1 0 titi /tata {0 tata /tutu {1 0 tutu /toto { toto } .1 SIMPSON sub} .01 SIMPSON } .01 SIMPSON sub} .01 SIMPSON } \psplot[linecolor=red, algebraic=false, plotpoints=61, showpoints=true] {-3}{3}{1 0 x /tyty {0 tyty /titi {1 0 titi /tata {0 tata /tutu {1 0 tutu /toto { toto } .1 SIMPSON sub} .01 SIMPSON } .01 SIMPSON sub} .01 SIMPSON } .01 SIMPSON sub} \psplot[linecolor=magenta, algebraic=false, plotpoints=61, showpoints=true] {-3}{3}{0 x /tete {1 0 tete /tyty {0 tyty /titi {1 0 titi /tata {0 tata /tutu {1 0 tutu /toto { toto } .1 SIMPSON sub} .01 SIMPSON } .01 SIMPSON sub} .01 SIMPSON } .01 SIMPSON sub} .01 SIMPSON }%%% FIVE nested calls \end{pspicture} \psset{unit=1cm} \begin{lstlisting} \psset{unit=1.75cm} %%% successive polynomial developments of sine-cosine \begin{pspicture}[showgrid=true](-3,-2)(3,2) \psaxes{->}(0,0)(-3,-2)(3,2) \psplot[linecolor=green, algebraic=false, plotpoints=61, showpoints=true] {-3}{3}{0 x /tutu {1 0 tutu /toto { toto } .1 SIMPSON sub} .01 SIMPSON } \psplot[linecolor=blue, algebraic=false, plotpoints=61, showpoints=true] {-3}{3}{1 0 x /tata {0 tata /tutu {1 0 tutu /toto { toto } .1 SIMPSON sub} .01 SIMPSON } .01 SIMPSON sub} \psplot[linecolor=yellow, algebraic=false, plotpoints=61, showpoints=true] {-3}{3}{0 x /titi {1 0 titi /tata {0 tata /tutu {1 0 tutu /toto { toto } .1 SIMPSON sub} .01 SIMPSON } .01 SIMPSON sub} .01 SIMPSON } \psplot[linecolor=red, algebraic=false, plotpoints=61, showpoints=true] {-3}{3}{1 0 x /tyty {0 tyty /titi {1 0 titi /tata {0 tata /tutu {1 0 tutu /toto { toto } .1 SIMPSON sub} .01 SIMPSON } .01 SIMPSON sub} .01 SIMPSON } .01 SIMPSON sub} \psplot[linecolor=magenta, algebraic=false, plotpoints=61, showpoints=true] {-3}{3}{0 x /tete {1 0 tete /tyty {0 tyty /titi {1 0 titi /tata {0 tata /tutu {1 0 tutu /toto { toto } .1 SIMPSON sub} .01 SIMPSON } .01 SIMPSON sub} .01 SIMPSON } .01 SIMPSON sub} .01 SIMPSON }%%% FIVE nested calls \end{pspicture} \end{lstlisting} \begin{LTXexample}[pos=t,wide=false] % ce code definit la fonction [cos(2pix cos(t))-cos(2pix)]^2 / sin(t) avec x=h/lambda \def\F{ 0.01 3.1 /t { TwoPi x mul t COS mul COS TwoPi x mul COS sub 2 exp t SIN div } .01 SIMPSON 60 mul } % D = 2*(cos^2(2pix))/F \def\fD{TwoPi x mul COS dup mul 2 mul \F\space div} \psset{llx=-1.5cm,lly=-0.5cm,urx=0.2cm,ury=0.2cm, xAxisLabel={$h/\lambda$},xAxisLabelPos={0.5,-45},yAxisLabel={$R_r$ en ohms}, yAxisLabelPos={-0.1,150}} \begin{psgraph}[Dy=50,Dx=0.1,xticksize=300 0,yticksize=1 0, comma=true,axesstyle=frame](0,0)(1,300){10cm}{5cm} \psplot{0}{1}{\F} \psplot[linecolor=red]{0.01}{.1}{\fD}% \end{psgraph} \end{LTXexample} \bgroup \raggedright \nocite{*} \bibliographystyle{plain} \bibliography{pst-math-doc} \egroup \printindex \end{document}