[R] Graphing the Area of Definite Integral

peter dalgaard pdalgd at gmail.com
Wed Dec 16 21:24:53 CET 2015


> On 16 Dec 2015, at 20:58 , Steven Stoline <sstoline at gmail.com> wrote:
> 
> Dear David:
> 
> 
> could you please try it for the functions f(x)=x^2 from -4 to 4 and the function f(x) = sqrt(x) from 0 to 4, and look watch the graphs.

Looks fine to me, at least the non-plotmath version?

-pd

> 
> 
> Thank you very much for your helps.
> 
> 
> steve
> 
> 
> On Wed, Dec 16, 2015 at 2:09 PM, David Winsemius <dwinsemius at comcast.net> wrote:
> 
> > 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
> 
> 
> 
> 
> -- 
> Steven M. Stoline
> 1123 Forest Avenue
> Portland, ME 04112
> sstoline at gmail.com

-- 
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



More information about the R-help mailing list