[R] Graphing the Area of Definite Integral

William Dunlap wdunlap at tibco.com
Wed Dec 16 18:25:45 CET 2015


showIntegral <- function (f, xmin, xmax, n = 16, fractionFromLeft = 0.5)
{
    stopifnot(fractionFromLeft >= 0, fractionFromLeft <= 1, n >=
        1)
    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 * (1 - fractionFromLeft)
    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(function(x)1/x, 1, 4, n=3) - sum(1/(0.5 + (1:3)))
[1] 0
> showIntegral(function(x)1/x, 1, 4, n=3, fractionFromLeft=0) - sum(1/(0 + (1:3)))
[1] 0
> showIntegral(function(x)1/x, 1, 4, n=3, fractionFromLeft=1) - sum(1/(1 + (1:3)))
[1] 0

Bill Dunlap
TIBCO Software
wdunlap tibco.com


On Wed, 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.
>
>
>
> 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)
>
>
>
> 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



More information about the R-help mailing list