[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)
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
>>>>> 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
>> 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
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius
Alameda, CA, USA

```