Re: PiecewiseExpand bug?
- To: mathgroup at smc.vnet.net
- Subject: [mg68500] Re: PiecewiseExpand bug?
- From: Mark Fisher <mark at markfisher.net>
- Date: Tue, 8 Aug 2006 06:28:36 -0400 (EDT)
- References: <eb45vn$n7p$1@smc.vnet.net> <eb6k48$nlh$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Let me put it slightly differently: expr1 = Product[PDF[BernoulliDistribution[p], x[i]], {i, 3}]; expr2 = PiecewiseExpand[expr1]; Simplify[expr1 == expr2] produces p^2 == p || x[1] != 0 || x[2] != 1 || x[3] != 1 so that if x[1] == 0 && x[2] == 1 && x[3] == 1 && p^2 != p then expr1 and expr2 are not the same! Therefore, if PiecewiseExpand is *not* supposed to change the what the expression evaluates to, then this would seem to be a bug. --Mark. Jean-Marc Gulliet wrote: > Mark Fisher wrote: >> This produces what I expect: >> >> Product[PDF[BernoulliDistribution[p], x[i]], {i, 3}] /. >> {x[1] -> 0, x[2] -> 1, x[3] -> 1} >> >> But this does not: >> >> PiecewiseExpand[Product[PDF[BernoulliDistribution[p], x[i]], {i, 3}]] /. >> {x[1] -> 0, x[2] -> 1, x[3] -> 1} >> >> It appears PiecewiseExpand does something it shouldn't here. Any thoughts? > > No, it does not: you are not computing the same expressions because of > the location of the transformation rules. You can clearly see what's > going on with the Trace function if needed. > > In[1]:= > << "Statistics`DiscreteDistributions`" > > In[2]:= > Product[PDF[BernoulliDistribution[p], x[i]], {i, 3}] /. {x[1] -> 0, x[2] > -> 1, x[3] -> 1} > > Out[2]= > (1 - p)*p^2 > > In[3]:= > PiecewiseExpand[Product[PDF[BernoulliDistribution[p], x[i]], {i, 3}]] /. > {x[1] -> 0, x[2] -> 1, x[3] -> 1} > > Out[3]= > 0 > > In[4]:= > PiecewiseExpand[Product[PDF[BernoulliDistribution[p], x[i]], {i, 3}] /. > {x[1] -> 0, x[2] -> 1, x[3] -> 1}] > > Out[4]= > (1 - p)*p^2 > > In[5]:= > PiecewiseExpand[(1 - p)*p^2] > > Out[5]= > (1 - p)*p^2 > > In[6]:= > Trace[Product[PDF[BernoulliDistribution[p], x[i]], {i, 3}] /. {x[1] -> > 0, x[2] -> 1, x[3] -> 1}] > > In[7]:= > Trace[PiecewiseExpand[Product[PDF[BernoulliDistribution[p], x[i]], {i, > 3}]] /. {x[1] -> 0, x[2] -> 1, x[3] -> 1}] > > Regards, > Jean-Marc >