Variables in ProbabilityDistribution have strange "scoping" mechanism
- To: mathgroup at smc.vnet.net
- Subject: [mg132551] Variables in ProbabilityDistribution have strange "scoping" mechanism
- From: CHARLES GILLINGHAM <cgillingham1 at me.com>
- Date: Fri, 11 Apr 2014 02:08:49 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <20140410070657.9900D69EE@smc.vnet.net>
Bill Rowe brings up an interesting point. Does anyone know why the variables in ProbabilityDistribution use such an unusual form of scoping (forgive me if this is not the correct term). Why doesn't it operate analogously to Sum? Consider these four cases: Table[Sum[f[x], {x, 0, 3}], {y, 0, 3}] Table[Sum[f[x], {x, 0, 3}], {x, 0, 3}] Table[ProbabilityDistribution[f[x], {x, 0, 3}], {y, 0, 3}] Table[ProbabilityDistribution[f[x], {x, 0, 3}], {x, 0, 3}] In case 2, Mathematica correctly determines the scope of the inner variable, and knows that it is a different variable than the outer one. In case 4, Mathematica fails in a bizarre way when there is a collision between internally and externally scoped variables. Mathematica produces these nonsensical distributions: ProbabilityDistribution[f[x],{x,x,3}] ProbabilityDistribution[f[x],{x,0,x}] for reasons that are unclear. Mathematica works correctly for this case. Mathematica knows that globalVariableX is local in both Sum and ProbabilityDistribution, however note that ProbabilityDistribution renames it to x, which is not ideal, but workable. globalVariableX = 21 Sum[f[globalVariableX], {globalVariableX, 0, 3}] ProbabilityDistribution[f[globalVariableX], {globalVariableX, 0, 3}] ClearAll[globalVariableX] On Apr 10, 2014, at 12:06 AM, Bill Rowe <readnews at sbcglobal.net> wrote: > On 4/9/14 at 4:14 AM, cgillingham1 at me.com (CHARLES GILLINGHAM) wrote: > >> Evaluate this: > >> ProbabilityDistribution[ >> Piecewise[{{0, x1 == 1 && x2 == 1}, {1/2, x1 == 1 && x2 == 0}, {0, >> x1 == 0 && x2 == 1}, {1/2, x1 == 0 && x2 == 0}}], {x1, 0, 1, >> 1}, {x2, 0, 1, 1} >> ] >> PDF[%][{1, 1}] > >> And you get: > >> Undefined > >> But the probability is obviously 0 > >> Is there something I am misunderstanding about how simple Boolean >> probability distributions should be set up? > > Start with a fresh session and pay attention to the syntax > coloring. Note that x1 and x2 are undefined and your syntax does > not make these local variables. That is entering > > f[x_]:=2 x > > will cause x to be colored differently than your x1, x2 above. > > You get undefined as a result since x1 and x2 are never defined. > >
- References:
- Re: Bug with ProbabilityDistribution
- From: Bill Rowe <readnews@sbcglobal.net>
- Re: Bug with ProbabilityDistribution