From 8e1addeb313836534d067bb5f1818d0b9a5c1dd7 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 3 Sep 2007 16:33:26 +0000 Subject: pst-func 0.50 git-svn-id: svn://tug.org/texlive/trunk@4854 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/generic/pst-func/pst-func.tex | 171 +++++++++++++++++---- 1 file changed, 141 insertions(+), 30 deletions(-) (limited to 'Master/texmf-dist/tex/generic/pst-func') diff --git a/Master/texmf-dist/tex/generic/pst-func/pst-func.tex b/Master/texmf-dist/tex/generic/pst-func/pst-func.tex index ab399eb9ec9..2d0dcae366e 100644 --- a/Master/texmf-dist/tex/generic/pst-func/pst-func.tex +++ b/Master/texmf-dist/tex/generic/pst-func/pst-func.tex @@ -28,11 +28,12 @@ % interface to the `xkeyval' package \pst@addfams{pst-func} -\def\fileversion{0.49} -\def\filedate{2007/12/23} +\def\fileversion{0.50} +\def\filedate{2007/08/27} \message{`PST-func' v\fileversion, \filedate\space (hv)} % \pstheader{pst-func.pro} +\pstheader{pst-math.pro}% for GAMMALN % \define@key[psset]{pst-func}{xShift}{\def\psk@xShift{#1}} \psset[pst-func]{xShift=0} @@ -195,7 +196,8 @@ % \define@key[psset]{pst-func}{sigma}{\def\psk@sigma{#1 }} \define@key[psset]{pst-func}{mue}{\def\psk@mue{#1 }} -\psset[pst-func]{sigma=0.5,mue=0} +\define@key[psset]{pst-func}{nue}{\def\psk@nue{#1 }} +\psset[pst-func]{sigma=0.5,mue=0,nue=1} % \def\psGauss{\@ifnextchar[{\psGauss@i}{\psGauss@i[]}} \def\psGauss@i[#1]#2#3{{% @@ -386,26 +388,44 @@ \psset[pst-func]{printValue=false,barwidth=1} % \def\psBinomial{\pst@object{psBinomial}} -\def\psBinomial@i#1#2{% +\def\psBinomial@i#1#2{\psBinomial@ii#1,,,\@nil{#2}}% +\def\psBinomial@ii#1,#2,#3,#4\@nil#5{% + \def\pst@tempA{#2}% + \ifx\pst@tempA\@empty + \psBinomial@iii{0}{#1}{#1}{#5}% + \else + \def\pst@tempA{#3}% + \ifx\pst@tempA\@empty\psBinomial@iii{#1}{#2}{#2}{#5}% + \else\psBinomial@iii{#1}{#2}{#3}{#5}\fi + \fi}% +\def\psBinomial@iii#1#2#3#4{% \begin@SpecialObj% \addto@pscode{ /scx { \pst@number\psxunit mul } def /scy { \pst@number\psyunit mul } def - /N #1 def - /p #2 def + /m #1 def + /n #2 def + /N #3 def + /p #4 def /dx \psFunc@barwidth 2 div def /q 1 p sub def - /kOld dx neg def + /kOld dx neg m add def kOld scx 0 moveto % starting point -% /Y 1 def % start value - 0 1 N { % N times + 0 1 m 1 sub { + /k exch def % save loop variable + k 0 eq + { /Y q N exp def } + { /Y Y N k sub 1 add mul k div p mul q div def } + ifelse + } for + m 1 n { % n-m+1 times /k exch def % save loop variable k 0 eq { /Y q N exp def } { /Y Y N k sub 1 add mul k div p mul q div def } ifelse % recursive definition - kOld scx 0 L kOld scx Y scy L k dx add scx Y scy L - \ifPst@markZeros k dx add scx 0 L \fi + kOld scx Y scy L k dx add scx Y scy L + \ifPst@markZeros k dx add scx 0 L kOld 1 add scx 0 L \fi \ifPst@printValue gsave \psk@PSfont findfont \psk@fontscale scalefont setfont Y \psk@valuewidth string cvs @@ -417,11 +437,10 @@ } for \ifPst@markZeros\else k dx add scx 0 L \fi % last line down to x-axis }% - \psk@fillstyle - \pst@stroke + \psk@fillstyle% + \pst@stroke% \end@SpecialObj% -} -% +}% \def\psBinomialN{\pst@object{psBinomialN}} \def\psBinomialN@i#1#2{% \pst@killglue @@ -476,24 +495,33 @@ \ignorespaces% } % -\def\psPoisson{\pst@object{psPoisson}} -\def\psPoisson@i#1#2{% +\def\psPoisson{\pst@object{psPoisson}}% with contributions from Gerry Coombes +\def\psPoisson@i#1#2{\psPoisson@ii#1,,\@nil{#2}}% +\def\psPoisson@ii#1,#2,#3\@nil#4{% + \def\pst@tempA{#2}% + \ifx\pst@tempA\@empty\psPoisson@iii{0}{#1}{#4}\else + \psPoisson@iii{#1}{#2}{#4}\fi}% +\def\psPoisson@iii#1#2#3{% M N lambda \begin@SpecialObj% \addto@pscode{ /scx { \pst@number\psxunit mul } def /scy { \pst@number\psyunit mul } def - /N #1 def - /lambda #2 def - /elambda Euler #2 neg exp def % e^-lambda + /M #1 def + /N #2 def + /lambda #3 def + /elambda Euler #3 neg exp def % e^-lambda /dx \psFunc@barwidth 2 div def - /kOld dx neg def - kOld scx 0 moveto % starting point - /Y elambda def % start value - 0 1 N { % N times - /k exch def % save loop variable - k 0 eq { /kFaculty 1 def }{ /kFaculty kFaculty k mul def } ifelse - /Y lambda k exp kFaculty div elambda mul def - kOld scx 0 L kOld scx Y scy L k dx add scx Y scy L + /kOld dx neg M add def % addition of M here + kOld scx 0 moveto % starting point + /Y elambda def % start value + 0 1 M 1 sub { % skip over first M-1 rectangles + /k exch def % whilst recursing probabilities + k 0 eq { /Y elambda def }{ /Y Y lambda mul k div def } ifelse + } for % nothing happens if M=0 + M 1 N { % N-M+1 times + /k exch def % save loop variable + k 0 eq { /Y elambda def }{ /Y Y lambda mul k div def } ifelse + kOld scx Y scy L k dx add scx Y scy L \ifPst@markZeros k dx add scx 0 L \fi \ifPst@printValue gsave \psk@PSfont findfont \psk@fontscale scalefont setfont @@ -510,6 +538,86 @@ \pst@stroke \end@SpecialObj% } +% +\define@key[psset]{pst-func}{alpha}{\pst@checknum{#1}\psk@alpha } % gamma +\define@key[psset]{pst-func}{beta}{\pst@checknum{#1}\psk@beta } % gamma +\psset[pst-func]{alpha=0.5,beta=0.5} +% +\def\psGammaDist{\pst@object{psGammaDist}} +\def\psGammaDist@i#1#2{% + \ifdim#1pt<\z@ \psframebox*{\color{red}!!!\#1 must be greater than 0!!!} + \else + \addbefore@par{plotpoints=500,alpha=0.5,beta=0.5}% + \begin@SpecialObj + \psplot{#1}{#2}{ + \psk@beta x mul \psk@alpha exp x div Euler \psk@beta neg x mul \psk@alpha GAMMALN sub exp mul} + \end@SpecialObj% + \ignorespaces% + \fi% +} +% +\def\psBetaDist{\pst@object{psBetaDist}} +\def\psBetaDist@i#1#2{% + \ifdim#1pt<\z@ \psframebox*{\color{red}!!!\#1 must be greater than 0!!!} + \else + \addbefore@par{plotpoints=200,alpha=1,beta=1}% + \begin@SpecialObj + \psplot{#1}{#2}{ + \psk@beta \psk@alpha add GAMMA + \psk@beta GAMMA \psk@alpha GAMMA mul div + 1 x sub \psk@beta 1.0 sub exp mul + x \psk@alpha 1.0 sub exp mul } + \end@SpecialObj% + \ignorespaces% + \fi% +} +% +\def\psChiIIDist{\pst@object{psChiIIDist}} +\def\psChiIIDist@i#1#2{% + \addbefore@par{plotpoints=500,nue=1}% + \begin@SpecialObj +% \ifdim\psk@nue pt<\z@ \psframebox*{\color{red}!!!nue must be greater than 0!!!} +% \else + \psplot{#1}{#2}{% + x 2 div \psk@nue 2 div exp x div Euler -0.5 x mul \psk@nue 2 div GAMMALN sub exp mul }% +% \fi% + \end@SpecialObj% + \ignorespaces% +} +% +\def\psTDist{\pst@object{psTDist}} +\def\psTDist@i#1#2{% + \addbefore@par{plotpoints=500}% + \begin@SpecialObj + \ifdim\psk@nue pt<\z@ \psframebox*{\color{red}!!!nue must be greater than 0!!!} + \else + \psplot{#1}{#2}{ + 1 x 2 exp \psk@nue div 1 add \psk@nue 1 add 2 div exp div + \psk@nue Pi mul sqrt div + Euler \psk@nue 1 add 2 div GAMMALN \psk@nue 2 div GAMMALN sub exp mul + }% + \fi% + \end@SpecialObj% + \ignorespaces% +} +% +\def\psFDist{\pst@object{psFDist}} +\def\psFDist@i#1#2{% + \ifdim#1pt<\z@ \psframebox*{\color{red}!!!\#1 must be greater than 0!!!} + \else + \addbefore@par{plotpoints=500,mue=1}% + \begin@SpecialObj + \psplot{#1}{#2}{ + x \psk@mue mul \psk@nue div dup \psk@mue 2 div exp x div + exch 1 add \psk@mue \psk@nue add 2 div exp div + Euler \psk@mue \psk@nue add 2 div GAMMALN + \psk@mue 2 div GAMMALN sub \psk@nue 2 div GAMMALN sub exp mul + }% + \end@SpecialObj% + \fi% + \ignorespaces% +} + % % Superellipese / Lamefunction \define@key[psset]{pst-func}{radiusA}{\pst@getlength{#1}\pst@radiusA} @@ -554,10 +662,13 @@ /Func \ifPst@algebraic (#5) tx@addDict begin AlgParser end cvx \else { #5 } \fi def \fi /xPixel xMax xMin sub \pst@number\psxunit mul round cvi def - /yPixel yMax yMin sub \pst@number\psxunit mul round cvi def + /yPixel yMax yMin sub \pst@number\psyunit mul round cvi def /dx xMax xMin sub xPixel div def /dy yMax yMin sub yPixel div def - /setpixel { dy div exch dx div exch \pst@number\pslinewidth 2 div 0 360 arc fill } bind def + /setpixel { + dy div exch + dx div exch + \pst@number\pslinewidth 2 div 0 360 arc fill } bind def % /VZ true def % suppose that F(x,y)>=0 /x xMin def /y yMin def Func 0.0 lt { /VZ false def } if % erster Wert -- cgit v1.2.3