Re: piecewice pdf, problems with cdf
- To: mathgroup at smc.vnet.net
- Subject: [mg105371] Re: [mg105365] piecewice pdf, problems with cdf
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Mon, 30 Nov 2009 06:09:40 -0500 (EST)
- References: <200911291012.FAA16385@smc.vnet.net>
- Reply-to: drmajorbob at yahoo.com
If it's a piecewise function... use Piecewise!! Clear[x, f1, cdf] f1[x_] = Piecewise[{{x^2/9, 0 <= x <= 3}}]; cdf[x_] = Piecewise[{{Assuming[0 < x <= 3, Integrate[f1@v, {v, -Infinity, x}]], 0 < x <= 3}}]; Plot[cdf@x, {x, -5, 5}] Bobby On Sun, 29 Nov 2009 04:12:35 -0600, michael partensky <partensky at gmail.com> wrote: > Hi! Teaching the continuous distributions, I needed to introduce the > piecewise functions. > Here is the example that did not work well: > > In[56]:= f1[x_] /; 0 < x <= 3 := 1/9 x ^2; > f1[x_] := 0; > > Plot[f1[x],{x,-1,4}] works fine. However, the results for cdf are > ambiguous > In[57]:= cdf[x_] := Integrate[f1[v], {v, -\[Infinity], x}] > > In[59]:= cdf[1] > Out[59]= 0 > > I thought that may be the second definition (for some reason) overwrote > the > first, but apparently this was not the case. > > Then I tried using Which, > > f1[x_] := Which[0 < x <= 3, x^2/9, x <= 0 || x > 3, 0]; > > Plot[f2[x], {x, -1, 4}] worked fine. > > However, Plotting CDF is very slow. > > What is the reason for the first error and how to accelerate (compile?) > the > second? > > Thanks > Michael > > PS: I was aware about the issues with the derivatives of Piecewise > functions, but expected integration to be safe. What did i do wrong? > > On Tue, Nov 24, 2009 at 5:50 AM, Bill Rowe <readnews at sbcglobal.net> > wrote: > >> On 11/23/09 at 6:53 AM, lshifr at gmail.com (Leonid Shifrin) wrote: >> >> >Hi, Michael. >> >> >Your solution is indeed very memory - hungry due to the mapping of >> >Permutations, as you mentioned. The total number of permutations can >> >be easily deduced from the list of multiplicities of elements in a >> >given partition: n!/(n1!n2!...nk!), where n1, ..., nk are >> >multiplicities of elements, and n is the length of the partition: >> >n=n1+...+nk. The multiplicities can be obtained by Tally. The >> >following modification can be realistically used in a much wider >> >region of the problem's parameter space than your original one, and >> >may possibly serve your needs. >> >> >In[1]:= >> >Clear[outsNew]; >> >outsNew[sum_, thr_] := >> >Total[Factorial[Length[#]]/ >> >Times @@ Factorial[Tally[#][[All, 2]]] & /@ >> >Cases[IntegerPartitions[sum, thr, {1, 2, 3, 4, 5, 6}], >> >Table[_, {thr}]]]; >> >> The above can be made more efficient by using the form of >> IntegerPartitions that only generates partitions of a given >> length. That is >> >> outs[sum_, thr_] := >> Total[Factorial[Length[#]]/ >> Times @@ Factorial[Tally[#][[All, 2]]] & /@ >> IntegerPartitions[sum, {thr}, {1, 2, 3, 4, 5, 6}]] >> >> does the same thing a bit more efficiently >> >> >> > -- DrMajorBob at yahoo.com
- References:
- piecewice pdf, problems with cdf
- From: michael partensky <partensky@gmail.com>
- piecewice pdf, problems with cdf