\documentclass[fleqn,10pt]{article} \usepackage{multicol} \usepackage[a4paper,margin=1.5cm,includeheadfoot]{geometry} \usepackage{fancyhdr} \usepackage[baw,pstricks]{fvrb-ex} \usepackage{pstricks} \usepackage{pst-math,pst-plot} \usepackage{amsmath,amssymb} \makeatletter \renewcommand{\Begin@Example}{% \parindent=0pt \multiply\topsep by 2 \VerbatimEnvironment \begin{VerbatimOut}[codes={\catcode`\£=12\catcode`\/=12\catcode`\&=12% \catcode`\"=12}]{\jobname.tmp}} \renewcommand{\Below@Example}[1]{% \VerbatimInput[gobble=0,commentchar=£,commandchars=/&",numbersep=3pt]% {\jobname.tmp} \catcode`\£=9\relax% \NoHighlight@Attributes % To suppress possible highlighting \ifFvrbEx@Grid\vspace{5pt}\fi #1% \ifFvrbEx@Grid\vspace{5pt}\fi \par} \renewcommand{\SideBySide@Example}[1]{% \@tempdimb=\FV@XRightMargin \advance\@tempdimb -5mm \begin{minipage}[c]{\@tempdimb} \fvset{xrightmargin=0pt} \catcode`\£=9\relax% \NoHighlight@Attributes % To suppress possible highlighting #1 \end{minipage}% \@tempdimb=\textwidth \advance\@tempdimb -\FV@XRightMargin \advance\@tempdimb 5mm \begin{minipage}[c]{\@tempdimb} \VerbatimInput[gobble=0,commentchar=£,commandchars=/&",numbersep=3pt, xleftmargin=5mm,xrightmargin=0pt]{\jobname.tmp} \end{minipage}} % The \NoHighlight@Attributes from `hbaw' and `hcolors' packages % must be modified too \def\NoHighlight@Attributes{% \catcode`\/=0\relax% \catcode`\&=1\relax% \catcode`\"=2\relax% \def\HLa##1{##1}% \def\HLb##1{##1}% \def\HLc##1{##1}% \def\HLd##1{##1}% \def\HLe##1{##1}% \def\HLf##1{##1}% \def\HLBFa##1{##1}% \def\HLBFb##1{##1}% \def\HLBFc##1{##1}% \def\HLBFd##1{##1}% \def\HLBFe##1{##1}% \def\HLBFf##1{##1}% \def\HLITa##1{##1}% \def\HLITb##1{##1}% \def\HLITc##1{##1}% \def\HLITd##1{##1}% \def\HLITe##1{##1}% \def\HLITf##1{##1}% \def\HLCBBa##1{##1}% \def\HLCBBb##1{##1}% \def\HLCBBc##1{##1}% \def\HLCBBd##1{##1}% \def\HLCBBe##1{##1}% \def\HLCBBf##1{##1}% \def\HLCBBz##1{##1}% \def\HLCBWa##1{##1}% \def\HLCBWb##1{##1}% \def\HLCBWc##1{##1}% \def\HLCBWd##1{##1}% \def\HLCBWe##1{##1}% \def\HLCBWf##1{##1}% \def\HLCBWz##1{##1}% } \makeatother \fvset{numbers=none,frame=single,labelposition=topline,gobble=4} \DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} \newcommand{\MathPackage}{\textbf{`pst-math'}} \lhead{\MathPackage}\rhead{A PSTricks package for enhancing mathematical operators in PSTricks} \pagestyle{fancy} \psset{subgriddiv=1,griddots=10}% \showgrid \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{\MathPackage\\ A PSTricks package for enhancing mathematical operators in PSTricks\\ \normalsize ver. 0.3} \author{Christophe \textsc{Jorssen} \texttt{}\\ \footnotesize `libre' is the french word for `free'} \date{\today} \maketitle \setlength{\columnseprule}{0.6pt} \begin{multicols}{2} {\parskip 0pt \tableofcontents} \end{multicols} \section{Trigonometry} \MathPackage{} 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}{c|c|c|c} \textbf{Stack} & \textbf{Operator} & \textbf{Result} & \textbf{Description} \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{COS}} & \textsf{\textsl{real}} & Return cosine of \textsf{\textsl{num}} radians \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{SIN}} & \textsf{\textsl{real}} & Return sine of \textsf{\textsl{num}} radians \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{TAN}} & \textsf{\textsl{real}} & Return tangent of \textsf{\textsl{num}} radians \end{tabular} \end{center} \begin{SideBySideExample}[xrightmargin=10.5cm] \begin{pspicture}*(-5,-2)(5,2) \SpecialCoor % For label positionning \psaxes[labels=y,Dx=/HLCBWz&\pstPI2"]{->}% (0,0)(-5,-2)(5,2) \uput[-90](!/HLCBWz&PI" 0){$\pi$} \uput[-90](!/HLCBWz&PI" neg 0){$-\pi$} \uput[-90](!/HLCBWz&PI" 2 div 0){$\frac{\pi}2$} \uput[-90](!/HLCBWz&PI" 2 div neg 0)% {$-\frac{\pi}2$} \psplot[linecolor=blue]{-5}{5}{x /HLCBWz&COS"} \psplot[linecolor=red]{-5}{5}{x /HLCBWz&SIN"} \psplot[linecolor=green]{-5}{5}{x /HLCBWz&TAN"} \end{pspicture} \end{SideBySideExample} \MathPackage{} introduces natural trigonometric postscript operators SEC, COSEC and COTAN defined by \[\DefOfOperator{sec}{% \mathbb R\backslash\{k\frac{\pi}{2},k\in\mathbb{Z}\}}{]-\infty,-1]\bigcup [1,+\infty[}\] \[\DefOfOperator{cosec}% {\mathbb R\backslash\{k\pi,k\in\mathbb Z\}}{]-\infty,-1]\bigcup [1,+\infty[}\] \[\DefOfOperator{cotan}% {\mathbb R\backslash\{k\pi,k\in\mathbb Z\}}{\mathbb R}\] where $x$ is in \emph{radians}. \begin{center} \begin{tabular}{c|c|c|c} \textbf{Stack} & \textbf{Operator} & \textbf{Result} & \textbf{Description} \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{SEC}} & \textsf{\textsl{real}} & Return secant of \textsf{\textsl{num}} radians \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{COSEC}} & \textsf{\textsl{real}} & Return cosecant of \textsf{\textsl{num}} radians \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{COTAN}} & \textsf{\textsl{real}} & Return cotangent of \textsf{\textsl{num}} radians \end{tabular} \end{center} \begin{SideBySideExample}[xrightmargin=10.5cm] \begin{pspicture}*(-5,-2)(5,2) \SpecialCoor % For label positionning \psaxes[labels=y,Dx=/HLCBWz&\pstPI2"]{->}% (0,0)(-5,-2)(5,2) \uput[-90](!/HLCBWz&PI" 0){$\pi$} \uput[-90](!/HLCBWz&PI" neg 0){$-\pi$} \uput[-90](!/HLCBWz&PI" 2 div 0)% {$\frac{\pi}{2}$} \uput[-90](!/HLCBWz&PI" 2 div neg 0)% {$-\frac{\pi}{2}$} \psplot[linecolor=blue]{-5}{5}{x /HLCBWz&SEC"} \psplot[linecolor=red]{-5}{5}{x /HLCBWz&COSEC"} \psplot[linecolor=green]{-5}{5}{x /HLCBWz&COTAN"} \end{pspicture} \end{SideBySideExample} \MathPackage{} introduces natural trigonometric postscript operators ACOS, ASIN and 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}{c|c|c|c} \textbf{Stack} & \textbf{Operator} & \textbf{Result} & \textbf{Description} \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{ACOS}} & \textsf{\textsl{angle}} & Return arccosine of \textsf{\textsl{num}} in radians \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{ASIN}} & \textsf{\textsl{angle}} & Return arcsine of \textsf{\textsl{num}} in radians \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{ATAN}} & \textsf{\textsl{angle}} & Return arctangent of \textsf{\textsl{num}} in radians \\ \end{tabular} \end{center} \textbf{Important :} ATAN is \emph{not} defined as PS operator atan. ATAN needs only \emph{one} argument on the stack. \begin{SideBySideExample}[xrightmargin=10.5cm] \begin{pspicture}(-5,-2)(5,4) \SpecialCoor % For label positionning \psaxes[labels=x,Dy=/HLCBWz&\pstPI2"]{->}% (0,0)(-5,-2)(5,4) \uput[0](!0 /HLCBWz&PI"){$\pi$} \uput[0](!0 /HLCBWz&PI" 2 div){$\frac{\pi}2$} \uput[0](!0 /HLCBWz&PI" 2 div neg)% {$-\frac{\pi}2$} \psplot[linecolor=blue]{-1}{1}% {x /HLCBWz&ACOS"} \psplot[linecolor=red]{-1}{1}% {x /HLCBWz&ASIN"} \psplot[linecolor=green]{-5}{5}% {x /HLCBWz&ATAN"} \end{pspicture} \end{SideBySideExample} \section{Hyperbolic trigonometry} \MathPackage{} introduces hyperbolic trigonometric postscript operators COSH, SINH and 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}{c|c|c|c} \textbf{Stack} & \textbf{Operator} & \textbf{Result} & \textbf{Description} \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{COSH}} & \textsf{\textsl{real}} & Return hyperbolic cosine of \textsf{\textsl{num}} \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{SINH}} & \textsf{\textsl{real}} & Return hyperbolic sine of \textsf{\textsl{num}} \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{TANH}} & \textsf{\textsl{real}} & Return hyperbolic tangent of \textsf{\textsl{num}} \end{tabular} \end{center} \begin{SideBySideExample}[xrightmargin=10.5cm] \begin{pspicture}*(-5,-5)(5,5) \psaxes{->}(0,0)(-5,-5)(5,5) \psplot[linecolor=blue]{-5}{5}{x /HLCBWz&COSH"} \psplot[linecolor=red]{-5}{5}{x /HLCBWz&SINH"} \psplot[linecolor=green]{-5}{5}{x /HLCBWz&TANH"} \end{pspicture} \end{SideBySideExample} \MathPackage{} introduces reciprocal hyperbolic trigonometric postscript operators ACOSH, ASINH and 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}{c|c|c|c} \textbf{Stack} & \textbf{Operator} & \textbf{Result} & \textbf{Description} \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{ACOSH}} & \textsf{\textsl{real}} & Return reciprocal hyperbolic cosine of \textsf{\textsl{num}} \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{ASINH}} & \textsf{\textsl{real}} & Return reciprocal hyperbolic sine of \textsf{\textsl{num}} \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{ATANH}} & \textsf{\textsl{real}} & Return reciprocal hyperbolic tangent of \textsf{\textsl{num}} \end{tabular} \end{center} \begin{SideBySideExample}[xrightmargin=10.5cm] \begin{pspicture}(-5,-4)(5,4) \psaxes{->}(0,0)(-5,-4)(5,4) \psplot[linecolor=blue]{1}{5}% {x /HLCBWz&ACOSH"} \psplot[linecolor=red]{-5}{5}% {x /HLCBWz&ASINH"} \psplot[linecolor=green]{-.999}{.999}% {x /HLCBWz&ATANH"} \end{pspicture} \end{SideBySideExample} \section{Other operators} \MathPackage{} introduces postscript operator EXP defined by \[\DefOfOperator{exp}{\mathbb R}{\mathbb R}\] \begin{center} \begin{tabular}{c|c|c|c} \textbf{Stack} & \textbf{Operator} & \textbf{Result} & \textbf{Description} \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{EXP}} & \textsf{\textsl{real}} & Return exponential of \textsf{\textsl{num}} \end{tabular} \end{center} \begin{SideBySideExample}[xrightmargin=10.5cm] \begin{pspicture}*(-5,-1)(5,5) \psaxes{->}(0,0)(-5,-0.5)(5,5) \psplot[linecolor=blue, plotpoints=1000]{-5}{5}{x /HLCBWz&EXP"} \end{pspicture} \end{SideBySideExample} \MathPackage{} introduces postscript operator 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{tabular}{c|c|c|c} \textbf{Stack} & \textbf{Operator} & \textbf{Result} & \textbf{Description} \\ \hline \textsf{\textsl{num}${}_1$} \textsf{\textsl{num}${}_2$} \textsf{\textsl{num}${}_3$} & \textsf{\textbf{GAUSS}} & \textsf{\textsl{real}} & \parbox{4cm}{Return gaussian of \textsf{\textsl{num}${}_1$} with mean \textsf{\textsl{num}${}_2$} and standart deviation \textsf{\textsl{num}${}_3$}} \end{tabular} \end{center} \begin{SideBySideExample}[xrightmargin=10.5cm] \psset{yunit=5} \begin{pspicture}(-5,-.1)(5,1.1) \psaxes{->}(0,0)(-5,-.1)(5,1.1) \psplot[linecolor=blue, plotpoints=1000]% {-5}{5}{x 2 2 /HLCBWz&GAUSS"} \psplot[linecolor=red, plotpoints=1000]% {-5}{5}{x 0 .5 /HLCBWz&GAUSS"} \end{pspicture} \end{SideBySideExample} \MathPackage{} introduces postscript operator SINC defined by \[\DefOfOperator*{sinc}{\mathbb R}{\mathbb R}{\displaystyle\frac{\sin x}x}\] \begin{center} \begin{tabular}{c|c|c|c} \textbf{Stack} & \textbf{Operator} & \textbf{Result} & \textbf{Description} \\ \hline \textsf{\textsl{num}} & \textsf{\textbf{SINC}} & \textsf{\textsl{real}} & Return cardinal sine of \textsf{\textsl{num}} radians \end{tabular} \end{center} \begin{SideBySideExample}[xrightmargin=10.5cm] \psset{xunit=.25,yunit=3} \begin{pspicture}(-20,-.5)(20,1.5) \SpecialCoor % For label positionning \psaxes[labels=y,Dx=/HLCBWz&\pstPI1"]{->}% (0,0)(-20,-.5)(20,1.5) \uput[-90](!/HLCBWz&PI" 0){$\pi$} \uput[-90](!/HLCBWz&PI" neg 0){$-\pi$} \psplot[linecolor=blue, plotpoints=1000]{-20}{20}{x /HLCBWz&SINC"} \end{pspicture} \end{SideBySideExample} \MathPackage{} introduces postscript operator GAMMA and 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}{c|c|c|c} \textbf{Stack} & \textbf{Operator} & \textbf{Result} & \textbf{Description} \\\hline \textsf{\textsl{num}} & \textsf{\textbf{GAMMA}} & \textsf{\textsl{real}} & Return $\Gamma$ function of \textsf{\textsl{num}}\\ \textsf{\textsl{num}} & \textsf{\textbf{GAMMALN}} & \textsf{\textsl{real}} & Return logarithm of $\Gamma$ function of \textsf{\textsl{num}} \end{tabular} \end{center} \begin{SideBySideExample}[xrightmargin=10.5cm] \begin{pspicture*}(-.5,-.5)(6.2,6.2) \psaxes{->}(0,0)(-.5,-.5)(6,6) \psplot[linecolor=blue, plotpoints=200]{.1}{6}{x /HLCBWz&GAMMA"} \psplot[linecolor=red, plotpoints=200]{.1}{6}{x /HLCBWz&GAMMALN"} \end{pspicture*} \end{SideBySideExample} \begin{SideBySideExample}[xrightmargin=10.5cm] \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, plotpoints=1000]{-20}{20}% {x /HLCBWz&BESSEL_J0"} \psplot[linecolor=red, plotpoints=1000]{-20}{20}% {x /HLCBWz&BESSEL_J1"} \end{pspicture} \end{SideBySideExample} \begin{SideBySideExample}[xrightmargin=10.5cm] \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, plotpoints=1000]{0.0001}{20}% {x /HLCBWz&BESSEL_Y0"} \psplot[linecolor=red, plotpoints=1000]{0.0001}{20}% {x /HLCBWz&BESSEL_Y1"} % \psplot[linecolor=green, % plotpoints=1000]{0.0001}{20}% % {x 2 /HLCBWz&BESSEL_Yn"} \end{pspicture} \end{SideBySideExample} \section{Warnings} Since version 0.3, there is a new feature. When an argument of \textsf{\textbf{ACOS}}, \textsf{\textbf{ASIN}}, \textsf{\textbf{ACOSH}} or \textsf{\textbf{ATANH}} is out of range, the result of the calculation does not product a PS error: a zero value is substitued and a warning message is printed on the postscript version of the document. \begin{SideBySideExample}[xrightmargin=10.5cm] \begin{pspicture}(-1,-4)(5,4) \psaxes{->}(0,0)(-1,-4)(5,4) \psplot[linecolor=blue]{/HLCBWz&0"}{5}% {x ACOSH} \end{pspicture} \end{SideBySideExample} \section{Credits} Many thanks to Jacques L'helgoualc'h, Herbert Voss and Martin Chicoine. \end{document}