Integration in R
On 08-01-2013, at 19:51, Naser Jamil <jamilnaser79 at gmail.com> wrote:
Thanks. But then how to implement condition like 0<x1<x2<7? I would be happy to know that.
David implemented the condition by multiplying by x[1]<x[2] which in a numeric context is 0 when x[1]<x[2] en 1 when x[1]>=x[2]. That is what your requirement does. The condition 0<x1<x2<7 has been split into three separate parts 0<x1<7 0<x2<7 x1<x2 The first two can be converted to arguments of adaptIntegrate. The last is inserted into the function definition effectively making the function return 0 when x1>x2 which is what your inequality implies. Berend
On 8 January 2013 18:41, David Winsemius <dwinsemius at comcast.net> wrote:
Please reply on list. On Jan 8, 2013, at 10:27 AM, Naser Jamil wrote: Hi David,
x[2] is the second variable, x2. It comes from the condition 0<x1<x2<7.
No, it doesn't come from those conditions. It is being grabbed from some "x"-named object that exists in your workspace. If your limits were 7 in both dimensions, then the code should be: adaptIntegrate(f, lowerLimit = c(0, 0), upperLimit = c(7,7)) #---- $integral [1] 228.6667 (At this point I was trusting R's calculus abilities more than yours. I wasn't too trusting of mine either, and so tried seeing if Wolfram Alpha would accept this expression: integrate 2/3 (x+y) over 0< x<7, 0<y<7 ; which it did and calculating the decimal expansion of the exact fraction:
686/3
[1] 228.6667
-- David.
Thanks.
On 8 January 2013 18:11, David Winsemius <dwinsemius at comcast.net> wrote:
On Jan 8, 2013, at 9:43 AM, Naser Jamil wrote:
Hi R-users.
I'm having difficulty with an integration in R via
the package "cubature". I'm putting it with a simple example here. I wish
to integrate a function like:
f(x1,x2)=2/3*(x1+x2) in the interval 0<x1<x2<7. To be sure I tried it
by hand and got 114.33, but the following R code is giving me 102.6667.
------------------------------**------------------------------**-------
library(cubature)
f<-function(x) { 2/3 * (x[1] + x[2] ) }
adaptIntegrate(f, lowerLimit = c(0, 0), upperLimit = c(x[2],7))
What is x[2]? On my machine it was 0.0761, so I obviously got a
different answer.
--
David Winsemius, MD
Alameda, CA, USA
David Winsemius, MD Alameda, CA, USA
[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list 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.