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. 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 [[alternative HTML version deleted]]
> On Dec 16, 2015, at 12:24 PM, peter dalgaard <pdalgd at gmail.com> wrote: > > >> 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?Here's a plotmath version that positions the expression in the center of the plot region. 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 = 5, border = "red") points(right, fr, col = "red", cex = 1.25, pch = 19) text(x=(xmax-xmin)/2, y=(f(xmax)-f(xmin))/2, bquote( integral(.(body(f))*dx, a, b) == .(sum(fr * dx)) ), col="orange" ) } Works as desired with sqrt(x) showIntegral.rt(f=function(x) sqrt(x), xmin=0, xmax=4, n=5000) With higher n, one gets an animation effect in the painting of the interactive window. -- David.> > -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 >>>>>>>> >>>>>>>> -- >David Winsemius Alameda, CA, USA