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