C 以极限为函数的R中的n维积分
我知道R软件包,如C 以极限为函数的R中的n维积分,c,r,integration,numerical,C,R,Integration,Numerical,我知道R软件包,如cubature,能够对许多积分执行数值积分。然而,在我的情况下,积分的极限不是整数,而是其他变量的函数 例如,假设我有 f(x,y)=4*(x-y)*(1-y),其中0
cubature
,能够对许多积分执行数值积分。然而,在我的情况下,积分的极限不是整数,而是其他变量的函数
例如,假设我有
f(x,y)=4*(x-y)*(1-y),其中0pracma
包是否可能做到这一点?)
如果这还没有实现,我会很惊讶,但是在这种情况下,一个指向算法的链接会很有帮助。如果你只需添加(或者说乘以)一个术语,将函数的值设置为零,在任何(x,y)-元组中,其中(y>=x)
库(pracma)
乐趣您可以将域拆分为三个三角形(制作一张图片)。通过在列中指定三角形的顶点来定义这三个三角形:
T1 <- cbind(c(0,0), c(1,0), c(1,1))
T2 <- cbind(c(1,0), c(2,0), c(1,1))
T3 <- cbind(c(1,1), c(2,1), c(2,0))
定义被积函数:
f <- function(xy) 4*(xy[1]-xy[2])*(1-xy[2])
积分的精确值为17/6=2.833333..
。因此,我们得到的近似值比另一个答案中的pracma
给出的近似值要好(毫不奇怪:具有项的被积函数)(y p printPoly(p)
多项式有4个项和2个变量
4*x[1]^1(度=1)
-4*x[1]^1*x[2]^1(学位=2)
-4*x[2]^1(度=1)
+4*x[2]^2(度=2)
>积分单指数项(p,域)
$integral
[1] 2.833333
$functionEvaluations
[1] 9
条件应该是x>=y
,但感谢您的回答,我实际上在我使用*(y
的地方发布了答案。然后我查看了答案,决定将其翻转并更改,但现在我检查了逻辑,我同意您是正确的,并将恢复。
Domain <- abind::abind(T1, T2, T3, along=3)
f <- function(xy) 4*(xy[1]-xy[2])*(1-xy[2])
library(SimplicialCubature)
> adaptIntegrateSimplex(f, Domain)
$integral
[1] 2.833333
$estAbsError
[1] 2.833333e-12
$functionEvaluations
[1] 96
> p <- definePoly(c(4,-4,-4,4), rbind(c(1,0),c(1,1),c(0,1),c(0,2)))
> printPoly(p)
Polynomial has 4 terms and 2 variables
4 * x[1]^1 (degree= 1 )
-4 * x[1]^1 * x[2]^1 (degree= 2 )
-4 * x[2]^1 (degree= 1 )
+ 4 * x[2]^2 (degree= 2 )
> integrateSimplexPolynomial(p, Domain)
$integral
[1] 2.833333
$functionEvaluations
[1] 9