Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

piecewice pdf, problems with cdf

  • To: mathgroup at smc.vnet.net
  • Subject: [mg105365] piecewice pdf, problems with cdf
  • From: michael partensky <partensky at gmail.com>
  • Date: Sun, 29 Nov 2009 05:12:35 -0500 (EST)

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
>
>
>


  • Prev by Date: Re: Bug ??????
  • Next by Date: Re: Re: Setting global InputAutoReplacements
  • Previous by thread: Re: Using GraphPlot to draw an empty graph
  • Next by thread: Re: piecewice pdf, problems with cdf