Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2001
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2001

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

Search the Archive

Re: "Incremental Integration"?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg31788] Re: [mg31774] "Incremental Integration"?
  • From: BobHanlon at aol.com
  • Date: Sun, 2 Dec 2001 04:25:04 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

In a message dated 2001/12/1 4:30:41 AM, siegman at stanford.edu writes:

>Given a rather messy function  f[x] , I want to make a Table of its integral
>
>from  x0 up to a set of equally spaced points xn = x0 + n*dx  with maximum
>value 
>xFinal -- in other words
>
>   g[x_] := NIntegrate[f[xi], {xi, x0, x}]
>
>   Table[ {x, g[x]}, {x, x0, xFinal, dx}]
>
>Is Mathematica smart enough to calculate each successive value using the
>
>previous value plus integration just over the increment in x to the next
>value?
>
>If not, what would be a clean and readable and also reasonably efficient
>way to 
>code this?
>
>[Note:  For me anyway, there's some emphasis on the "clean and readable"
>part -- 
>avoiding esoteric Mathematica syntax, not taking terseness as the ultimate
>goal.]
>

f[x_] := x^2;

x0=0; xFinal=10; dx=2;

rng = Range[x0, xFinal, dx];

Transpose[{rng, 
    FoldList[#1+#2&,0,
      NIntegrate[f[x],{x,#[[1]],#[[2]]}]& /@ 
        Partition[rng,2,1]]}]

If readability is taken as the primary metric for code, then you will likely 
end up 
using predominantly procedural programming and not make effective use of 
functional programming.  If a complex expressions cannot be read easily, 
build the 
expression step-by-step and convert all of the steps (input and output) into 
a merged 
text cell to keep with the code.  This should be done in as general a form as 
is 
practical.  For example, evaluate, merge, and convert to text the following

Clear[x0,f]
rng = {x0,x1,x2,x3};
Partition[%,2,1]
Integrate[f[x], {x,#[[1]],#[[2]]}]& /@ %
FoldList[#1+#2&,0,%]
(* NOTE: For NIntegrate the numbers are folded and each integral is evaluated 
once. *)
{rng,%}
Transpose[%]


Bob Hanlon
Chantilly, VA  USA


  • Prev by Date: Re: Finding determinants of nxn matrices
  • Next by Date: Re: "Incremental Integration"?
  • Previous by thread: Re: "Incremental Integration"?
  • Next by thread: Re: "Incremental Integration"?