[R] Graphing the Area of Definite Integral

David Winsemius dwinsemius at comcast.net
Wed Dec 16 20:09:53 CET 2015


> On Dec 16, 2015, at 9:00 AM, Steven Stoline <sstoline at gmail.com> wrote:
> 
> Dear William: *Left and Right Riemann Sums*
> 
> 
> Is there is a way to modify your function to compute Left Riemann Sum and
> Right Riemann Sum. I tried to modify yours, but i was not be able to make
> it work correctly.
> 
> This is your function used to compute the Middle Riemann Sum.

I think it's actually Dalgaard's method.
> 
> showIntegral.med <- function (f, xmin, xmax, n = 16)
> {
>    curve(f(x), from = xmin, to = xmax, lwd = 2, col = "blue")
>    abline(h = 0)
>    dx <- (xmax - xmin)/n
>    right <- xmin + (1:n) * dx
>    left <- right - dx
>    mid <- right - dx/2
>    fm <- f(mid)
>    rect(left, 0, right, fm, density = 20, border = "red")
>    points(mid, fm, col = "red", cex = 1.25, pch = 19)
>    sum(fm * dx)
> }
> 
> 
> 
> ### Example 1: f(x) = x^2  , xmin=-4, xmax=4
> ### ===============================
> 
> 
> 
> showIntegral.med(f=function(x)x^2, xmin=-4, xmax=4, n=16)

Wouldn't it just involve skipping the 'mid' calculations and using either the right or left values? Illustration for right:

showIntegral.rt <- function (f, xmin, xmax, n = 16)
{
   curve(f(x), from = xmin, to = xmax, lwd = 2, col = "blue")
   abline(h = 0)
   dx <- (xmax - xmin)/n
   right <- xmin + (1:n) * dx
   left <- right - dx
   fr <- f(right)
   rect(left, 0, right, fr, density = 20, border = "red")
   points(right, fr, col = "red", cex = 1.25, pch = 19)
   sum(fr * dx)
}

You can make it prettier with plotmath:

showIntegral.rt <- function (f, xmin, xmax, n = 16)
{
   curve(f(x), from = xmin, to = xmax, lwd = 2, col = "blue")
   abline(h = 0)
   dx <- (xmax - xmin)/n
   right <- xmin + (1:n) * dx
   left <- right - dx
   fr <- f(right)
   rect(left, 0, right, fr, density = 20, border = "red")
   points(right, fr, col = "red", cex = 1.25, pch = 19)
   sum(fr * dx)
 text(0,10,   # might want to do some adaptive positioning instead
   bquote( integral( .(body(f) )*dx, a, b) == .( sum(fr * dx )) ) )
}

-- 
David.

> 
> 
> 
> with many thanks
> steve
> 
> On Sat, Nov 28, 2015 at 1:11 PM, William Dunlap <wdunlap at tibco.com> wrote:
> 
>> Your right <- (1:n)*dx mean that your leftmost rectangle's left edge
>> is at 0, but you want it to be at -4.  You should turn this into a function
>> so you don't have to remember how the variables in your code depend
>> on one another.   E.g.,
>> 
>> showIntegral <- function (f, xmin, xmax, n = 16)
>> {
>>    curve(f(x), from = xmin, to = xmax, lwd = 2, col = "blue")
>>    abline(h = 0)
>>    dx <- (xmax - xmin)/n
>>    right <- xmin + (1:n) * dx
>>    left <- right - dx
>>    mid <- right - dx/2
>>    fm <- f(mid)
>>    rect(left, 0, right, fm, density = 20, border = "red")
>>    points(mid, fm, col = "red", cex = 1.25, pch = 19)
>>    sum(fm * dx)
>> }
>>> showIntegral(f=function(x)x^2, xmin=-4, xmax=4, n=16)
>> [1] 42.5
>>> showIntegral(f=function(x)x^2, xmin=-4, xmax=4, n=256)
>> [1] 42.66602
>>> showIntegral(f=function(x)x^2, xmin=-4, xmax=4, n=1024)
>> [1] 42.66663
>> 
>>> 2*4^3/3
>> [1] 42.66667
>>> showIntegral
>> Bill Dunlap
>> TIBCO Software
>> wdunlap tibco.com
>> 
>> 
>> On Fri, Nov 27, 2015 at 9:50 PM, Steven Stoline <sstoline at gmail.com>
>> wrote:
>>> Dear Peter: in my previous email I forgot to reply to the list too
>>> 
>>> I used your code for more than one examples, and it works nicely. But
>> when
>>> I tried to use for the the function: f(x) = x^2, it looks like I am
>> missing
>>> something, but I could not figured it out.
>>> 
>>> This what I used:
>>> 
>>> 
>>> 
>>> f <- function(x) x^2
>>> 
>>> curve(f(x), from=-4, to=4, lwd=2, col="blue")
>>> abline(h=0)
>>> n <- 16
>>> dx <- 8/n
>>> right <- (1:n)*dx
>>> left <- right - dx
>>> mid <- right - dx/2
>>> fm <- f(mid)
>>> rect(left,0,right,fm, density = 20, border = "red")
>>> points(mid, fm, col = "red", cex = 1.25, pch=19)
>>> sum(fm*dx)
>>> 
>>> 
>>> 
>>> 1/3 * (64+64)
>>> 
>>> 
>>> 
>>> with many thanks
>>> steve
>>> 
>>> On Fri, Nov 27, 2015 at 3:36 PM, Steven Stoline <sstoline at gmail.com>
>> wrote:
>>> 
>>>> many thanks
>>>> 
>>>> steve
>>>> 
>>>> On Fri, Nov 27, 2015 at 9:20 AM, peter dalgaard <pdalgd at gmail.com>
>> wrote:
>>>> 
>>>>> Something like this?
>>>>> 
>>>>> f <- function(x) x^3-2*x
>>>>> curve(f(x), from=0, to=4)
>>>>> abline(h=0)
>>>>> n <- 16
>>>>> dx <- 4/n
>>>>> right <- (1:n)*dx
>>>>> left <- right - dx
>>>>> mid <- right - dx/2
>>>>> fm <- f(mid)
>>>>> points(mid, fm)
>>>>> rect(left,0,right,fm)
>>>>> 
>>>>> sum(fm*dx)
>>>>> 
>>>>> 1/4 * 4^4 - 4^2
>>>>> 
>>>>> 
>>>>> -pd
>>>>> 
>>>>> 
>>>>> On 27 Nov 2015, at 13:52 , Steven Stoline <sstoline at gmail.com> wrote:
>>>>> 
>>>>>> Dear All:
>>>>>> 
>>>>>> I am trying to explain to my students how to calculate the definite
>>>>>> integral using the Riemann sum. Can someone help me to graph the area
>>>>> under
>>>>>> the curve of the function, showing the curve as well as the
>> rectangles
>>>>>> between 0 and 4..
>>>>>> 
>>>>>> *f(x) = x^3 - 2*x *
>>>>>> 
>>>>>> over the interval [0 , 4]
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> with many thanks
>>>>>> steve
>>>>>> 
>>>>>> --
>>>>>> Steven M. Stoline
>>>>>> 1123 Forest Avenue
>>>>>> Portland, ME 04112
>>>>>> sstoline at gmail.com
>>>>>> 
>>>>>>      [[alternative HTML version deleted]]
>>>>>> 
>>>>>> ______________________________________________
>>>>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>>>> PLEASE do read the posting guide
>>>>> http://www.R-project.org/posting-guide.html
>>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>> 
>>>>> --
>>>>> Peter Dalgaard, Professor,
>>>>> Center for Statistics, Copenhagen Business School
>>>>> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
>>>>> Phone: (+45)38153501
>>>>> Office: A 4.23
>>>>> Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>> 
>>>> 
>>>> --
>>>> Steven M. Stoline
>>>> 1123 Forest Avenue
>>>> Portland, ME 04112
>>>> sstoline at gmail.com
>>>> 
>>> 
>>> 
>>> 
>>> --
>>> Steven M. Stoline
>>> 1123 Forest Avenue
>>> Portland, ME 04112
>>> sstoline at gmail.com
>>> 
>>>        [[alternative HTML version deleted]]
>>> 
>>> ______________________________________________
>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>> 
> 
> 
> 
> -- 
> Steven M. Stoline
> 1123 Forest Avenue
> Portland, ME 04112
> sstoline at gmail.com
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list