From a8ac5aab96092285f28552c140552edbdeed8f83 Mon Sep 17 00:00:00 2001 From: sguazt Date: Tue, 26 Aug 2014 17:07:24 +0200 Subject: [PATCH 1/2] [distributions] Hyper-Exponential: finalized doc. --- doc/distributions/dist_reference.qbk | 1 + doc/distributions/hyperexponential.qbk | 122 +++- doc/equations/hyperexponential_ccdf.mml | 27 + doc/equations/hyperexponential_ccdf.png | Bin 0 -> 3744 bytes doc/equations/hyperexponential_ccdf.svg | 71 ++ doc/equations/hyperexponential_cdf.mml | 29 + doc/equations/hyperexponential_cdf.png | Bin 0 -> 4031 bytes doc/equations/hyperexponential_cdf.svg | 79 ++ doc/equations/hyperexponential_kurtosis.mml | 282 ++++++++ doc/equations/hyperexponential_kurtosis.png | Bin 0 -> 26731 bytes doc/equations/hyperexponential_kurtosis.svg | 761 ++++++++++++++++++++ doc/equations/hyperexponential_mean.mml | 22 + doc/equations/hyperexponential_mean.png | Bin 0 -> 3011 bytes doc/equations/hyperexponential_mean.svg | 64 ++ doc/equations/hyperexponential_pdf.mml | 31 + doc/equations/hyperexponential_pdf.png | Bin 0 -> 4365 bytes doc/equations/hyperexponential_pdf.svg | 79 ++ doc/equations/hyperexponential_skewness.mml | 230 ++++++ doc/equations/hyperexponential_skewness.png | Bin 0 -> 24330 bytes doc/equations/hyperexponential_skewness.svg | 624 ++++++++++++++++ doc/equations/hyperexponential_variance.mml | 59 ++ doc/equations/hyperexponential_variance.png | Bin 0 -> 7531 bytes doc/equations/hyperexponential_variance.svg | 161 +++++ doc/graphs/dist_graphs.cpp | 21 + doc/graphs/hyperexponential_pdf.png | Bin 0 -> 26458 bytes doc/graphs/hyperexponential_pdf.svg | 240 ++++++ doc/math.qbk | 5 +- 27 files changed, 2892 insertions(+), 16 deletions(-) create mode 100644 doc/equations/hyperexponential_ccdf.mml create mode 100644 doc/equations/hyperexponential_ccdf.png create mode 100644 doc/equations/hyperexponential_ccdf.svg create mode 100644 doc/equations/hyperexponential_cdf.mml create mode 100644 doc/equations/hyperexponential_cdf.png create mode 100644 doc/equations/hyperexponential_cdf.svg create mode 100644 doc/equations/hyperexponential_kurtosis.mml create mode 100644 doc/equations/hyperexponential_kurtosis.png create mode 100644 doc/equations/hyperexponential_kurtosis.svg create mode 100644 doc/equations/hyperexponential_mean.mml create mode 100644 doc/equations/hyperexponential_mean.png create mode 100644 doc/equations/hyperexponential_mean.svg create mode 100644 doc/equations/hyperexponential_pdf.mml create mode 100644 doc/equations/hyperexponential_pdf.png create mode 100644 doc/equations/hyperexponential_pdf.svg create mode 100644 doc/equations/hyperexponential_skewness.mml create mode 100644 doc/equations/hyperexponential_skewness.png create mode 100644 doc/equations/hyperexponential_skewness.svg create mode 100644 doc/equations/hyperexponential_variance.mml create mode 100644 doc/equations/hyperexponential_variance.png create mode 100644 doc/equations/hyperexponential_variance.svg create mode 100644 doc/graphs/hyperexponential_pdf.png create mode 100644 doc/graphs/hyperexponential_pdf.svg diff --git a/doc/distributions/dist_reference.qbk b/doc/distributions/dist_reference.qbk index 9846e2db7..d700d70a0 100644 --- a/doc/distributions/dist_reference.qbk +++ b/doc/distributions/dist_reference.qbk @@ -14,6 +14,7 @@ [include fisher.qbk] [include gamma.qbk] [include geometric.qbk] +[include hyperexponential.qbk] [include hypergeometric.qbk] [include inverse_chi_squared.qbk] [include inverse_gamma.qbk] diff --git a/doc/distributions/hyperexponential.qbk b/doc/distributions/hyperexponential.qbk index 1fe6eddae..5a9a78cf6 100644 --- a/doc/distributions/hyperexponential.qbk +++ b/doc/distributions/hyperexponential.qbk @@ -33,47 +33,141 @@ The class type `hyperexponential_distribution` represents a [@http://en.wikipedia.org/wiki/Hyperexponential_distribution hyperexponential distribution]. -A k-phase hyperexponential distribution is a [@http://en.wikipedia.org/wiki/Continuous_probability_distribution continuous probability distribution] obtained as a mixture of k [@http://en.wikipedia.org/wiki/Exponential_distribution exponential distributions]. -It is also referred to as mixed exponential distribution or parallel k-phase exponential distribution. +A /k/-phase hyperexponential distribution is a [@http://en.wikipedia.org/wiki/Continuous_probability_distribution continuous probability distribution] obtained as a mixture of /k/ __exp_distrib. +It is also referred to as /mixed exponential distribution/ or parallel /k-phase exponential distribution/. + +A /k/-phase hyperexponential distribution is characterized by two parameters, namely a /phase probability vector/ ['[*[alpha]]=([alpha][sub 1],...,[alpha][sub k])] and a /rate vector/ ['[*[lambda]]=([lambda][sub 1],...,[lambda][sub k])]. + +The [@http://en.wikipedia.org/wiki/Probability_density_function probability density function] for random variate /x/ in a hyperexponential distribution is given by: + +[equation hyperexponential_pdf] + +The following graph illustrates the PDF of the hyperexponential distribution with five different parameters, namely: + +# ['[*[alpha]]=(1.0)] and ['[*[lambda]]=(1.0)] (which degenerates to a simple exponential distribution), +# ['[*[alpha]]=(0.1,0.9)] and ['[*[lambda]]=(0.5,1.5)], +# ['[*[alpha]]=(0.9,0.1)] and ['[*[lambda]]=(0.5,1.5)], +# ['[*[alpha]]=(0.2,0.3,0.5)] and ['[*[lambda]]=(0.5,1.0,1.5)], +# ['[*[alpha]]=(0.5,0.3,0.2)] and ['[*[lambda]]=(0.5,1.0,1.5)]. + +[graph hyperexponential_pdf] + +[h4 Applications] + +A /k/-phase hyperexponential distribution is frequently used in [@http://en.wikipedia.org/wiki/Queueing_theory queueing theory] to model the service time distribution of a queueing station with /k/ servers in parallel where the /i/-th server is chosen with probability ['[alpha][sub i]] and its service time distribution is an exponential distribution with rate ['[lambda][sub i]] (Papadopolous et al.,1993). -A k-phase hyperexponential distribution can be interpreted as the service time distribution of k servers in parallel where the i-th server has service rate r[sub i] and is chosen with probability p[sub i]. -Indeed, it is frequency used in [@http://en.wikipedia.org/wiki/Queueing_theory queueing theory] to model a queueing station with k servers in parallel. Also, it can be used to approximate [@http://en.wikipedia.org/wiki/Long_tail long-tail probability distributions] (Feldmann et al.,1998). -A k-phase hyperexponential distribution is characterized by two paramters, namely a /phase probability vector/ p=(p[sub 1],...,p[sub k]) and a /rate vector/ r=(r[sub 1],...,r[sub k]). -The [@http://en.wikipedia.org/wiki/Probability_density_function probability density function] for value x in a hyperexponential distribution is given by: +[h4 Related distributions] -f(x;(p[sub 1],...,p[sub k]),(r[sub 1],...,r[sub k])) = [Sigma][sub i=1][super k] p[sub i]r[sub i]exp(-r[sub i]x) +When the number of phases /k/ is equal to `1`, the hyperexponential distribution is simply an __exp_distrib. -where exp(x) is the [@http://en.wikipedia.org/wiki/Exponential_function exponential function]. [h4 Member Functions] -*TODO* +[h5 Constructors] + + template + hyperexponential_distribution(ProbIterT prob_first, ProbIterT prob_last, RateIterT rate_first, RateIterT rate_last); + +Constructs a hyperexponential distribution with /phase probability vector/ parameter given by the range defined by \[`prob_first`, `prob_last`) iterator pair, and /rate vector/ parameter given by the range defined by the \[`rate_first`, `rate_last`) iterator pair. + +[h6 Parameters] + +* `prob_first`, `prob_last`: the range of non-negative real elements representing the phase probabilities; if elements don't sum to `1`, they are normalized. +* `rate_first`, `rate_last`: the range of positive elements representing the rates. + +[h6 Type Requirements] + +[itemized_list [ `ProbIterT`, `RateIterT`: must meet the requirements of the [@http://en.cppreference.com/w/cpp/concept/InputIterator InputIterator] concept.]] + + + template + hyperexponential_distribution(ProbRangeT const& prob_range, RateRangeT const& rate_range); + +Constructs a hyperexponential distribution with /phase probability vector/ parameter given by the range defined by `prob_range`, and /rate vector/ parameter given by the range defined by `rate_range`. + +[h6 Parameters] + +* `prob_range`: the range of non-negative real elements representing the phase probabilities; if elements don't sum to `1`, they are normalized. +* `rate_range`: the range of positive real elements representing the rates. + +[h6 Type Requirements] + +* `ProbRangeT`, `RateRangeT`: must meet the requirements of the [link range.concepts Range] concept. + + +[h5 Accessors] + + std::size_t num_phases() const; + +Gets the number of phases of this distribution. + +[h6 Return Value] An non-negative integer number representing the number of phases of this distribution. + + + std::vector probabilities() const; + +Gets the /phase probability vector/ parameter of this distribution. + +[h6 Return Value] A vector of non-negative real numbers representing the /phase probability vector/ parameter of this distribution. + + + std::vector rates() const; + +Gets the /rate vector/ parameter of this distribution. + +[h6 Return Value] A vector of positive real numbers representing the /rate vector/ parameter of this distribution. + [h4 Non-member Accessor Functions] -*TODO* +All the [link math_toolkit.dist_ref.nmp usual non-member accessor functions] that are generic to all distributions are supported: __usual_accessors. + +The formulae for calculating these are shown in the table below. + [h4 Accuracy] -*TODO* +The hyperexponential distribution is implemented in terms of the __exp_distrib and as such should have very small errors. + [h4 Implementation] -*TODO* +In the following table: + +* ['[*[alpha]]=([alpha][sub 1],...,[alpha][sub k])] is the /phase probability vector/ parameter of the /k/-phase hyperexponential distribution, +* ['[*[lambda]]=([lambda][sub 1],...,[lambda][sub k])] is the /rate vector/ parameter of the /k/-phase hyperexponential distribution, +* /x/ is the random variate. + +[table +[[Function][Implementation Notes]] +[[support][['x] [isin] \[0,[infin])]] +[[pdf][[equation hyperexponential_pdf]]] +[[cdf][[equation hyperexponential_cdf]]] +[[cdf complement][[equation hyperexponential_ccdf]]] +[[quantile][No closed form available. Computed numerically.]] +[[quantile from the complement][No closed form available. Computed numerically.]] +[[mean][[equation hyperexponential_mean]]] +[[variance][[equation hyperexponential_variance]]] +[[mode][`0`]] +[[skewness][[equation hyperexponential_skewness]]] +[[kurtosis][[equation hyperexponential_kurtosis]]] +[[kurtosis excess][kurtosis `- 3`]] +] + [h4 References] +* A. Feldmann and W. Whitt, /Fitting mixtures of exponentials to long-tail distributions to analyze network performance models/, Performance Evaluation 31(3-4):245, doi:10.1016/S0166-5316(97)00003-5, 1998. + * H.T. Papadopolous, C. Heavey and J. Browne, /Queueing Theory in Manufacturing Systems Analysis and Design/, Chapman & Hall/CRC, 1993, p. 35. * Wolfram Mathematica, /Hyperexponential Distribution/, Online: [@http://reference.wolfram.com/language/ref/HyperexponentialDistribution.html], 2014. * Wikipedia, /Hyperexponential Distribution/, Online: [@http://en.wikipedia.org/wiki/Hyperexponential_distribution], 2014 -* A. Feldmann and W. Whitt, /Fitting mixtures of exponentials to long-tail distributions to analyze network performance models/, Performance Evaluation 31(3-4):245, doi:10.1016/S0166-5316(97)00003-5, 1998. - [endsect][/section:hyperexponential_dist hyperexponential] [/ hyperexponential.qbk diff --git a/doc/equations/hyperexponential_ccdf.mml b/doc/equations/hyperexponential_ccdf.mml new file mode 100644 index 000000000..0931a49c2 --- /dev/null +++ b/doc/equations/hyperexponential_ccdf.mml @@ -0,0 +1,27 @@ + + + + + + i + = + 1 + + k + + + α + i + + + e + + + + λ + i + + x + + + diff --git a/doc/equations/hyperexponential_ccdf.png b/doc/equations/hyperexponential_ccdf.png new file mode 100644 index 0000000000000000000000000000000000000000..c57c8e0ac135a62afaf126d8c08c9de0ba6ddd6c GIT binary patch literal 3744 zcmeAS@N?(olHy`uVBq!ia0y~yVED_xz%ZSIje&vTUR3M>1_lPUByV>YhW{YAVDIwD z3=Djso-U3d6?5L+tz09UDtY{4zIcW=_fiM#)QL=D8ZBHRF_BzNLL!_RTtZ7F0u%&X z4Ht2?_?nsOU1^OK+~DQXxM1a`{B0r|SuZ*@PIJ&+xXD>_>E7%1^Qw!|?^T{ZGqX6| z_VaI*$=~J}pEiDet~l-4+;T=iWH7NWm+uSvvh9r%m%6D086Q5)r?B+9^?G^sYtsZf zJYuivzAP_})7Mhvnkcn8`qJ+7U#&}B6oZmWy{qQFbd^dmDf=&{b3!^k%SCC@YFkeA zKbMLQ3$9#l6?<>_&MorXG2TDiANfAGQR5^$(I&>rqVs&F@%?oNlG5)TZ^&dlqM;?XGuDK>9I5X@Ke*}{rmYWX4+;xf+tVuwFp=3OrO`? zsrJt%p}8qZWFk*(V}a5Co5tr29+-?2MCedwjpOW}*O>pgnS9jOR&WzM zc_HSIr%d?vI^{K`b7%iZe=4)MBjp9_A7k{l}o2OEimaqEv=+m~#bFE6Is|JZ?H@Y*gUp`&*L_o^K zFRMM@om-`KIZX1+dXwA9jsMNfUb@awneio>VfM2vb5GvzIDK&PwMxU!`F&Rv3;avO zp9#)6_vMm`y+V!8+xd^Toh#e6mFvHu4dd>&1^wUWKNp=bDQ;Gh|C@bw6+X4P$KUp{ zhFRSHz18@<#hS|!-y`<-$z*Qm07k|ich<;?^aWJz=00`y!U3I^QL^c)Em2j&3x_S7cUR| z51&}y_~W2U|I?rIzCTNx{=0R@8Q})&zpN4aS2Va78O`}%``PwDU`zkoCFf!{eF%T_ z`E}qLhxG=B8>NMsUa{vXJ+J0{nOPafy6toC0h`quE>0{jnPzLWJ2ofV>SCc>)McSJ z6JsB`CD~q3tKE5h;V;HZa~DmntA4QdfX#B=J@$7h?ce>ZoVHF)>U;44GuGVut79`4 zS;xkOH3Vh5s{J*1aPGi!ej&R^R{fv(=kmmpWnC}|0dOkgf%G1 z{@`jp{_3{N``gV=BfPC+(l4!bnX}Txx+|9b&9$e$jLaD$T#6pej}L25GTf$eXV$yu zd6j;AHTT@pZC{qm{u0f6{?Yk`w|7Ux=iO^AwV5#GNBR`e1s>AdjVfx+9lw9`j5~+? zarw6id+)0JRY@@XXj$TMs`S~by<7gba``QvCc2y zH1mIzS^Dd(*Z+4tT6OT#-R>R1@=_C=PMHfvoP1FD^KQ$}`CMmyclRVqc8kjG+F7K$ z!TRFya`luwe-&r*?eVF3wEnP`ZO4?S+j->r`6tILf5PARQ@&$n{^`cbxP_bD3>JUr zKP$23!85yk(T#rtLQb_en0NU9DQ`S{iYq|sZ2(*UVbcTaWOa(u5@ue{n18{Y=Zx|8 z=F&cve;y|0?^utqJiFag5ZhR{MlzHXH+`uQy7pwO5|S-OoIG>&$wYi=Q@WTlMTMaKF4yu5d%kCuWew zjrI?3pS~Nc_unhwr?Kt){)7#;S9cn|-Z>$I&!#!{*zupMHlK-F6PlpPnr*XncHFXM zbNRb?X7tIP_Ma~6;XPCLp5F0y!TaQm&$Fx%DUN^8snoP;h3^LM!_FJR;-U?2u>V%d z=~()DquG7Cc7c8Bdw8`&bT75ti2N#ifM?C8YfBo>hb8GAeaBMQKKEhOQFiu!wJWY@ zXdTn-`QUs0^1ca6ru!ay_xaj{KeD<<>oa$$KlD=J)+pQZ=xn3BkZxvQbyKlu*p6%5 z>kfQ-{W_IB$kbl(XF>&A^}U-S>K7{)ZCN(eWxw+G%J+?|NA49FU1PI7Yqw>Y`i9lB zc4dEE{r%x4=9RM&f86HUeL0CupR@WZ+mUjQPeL2!WUODa_T{VtyX>CTgoQlr35;03 z_O8nA**{9{9`_&ST63LYv3K9nNp1wc^R|+jq-ah^?MwE9Tv@GJ>;Yx0`CXxIl4Sno)(f zYVMl;P*WeTKkXZu7RG(nUiABy!N+j(eQ{CW8SP&0DNl}bw61&A`CN0->)4({RiQ=G zW4pg51iRlq_ARmOW@E@*i8ZGZgC5=Qo_n#%b%Rt!c9h$n&9NKapI&>fM&_aM^W6vd zDp}tC;JH{k!~eOn{o3~Zp^-s{r?1M2{aCZ{jl-)16t?aM+%K3_@RmVWzp>Bf1wHm@tq7E3H;+vizy$-b-9EFk^e z%t~GZ)uW%pFZ}zx)8e$l?HN8LOBT=G6?5HV(eDpoY=&OEGJe002d#a{xh5@q?pcLh z@#afnj(@j#{o?qmR`HKZ9@m`T_WfN^tgy}NpiAZl7*+ZwZl7{bV%e$b8`zh}w6EXj zX8&RCn?pTYuWWw1_1u#__kJ>do#a=gg)t-<~R(a7<2NPyYHz`}S|{ z?x=Iu)_C^vnB2VFblbD~3HDNpvy{)i>9JkjFWr)_8g_Y&xKwIR!`~CEwhePRFMs$e zd;TcbM=QhDf=O$aeU?gb{ZjoQgYkAokCy6Rvl|Mvh38A+k5*lcjPY>!dAmEKotM9C zquh4JvqBF}iJU%P5_kTv(0*apFO?fMG~}ANh02xs9+GN1VjEQ@y!-mwrOXGu|JgQM z-eh~?ss4?>U-+FZiMu~H>E_CL-1EJ|3vNyhKuD*KK<-4VC@THmap8nSSX8rl<(id05CK$0C?#MU3 z*FQBuJ~*s_b!Y2~I)A^7H3d7KJP3JmgYp08oceyI?fRNiL#ynivm*qbyR5mtJ?@#d zVts!5X}O~b|FhTa6EWOTdN+LHyH7PspYNTiIc+-IhtQiP%P)I%uZwstbhkX-{M0(% zhW}O5a($04?>LxyY4*2?3)l1hnH=)EaKn@rCXW*7UeovDpT2UP&n7{a*_U=T zx8Iqj)V6tUs=n_=odY_5>W>!(ty`X|WG0cK|8?qxh|M1Bl4}Da4^B-{W@C5a@H2lP zpPFi7aC~Mt>%Tr%>)IS~neM&vzpa;URQ&h*mz~Z>Yum^E2iGyhJ6_GJK9s1keTH{+ z+e^`dic^~|Gv%!Lk{My$tk3wr@L8q!?s~gbXRYLpYZ=cK-27McoKfa$PKG)6(tfY? z{(HIM?uMYh6C>81UKt_(<2ggQpxnn7lk}1%aNV5$M65VGI4Ay1s1awj>$H;FkF6)m znQ!Rp-4IuF`)qa6>|Fk>0_#&P{vGeX>*txg&$IPyYpblw0Pq=NoT#FO%orYRdb6Z(PBy)>l{l>)$>W!FVnE zNPW6~(#cnwZNJShz7c-c>Xvxd+_!72yQ9}cMl{biIk}I+V(Nz`d_U3vvpaN{A-sK^)+7ajzxTr)Mx5XydNEAd-6`#U*4#`!@C~Jt$G-deS&$z z#Mo`eSZM)ZI(HIM&&dHc1Hd5ExwYoB+tFBpCZ(H z<&wdgBNp#?_VZ|;nfOW~%hx7z!;Xugt1LPL73Y;4z3#Q<)#Mcd{%s51u!LPIcW=LIvY{8ezCr{dUaLSjnOP1tsSa@yk`p33K!LvVfb)W)|vp$M<3X)CDxVk$+ zt_19!Kkwz9dF}No*Q{>xyzaar-gzD4 z89ggv_kA&mUF5d*2wPo^jP!(sU;m5G{rTmtr|!!GZ|78(T`yPPy5!pzC0^qxOTwRb zDVdr~SyEmdAKB46K}$(=TI!|Mr&T9P1zhU(IKD|vap|ktyRR+xnncO9R(MrSWGbny zT<>Hvan`GC?`q|~e_r)QDX3x1xi4BrgkKi=$~=qs{^e4H@7m7gOQz4eaMrdquC=04 zZPF=j7q*gO|MkBsCrSlh>h@TqCibZD-OHs5XGL|edsV#@%+!A$D(t`H*`;as%pcb6 zyS%w#_s=g&9JF#*r2mTZsS@POa8isDjr!7w8dPAO$I`#@vqgTC%Rf3|$iTqB;OXk; Jvd$@?2>==3Qwab7 literal 0 HcmV?d00001 diff --git a/doc/equations/hyperexponential_ccdf.svg b/doc/equations/hyperexponential_ccdf.svg new file mode 100644 index 000000000..4f0e4f07b --- /dev/null +++ b/doc/equations/hyperexponential_ccdf.svg @@ -0,0 +1,71 @@ + + + + 57.62793661971833 + + + + + + i + = + 1 + + k + α + i + e + + + λ + i + x + + + + diff --git a/doc/equations/hyperexponential_cdf.mml b/doc/equations/hyperexponential_cdf.mml new file mode 100644 index 000000000..5bbd2205e --- /dev/null +++ b/doc/equations/hyperexponential_cdf.mml @@ -0,0 +1,29 @@ + + + 1 + + + + + i + = + 1 + + k + + + α + i + + + e + + + + λ + i + + x + + + diff --git a/doc/equations/hyperexponential_cdf.png b/doc/equations/hyperexponential_cdf.png new file mode 100644 index 0000000000000000000000000000000000000000..fd89c8ca745193c7166dac5e5c4fd1e6f0283f56 GIT binary patch literal 4031 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 S-eF*1VDNPHb6Mw<&;$VAIMTfU literal 0 HcmV?d00001 diff --git a/doc/equations/hyperexponential_cdf.svg b/doc/equations/hyperexponential_cdf.svg new file mode 100644 index 000000000..b52c222e3 --- /dev/null +++ b/doc/equations/hyperexponential_cdf.svg @@ -0,0 +1,79 @@ + + + + 57.6279366197183 + + + + 1 + + + + i + = + 1 + + k + α + i + e + + + λ + i + x + + + + diff --git a/doc/equations/hyperexponential_kurtosis.mml b/doc/equations/hyperexponential_kurtosis.mml new file mode 100644 index 000000000..7878b819a --- /dev/null +++ b/doc/equations/hyperexponential_kurtosis.mml @@ -0,0 +1,282 @@ + + + + + 24 + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + 4 + + + + ) + + + 24 + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + 3 + + + + ) + + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + + + + ) + + + + 3 + + ( + + 2 + + ( + + 2 + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + 2 + + + + ) + + + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + + + + + ) + + 2 + + + ) + + + + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + + + + + ) + + 2 + + + ) + + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + + + + + ) + + 2 + + + + + ( + + 2 + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + 2 + + + + ) + + + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + + + + + ) + + 2 + + + + ) + + 2 + + + + diff --git a/doc/equations/hyperexponential_kurtosis.png b/doc/equations/hyperexponential_kurtosis.png new file mode 100644 index 0000000000000000000000000000000000000000..c1355ebe088ba8409b15b9b8775b5b855bbcd228 GIT binary patch literal 26731 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 Bs|f%A literal 0 HcmV?d00001 diff --git a/doc/equations/hyperexponential_kurtosis.svg b/doc/equations/hyperexponential_kurtosis.svg new file mode 100644 index 000000000..81a73131b --- /dev/null +++ b/doc/equations/hyperexponential_kurtosis.svg @@ -0,0 +1,761 @@ + + + + 129.23400000000004 + + + + + 24 + + + + + + + + + i + = + 1 + + k + α + i + λ + i + 4 + + + + + + + + + 24 + + + + + + + + + i + = + 1 + + k + α + i + λ + i + 3 + + + + + + + + + + + + + + + + i + = + 1 + + k + α + i + λ + i + + + + + + + + + + 3 + + + + + + + + 2 + + + + + + + 2 + + + + + + + + + i + = + 1 + + k + α + i + λ + i + 2 + + + + + + + + + + + + + + + + + i + = + 1 + + k + α + i + λ + i + + + + + + + + 2 + + + + + + + + + + + + + + + + + i + = + 1 + + k + α + i + λ + i + + + + + + + + 2 + + + + + + + + + + + + + + + + i + = + 1 + + k + α + i + λ + i + + + + + + + + 2 + + + + + + + + + 2 + + + + + + + + + i + = + 1 + + k + α + i + λ + i + 2 + + + + + + + + + + + + + + + + + i + = + 1 + + k + α + i + λ + i + + + + + + + + 2 + + + + + + + 2 + + + + + diff --git a/doc/equations/hyperexponential_mean.mml b/doc/equations/hyperexponential_mean.mml new file mode 100644 index 000000000..4b3383847 --- /dev/null +++ b/doc/equations/hyperexponential_mean.mml @@ -0,0 +1,22 @@ + + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + + + diff --git a/doc/equations/hyperexponential_mean.png b/doc/equations/hyperexponential_mean.png new file mode 100644 index 0000000000000000000000000000000000000000..294821c9389b676509b83f5566eba73db74e8051 GIT binary patch literal 3011 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 literal 0 HcmV?d00001 diff --git a/doc/equations/hyperexponential_mean.svg b/doc/equations/hyperexponential_mean.svg new file mode 100644 index 000000000..9f3cf125b --- /dev/null +++ b/doc/equations/hyperexponential_mean.svg @@ -0,0 +1,64 @@ + + + + 57.62793661971833 + + + + + + i + = + 1 + + k + α + i + λ + i + + + + diff --git a/doc/equations/hyperexponential_pdf.mml b/doc/equations/hyperexponential_pdf.mml new file mode 100644 index 000000000..b67dad360 --- /dev/null +++ b/doc/equations/hyperexponential_pdf.mml @@ -0,0 +1,31 @@ + + + + + + i + = + 1 + + k + + + α + i + + + λ + i + + + e + + + + λ + i + + x + + + diff --git a/doc/equations/hyperexponential_pdf.png b/doc/equations/hyperexponential_pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..2d50747c7c48e825c03ab75fedc9f3f16e41b63a GIT binary patch literal 4365 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 XuI{m^x!yZ_7(nA3u6{1-oD!M<_I-|R literal 0 HcmV?d00001 diff --git a/doc/equations/hyperexponential_pdf.svg b/doc/equations/hyperexponential_pdf.svg new file mode 100644 index 000000000..1066fad7c --- /dev/null +++ b/doc/equations/hyperexponential_pdf.svg @@ -0,0 +1,79 @@ + + + + 57.62793661971833 + + + + + + i + = + 1 + + k + α + i + λ + i + e + + + λ + i + x + + + + diff --git a/doc/equations/hyperexponential_skewness.mml b/doc/equations/hyperexponential_skewness.mml new file mode 100644 index 000000000..3a55d36fa --- /dev/null +++ b/doc/equations/hyperexponential_skewness.mml @@ -0,0 +1,230 @@ + + + + + 6 + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + 3 + + + + ) + + + + ( + + 3 + + ( + + 2 + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + 2 + + + + ) + + + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + + + + + ) + + 2 + + + ) + + + + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + + + + + ) + + 2 + + + ) + + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + + + + ) + + + + + ( + + 2 + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + 2 + + + + ) + + + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + + + + + ) + + 2 + + + + ) + + + + 3 + 2 + + + + + + diff --git a/doc/equations/hyperexponential_skewness.png b/doc/equations/hyperexponential_skewness.png new file mode 100644 index 0000000000000000000000000000000000000000..423e6ccc2098b1b7f0700df81cb3021c5f323a93 GIT binary patch literal 24330 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 L`njxgN@xNA#q~>T literal 0 HcmV?d00001 diff --git a/doc/equations/hyperexponential_skewness.svg b/doc/equations/hyperexponential_skewness.svg new file mode 100644 index 000000000..b51afb3a4 --- /dev/null +++ b/doc/equations/hyperexponential_skewness.svg @@ -0,0 +1,624 @@ + + + + 151.88478 + + + + + 6 + + + + + + + + + i + = + 1 + + k + α + i + λ + i + 3 + + + + + + + + + + + + + + + + 3 + + + + + + + 2 + + + + + + + + + i + = + 1 + + k + α + i + λ + i + 2 + + + + + + + + + + + + + + + + + i + = + 1 + + k + α + i + λ + i + + + + + + + + 2 + + + + + + + + + + + + + + + + + i + = + 1 + + k + α + i + λ + i + + + + + + + + 2 + + + + + + + + + + + + + + + + i + = + 1 + + k + α + i + λ + i + + + + + + + + + + + + + + + + 2 + + + + + + + + + i + = + 1 + + k + α + i + λ + i + 2 + + + + + + + + + + + + + + + + + i + = + 1 + + k + α + i + λ + i + + + + + + + + 2 + + + + + + + + 3 + 2 + + + + + + + diff --git a/doc/equations/hyperexponential_variance.mml b/doc/equations/hyperexponential_variance.mml new file mode 100644 index 000000000..6443129ac --- /dev/null +++ b/doc/equations/hyperexponential_variance.mml @@ -0,0 +1,59 @@ + + + 2 + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + 2 + + + + ) + + + + ( + + + + + i + = + 1 + + k + + + + α + i + + + λ + i + + + + + ) + + 2 + + diff --git a/doc/equations/hyperexponential_variance.png b/doc/equations/hyperexponential_variance.png new file mode 100644 index 0000000000000000000000000000000000000000..466079d9f3e29765df36edc09b180b2457494055 GIT binary patch literal 7531 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 exoG7dd)r5!gr^r}vobI+FnGH9xvX + + + 64.15370000000001 + + + + 2 + + + + + + + + + i + = + 1 + + k + α + i + λ + i + 2 + + + + + + + + + + + + + + + + + i + = + 1 + + k + α + i + λ + i + + + + + + + + 2 + + + diff --git a/doc/graphs/dist_graphs.cpp b/doc/graphs/dist_graphs.cpp index c5d960192..aa944d67c 100644 --- a/doc/graphs/dist_graphs.cpp +++ b/doc/graphs/dist_graphs.cpp @@ -653,4 +653,25 @@ int main() hypergeometric_plotter2.add(boost::math::hypergeometric_distribution<>(450, 50, 500), "N=500, r=50, n=450"); hypergeometric_plotter2.plot("Hypergeometric Distribution PDF", "hypergeometric_pdf_2.svg"); + distribution_plotter > + hyperexponential_plotter2; + { + double probs1_1[] = {1.0}; + double rates1_1[] = {1.0}; + hyperexponential_plotter2.add(boost::math::hyperexponential_distribution<>(probs1_1,rates1_1), "α=(1.0), λ=(1.0)"); + double probs2_1[] = {0.1,0.9}; + double rates2_1[] = {0.5,1.5}; + hyperexponential_plotter2.add(boost::math::hyperexponential_distribution<>(probs2_1,rates2_1), "α=(0.1,0.9), λ=(0.5,1.5)"); + double probs2_2[] = {0.9,0.1}; + double rates2_2[] = {0.5,1.5}; + hyperexponential_plotter2.add(boost::math::hyperexponential_distribution<>(probs2_2,rates2_2), "α=(0.9,0.1), λ=(0.5,1.5)"); + double probs3_1[] = {0.2,0.3,0.5}; + double rates3_1[] = {0.5,1.0,1.5}; + hyperexponential_plotter2.add(boost::math::hyperexponential_distribution<>(probs3_1,rates3_1), "α=(0.2,0.3,0.5), λ=(0.5,1.0,1.5)"); + double probs3_2[] = {0.5,0.3,0.2}; + double rates3_2[] = {0.5,1.0,1.5}; + hyperexponential_plotter2.add(boost::math::hyperexponential_distribution<>(probs3_1,rates3_1), "α=(0.5,0.3,0.2), λ=(0.5,1.0,1.5)"); + } + hyperexponential_plotter2.plot("Hyperexponential Distribution PDF", "hyperexponential_pdf.svg"); + } // int main() diff --git a/doc/graphs/hyperexponential_pdf.png b/doc/graphs/hyperexponential_pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..374e8897fc01a8cf42cc2f11ebb80bba8b08a5fc GIT binary patch literal 26458 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 Kb6Mw<&;$U5%IkCh literal 0 HcmV?d00001 diff --git a/doc/graphs/hyperexponential_pdf.svg b/doc/graphs/hyperexponential_pdf.svg new file mode 100644 index 000000000..12bd78970 --- /dev/null +++ b/doc/graphs/hyperexponential_pdf.svg @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/math.qbk b/doc/math.qbk index 4cc833b53..1f684e520 100644 --- a/doc/math.qbk +++ b/doc/math.qbk @@ -1,13 +1,13 @@ [book Math Toolkit [quickbook 1.6] - [copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013 Nikhar Agrawal, Anton Bikineev, Paul A. Bristow, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang] + [copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013, 2014 Nikhar Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Johan Råde, Gautam Sewani, Benjamin Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang] [/purpose ISBN 0-9504833-2-X 978-0-9504833-2-0, Classification 519.2-dc22] [license Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at [@http://www.boost.org/LICENSE_1_0.txt]) ] - [authors [Agrawal, Nikhar], [Bikineev, Anton], [Bristow, Paul A.], [Holin, Hubert], [Kormanyos, Christopher], [Lalande, Bruno], [Maddock, John], [Råde, Johan], [Sobotta, Benjamin], [Sewani, Gautam], [van den Berg, Thijs], [Walker, Daryle], [Zhang, Xiaogang]] + [authors [Agrawal, Nikhar], [Bikineev, Anton], [Bristow, Paul A.], [Holin, Hubert], [Guazzone, Marco], [Kormanyos, Christopher], [Lalande, Bruno], [Maddock, John], [Råde, Johan], [Sobotta, Benjamin], [Sewani, Gautam], [van den Berg, Thijs], [Walker, Daryle], [Zhang, Xiaogang]] [/last-revision $Date$] [version 1.9.0] ] @@ -279,6 +279,7 @@ and use the function's name as the link text.] [def __F_distrib [link math_toolkit.dist_ref.dists.f_dist Fisher F Distribution]] [def __gamma_distrib [link math_toolkit.dist_ref.dists.gamma_dist Gamma Distribution]] [def __geometric_distrib [link math_toolkit.dist_ref.dists.geometric_dist Geometric Distribution]] +[def __hyperexponential_distrib [link math_toolkit.dist_ref.dists.hyperexponential_dist Hyperexponential Distribution]] [def __hypergeometric_distrib [link math_toolkit.dist_ref.dists.hypergeometric_dist hypergeometric Distribution]] [def __inverse_gamma_distrib [link math_toolkit.dist_ref.dists.inverse_gamma_dist Inverse Gamma Distribution]] [def __inverse_gaussian_distrib [link math_toolkit.dist_ref.dists.inverse_gaussian_dist Inverse Gaussian Distribution]] From fa198a0b04aef1c4acf8a345cfdb07b500c11dbc Mon Sep 17 00:00:00 2001 From: sguazt Date: Tue, 26 Aug 2014 17:08:05 +0200 Subject: [PATCH 2/2] [distributions] Hyper-Exponential: clean-up. --- .../math/distributions/hyperexponential.hpp | 30 ------------------- 1 file changed, 30 deletions(-) diff --git a/include/boost/math/distributions/hyperexponential.hpp b/include/boost/math/distributions/hyperexponential.hpp index ff9508262..544db3af6 100644 --- a/include/boost/math/distributions/hyperexponential.hpp +++ b/include/boost/math/distributions/hyperexponential.hpp @@ -81,32 +81,6 @@ bool iszero(T x) #endif // FP_ZERO } -/* -template -class quantile_functor -{ - public: quantile_functor(hyperexponential_distribution const& dist, RealT const& p, bool complement) - : dist_(dist), - p_(p), - comp_(complement) - { - } - - public: boost::math::tuple operator()(RealT const& x) - { - const RealT c = comp_ ? boost::math::cdf(boost::math::complement(dist_, x)) : boost::math::cdf(dist_, x); - const RealT fx = c - p_; // Difference (cdf - value) to minimize. - const RealT dx = comp_ ? -boost::math::pdf(dist_, x) : boost::math::pdf(dist_, x); // pdf is 1st derivative. - // return both function evaluation difference f(x) and 1st derivative f'(x). - return boost::math::make_tuple(fx, dx); - } - - private: const hyperexponential_distribution dist_; - private: const RealT p_; - private: const bool comp_; -}; // quantile_functor -*/ - template bool check_probabilities(char const* function, std::vector const& probabilities, RealT* presult, PolicyT const& pol) { @@ -470,7 +444,6 @@ RealT variance(hyperexponential_distribution const& dist) const std::vector probs = dist.probabilities(); const std::vector rates = dist.rates(); - // 2(\sum_{i=1}^n \frac{p_i}{\lambda_i^2})-(\sum_{i=1}^n \frac{p_i}{\lambda_i})^2 for (std::size_t i = 0; i < n; ++i) { result += probs[i]/(rates[i]*rates[i]); @@ -486,7 +459,6 @@ RealT variance(hyperexponential_distribution const& dist) template RealT skewness(hyperexponential_distribution const& dist) { - // (6(\sum_{i=1}^n\frac{p_i}{\lambda_i^3}) - (3(2(\sum_{i=1}^n\frac{p_i}{\lambda_i^2) - (\sum_{i=1}^n\frac{p_i}{\lambda_i})^2) + (\sum_{i=1}^n\frac{p_i}{\lambda_i})^2)(\sum_{i=1}^n\frac{p_i}{\lambda_i}))/((\sum_{i=1}^n\frac{p_i}{\lambda_i^2})-(\sum_{i=1}^n\frac{p_i}{\lambda_i})^2)^(3/2) BOOST_MATH_STD_USING const std::size_t n = dist.num_phases(); const std::vector probs = dist.probabilities(); @@ -518,8 +490,6 @@ RealT skewness(hyperexponential_distribution const& dist) template RealT kurtosis(hyperexponential_distribution const& dist) { - // (24(\sum_{i=1}^n\frac{p_i}{\lambda_i^4})-24(\sum_{i=1}^n\frac{p_i}{\lambda_i^3})(\sum_{i=1}^n\frac{p_i}{\lambda_i})+3(2(2(\sum_{i=1}^n\frac{p_i}{\lambda_i^2})-(\sum_{i=1}^n\frac{p_i}{\lambda_i})^2) + (\sum_{i=1}^n\frac{p_i}{\lambda_i})^2)(\sum_{i=1}^n\frac{p_i}{\lambda_i})^2)/((\sum_{i=1}^n\frac{p_i}{\lambda_i^2})-(\sum_{i=1}^n\frac{p_i}{\lambda_i})^2)^2 - const std::size_t n = dist.num_phases(); const std::vector probs = dist.probabilities(); const std::vector rates = dist.rates();