MathGroup Archive 1996

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

Search the Archive

Critique of these Stieltjes Integration Functions?

I'd appreciate any critque you might have of these functions for computing 
Stieltjes integrals, or any pointers to literature where quadrature of
this type of integration might be discussed.

(* Functions for Computing Stieltjes Integrals

(* The following functions will approximate the Stieltjes integral
   of the function f with respect to the function g, where both
   are functions of t.  The range min..max is the range in which
   you wish there to be exactly (10^fact)+1 samplings of f and g.
   If g is a CDF in the probability sense, and if the random variable
   it represents has a finite range, then min and max could be set
   to the infimum and supremum of that range, respectively.
   If g is a CDF in the probability sense, and it has an infinite
   range, then sampling outside of the min/max range is done at the
   discretion of the NSum Mathematica function, using the
   Wynn-Epsilon method. *)

(* At this point, a modified "Riemann sums" approach is used.
   The reason I am posting this to Usenet is that I would like
   to learn if there is some way the normal Mathematica
   Integrate and NIntegrate functions can be used to compute
   Stieltjes integrals, or if some method more advanced than
   the method I am using here, could be employed to get better
   and faster results.  The results from these functions are
   often very crude, especially when fact is low or either
   (0<=t<Infinity) or (-Infinity<t<Infinity) is being
   considered.  I can be e-mailed at sfpse at
   if you have any suggestions, or references to the literature
   where quadrature of Stieltjes integrals is discussed (I have
   so far found no such references).

(* This function is used when one only wishes to consider
   min<=t<=max.  For example, if g were the CDF for some
   random variable which takes on values in the range
   min...max, one could calculate the mean of this random variable
   with the command StieltjesIntegral[t, g, {t, min, max}] *)

StieltjesIntegral[f_, g_, {t_, min_:0, max_:1}, fact_:2] :=
   Sum[N[((g /. t->t0)-(g /. t->(t0-di))) (f /. t->t0)],
       {t0, min, max, di}]]

(* StieltjesIntegralH will perform integration for 0<=t<Infinity,
   and StieltjesIntegralG will perform integration for
   -Infinity<t<Infinity.  The method used may fail if there
   are discontinuities outside of the min..max range *)

StieltjesIntegralG[f_, g_, {t_, min_:0, max_:1}, fact_:2] :=
   With[{n=10^fact, di=(max-min)/(10^fact), tfirst=(min+max)/2},
   NSum[((g /. t->((-1)^i (Floor[(i-1)/2]+1) di + tfirst))-
         (g /. t->(((-1)^i (Floor[(i-1)/2]+1) di + tfirst)-di)))*
         (f /. t->((-1)^i (Floor[(i-1)/2]+1) di + tfirst))
   ,{i, 0, Infinity}, NSumTerms->(n+1), Method->Fit]]

StieltjesIntegralH[f_, g_, {t_, min_:0, max_:1}, fact_:2] :=
   With[{n=10^fact, di=(max-min)/(10^fact)},
   NSum[((g /. t->t0)-(g /. t->(t0-di))) (f /. t->t0),
       {t0, min, Infinity, di}, NSumTerms->(n+1), Method->Fit]]

Russell D. Brunelle             |  Lab Ph.:  (206) 685-4343
University of Washington        |  Fax:      (206) 685-3072
Industrial Engineering          |  Home Ph.: (206) 526-5328
Box 352650                      |  E-Mail:   sfpse at
Seattle, WA 98195-2650          |


  • Prev by Date: Re: Kei Ker from Bessel functions
  • Next by Date: manipulating expressions
  • Previous by thread: Re: How to Solve a Quadratic Programming problem?
  • Next by thread: manipulating expressions