K i.ddlmZmZddlmZddlmZddlmZddl m Z ddl m Z m Z ddlmZddlmZmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlm Z ddl!m"Z"ddl#m$Z$ddl%m&Z&ddl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0ddl1m2Z2ddl3m4Z4m5Z5ddl6m7Z7ddl8m9Z9ddl:m;Z;ddlmGdde.Z?Gd d!e?e*Z@Gd"d#e?e-ZAGd$d%e,ZBGd&d'e/e?ZCGd(d)eBe)ZDy*)+)Sum summation)Basic)cacheit)Lambda)I)EqNe)S)Dummysymbols)sympify) factorial)exp)floor) Piecewise)And)poly)series)PolynomialError)!reduce_rational_inequalities_wrap) NamedArgsMixin SinglePSpace SingleDomainrandom_symbolsPSpaceConditionalDomain RandomDomain ProductDomain Distribution) Probability)Range FiniteSet)Union)Contains) filldedent)_sympifyceZdZdZy)DiscreteDistributionc |j|SNpdfselfargss U/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/stats/drv.py__call__zDiscreteDistribution.__call__ txxN)__name__ __module__ __qualname__r2r4r1r)r)sr4r)ceZdZdZej ZdZedZ e dZ dZ dZ e dZdZd Ze d Zd Zd Ze d ZdZdZddZdZy)SingleDiscreteDistributionz Discrete distribution of a single variable. Serves as superclass for PoissonDistribution etc.... Provides methods for pdf, cdf, and sampling See Also: sympy.stats.crv_types.* c`ttt|}tj|g|Sr+)listmaprr__new__)clsr0s r1r>z"SingleDiscreteDistribution.__new__1s'C&'}}S(4((r4cyr+r8)r0s r1checkz SingleDiscreteDistribution.check5s r4c tddt}tddt}|jj}|j |}t |||t |ffi|}t|||k\fd}t||S)zB Compute the CDF from the PDF. Returns a Lambda. xT)integerr?zrealr?)rT) r r setinfr-rrrr)r/kwargsrCrE left_boundr-cdfs r1 compute_cdfz&SingleDiscreteDistribution.compute_cdf9sy C5 1 Cd .XX\\ hhqkaU1X6A&Aa:o. :a~r4cyr+r8r/rCs r1_cdfzSingleDiscreteDistribution._cdfJr4c `|s|j|}||S|jdi||Sz Cumulative density function r8)rPrM)r/rCrJrLs r1rLzSingleDiscreteDistribution.cdfMs:))A,C )t)&)!,,r4c tddt\}}|j|}tt t |z|z|z||j j|j jf}t||S)zV Compute the characteristic function from the PDF. Returns a Lambda. zx, tTrF) r r r-rrrrHrIsupr)r/rJrCtr-cfs r1compute_characteristic_functionz:SingleDiscreteDistribution.compute_characteristic_functionUsb vDe41hhqk s1Q3q5z#~488<<'F Ga}r4cyr+r8r/rVs r1_characteristic_functionz3SingleDiscreteDistribution._characteristic_function`rQr4c `|s|j|}||S|jdi||S)z Characteristic function r8)r[rX)r/rVrJrWs r1characteristic_functionz2SingleDiscreteDistribution.characteristic_functioncs=..q1B~ =3t33=f=a@@r4c tdd}tdd}|j|}tt||z|z||jj |jj f}t||S)NrVTrGrCrD)r r-rrrHrIrUr)r/rJrVrCr-mgfs r1"compute_moment_generating_functionz=SingleDiscreteDistribution.compute_moment_generating_functionksb #D ! #t $hhqkAaC q$((,, &EFa~r4cyr+r8rZs r1_moment_generating_functionz6SingleDiscreteDistribution._moment_generating_functionsrQr4c `|s|j|}||S|jdi||S)Nr8)rdrb)r/rVrJras r1moment_generating_functionz5SingleDiscreteDistribution.moment_generating_functionvs=2215C @6t66@@CCr4c tdd}tdd}|jj}|j|}t ||||ffi|}|||kff}t |t |S)zG Compute the Quantile from the PDF. Returns a Lambda. rCTr`pr_)r rHrIr-rrr)r/rJrCrhrKr-rLrHs r1compute_quantilez+SingleDiscreteDistribution.compute_quantile}so #t $ #D !XX\\ hhqkaQ/:6:18}aC))r4cyr+r8rOs r1 _quantilez$SingleDiscreteDistribution._quantilerQr4c `|s|j|}||S|jdi||SrS)rkri)r/rCrJquantiles r1rmz#SingleDiscreteDistribution.quantiles<~~a(H#.$t$$.v.q11r4c |r t||}tdd}|j|}|j}tt ||d|dzj |} d} t |dzD]:} | |j|| z| j|| zzt| zz } <| St||j|z||jj|jjffi|S#t$rMt||j|z||jj|jjffi|cYSwxYw)z- Expectation of expression over distribution rVTr_r)rr rfdegreerremoveOrangecoeff_monomialrrrr-rHrIrUr) r/exprvarevaluaterJrhrVradegtaylorresultks r1 expectationz&SingleDiscreteDistribution.expectations[  NsO#D)55a8hhjfS!Qa8@@BAFs1uhAa..sax86;P;PQRVWQW;XX[def[gggFh tdhhsm+txx||TXX\\:F>DF F # N  !5"%txx||TXX\\!BNFLNN NsB1DAEEc |j|Sr+r,r.s r1r2z#SingleDiscreteDistribution.__call__r3r4N)T)r5r6r7__doc__r IntegersrHr> staticmethodrArrMrPrLrXr[r]rbrdrfrirkrmr{r2r8r4r1r:r:$s **C)     -  A  D  *  *2F6r4r:ceZdZdZdZy)DiscreteDomainze A domain with discrete support with step size one. Represented using symbols and Range. TN)r5r6r7r} is_Discreter8r4r1rrsKr4rceZdZdZy)SingleDiscreteDomaincBt|j|jSr+)r%symbolrHr/s r1 as_booleanzSingleDiscreteDomain.as_booleans TXX..r4Nr5r6r7rr8r4r1rrs/r4rc eZdZdZedZy)ConditionalDiscreteDomainzb Domain with discrete support of step size one, that is restricted by some condition. c|j}t|jdkDrttdt |d}t |j |j|jjS)NrozJ Multivariate conditional domains are not yet implemented.r) r lenNotImplementedErrorr&r<r condition intersect fulldomainrH)r/rvs r1rHzConditionalDiscreteDomain.setsp \\ t|| q %j2M'NO O "Xa[0  $//--. /r4N)r5r6r7r}propertyrHr8r4r1rrs//r4rc<eZdZdZdZedZdZdZdZ dZ y)DiscretePSpaceTc4|j|jSr+)densityr rs r1r-zDiscretePSpace.pdfst||T\\**r4c$t|}tfd|DsJt|dkDrtt dt ||d}|j jj}t|dj|S)Nc3NK|]}|jjvywr+)rr ).0rr/s r1 z'DiscretePSpace.where..s9188t||+9s"%rozIMultivariate discrete random variables are not yet supported.r) rallrrr&rrdomainrHrr)r/rrvsconditional_domains` r1wherezDiscretePSpace.wheresY'9S9999 s8a<%j27'89 9>y F/99$++//J#CFMM3EFFr4ct|t}|r&t|jd|jd} |j |j }|dk(s|t jurt jS|dk(s||jj k(rt jS|j|}| t3|}|s|St j|z S#t$rddl m}|j|j z }||}t|t"sddlm}||}t)dd} t+| |} | j-|j/| j0d}YwxYw) NrroFT)r)DiscreteDistributionHandmaderEr_) isinstancer r r0rrHr EmptySetZerorOne eval_probrsympy.stats.rvrlhsrhsr)sympy.stats.drv_typesrr SingleDiscretePSpace probability __class__valuer!) r/r complement_domainprobrrtdensrrEspaces r1rzDiscretePSpace.probabilitys; 2. 9>>!,innQ.?@I Jjj+//GE!W %:vv D Gt{{$>uu >>'*D <y)D%t71554<7# J .==9==0D4=Dd$89N3D9c%A(D1E$$Y%8%8a%HID JsAC<-C*CBE43E4c tjd}t|trktdd}d|jD\}}}j j |||z}t||||z ||z dz fj}|St|tr,t|j  t fd|D}|St|tr tfd|jD}|Sy) NrnTr`c3 K|]}|ywr+r8)rrs r1rz+DiscretePSpace.eval_prob..s6Aa6s roc3.K|] }|ywr+r8)rrCr-s r1rz+DiscretePSpace.eval_prob.. s-SV-sc3@K|]}j|ywr+)r)rrCr/s r1rz+DiscretePSpace.eval_prob.. s=1T^^A&=s) r<r rr"r0r-replacerdoitr#rsumr$) r/rsymrrIrUstepsummandrr-s ` @r1rzDiscretePSpace.eval_probs4<< # gu %T*A66NCd))1T6G7CHsDj1n-//3tv I  +dhh'C-W--BI  '= ==BI(r4c.tt|j|j|j |z }|j |j Dcic]}||jc}}t|j|}t||Scc}wr+) rtupler r-rxreplacevaluesrrrr)r/rrrrs r1conditional_spacez DiscretePSpace.conditional_spaceswt||,dhht7G7G 7R.RS&& 'L"BII 'LM *4;; Bfg..(MsBN) r5r6r7is_realrrr-rrrrr8r4r1rrs3GK ++ G82$/r4rceZdZdZy)ProductDiscreteDomainc`t|jDcgc]}|jc}Scc}wr+)rdomainsr)r/rs r1rz ProductDiscreteDomain.as_booleans%T\\B6V&&BCCBs+Nrr8r4r1rrsDr4rcbeZdZdZdZedZedZd dZddZ dZ d Z d Z d Z d Zy)rz> Discrete probability space over a single univariate variable Tc.|jjSr+) distributionrHrs r1rHzSingleDiscretePSpace.sets  $$$r4cBt|j|jSr+)rrrHrs r1rzSingleDiscretePSpace.domain#s#DKK::r4NcV|j|jj|||iS)zp Internal sample method. Returns dictionary mapping RandomSymbol to realization value. )libraryseed)rrsample)r/sizerrs r1rzSingleDiscretePSpace.sample's,  D--44T7QU4VWWr4c |xs |jf}|j|vr|St|}|j|Dcic]}||jc}}|jj} |jj ||fd|i|Scc}w#t $rHt||jz||jj|jjffi|cYSwxYw)Nrv) rr'rrrr{rrr-rHrIrU)r/rtrrvrJrrCs r1compute_expectationz(SingleDiscretePSpace.compute_expectation/s"djj] ::S K~}}c:b"))m:; JJ   04$$00q8  ; # tdhhDHHLL$((,,(G  sB.BAC$#C$c ||jk(r4tdd}t||jj|fi|St )NrCTr_)rr rrrLr)r/rtrJrCs r1rMz SingleDiscretePSpace.compute_cdf?sI 4:: c%A!2T..221??@ @%' 'r4c L||jk(r |jStr+)rrr)r/rtrJs r1compute_densityz$SingleDiscretePSpace.compute_densityFs# 4:: $$ $!##r4c ||jk(r4tdd}t||jj|fi|St NrVTr_)rr rrr]rr/rtrJrVs r1rXz4SingleDiscretePSpace.compute_characteristic_functionKsI 4:: c%A!FT..FFqSFST T%' 'r4c ||jk(r4tdd}t||jj|fi|St r)rr rrrfrrs r1rbz7SingleDiscretePSpace.compute_moment_generating_functionRsI 4:: c%A!IT..II!VvVW W%' 'r4c ||jk(r4tdd}t||jj|fi|St )NrhTr_)rr rrrmr)r/rtrJrhs r1riz%SingleDiscretePSpace.compute_quantileYsI 4:: c%A!7T..77DVDE E%' 'r4)r8scipyN)NT)r5r6r7r}rrrHrrrrMrrXrbrir8r4r1rrsTHG %%;;X ($ (((r4rN)Esympy.concrete.summationsrrsympy.core.basicrsympy.core.cachersympy.core.functionrsympy.core.numbersrsympy.core.relationalr r sympy.core.singletonr sympy.core.symbolr r sympy.core.sympifyr(sympy.functions.combinatorial.factorialsr&sympy.functions.elementary.exponentialr#sympy.functions.elementary.integersr$sympy.functions.elementary.piecewisersympy.logic.boolalgrsympy.polys.polytoolsrsympy.series.seriesrsympy.polys.polyerrorsrsympy.stats.crvrrrrrrrrrrr sympy.stats.symbolic_probabilityr!sympy.sets.fancysetsr"r#sympy.sets.setsr$sympy.sets.containsr%sympy.utilitiesr&r'r)r:rrrrrrr8r4r1rs6"$& *".&>65:#&&2=99991!(&'< N!5~Nb\/></ /0A / D/VD/LDM>DC(><C(r4