首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何利用Julia中的vegas计算高维无限界多重积分

如何利用Julia中的vegas计算高维无限界多重积分
EN

Stack Overflow用户
提问于 2022-04-18 13:41:12
回答 2查看 138关注 0票数 3

我试图用Julia (>1400维)计算高维积分。因此,我试图用拉斯维加斯函数来实现这一点,因为它大概可以计算高维积分。然而,维加斯假设积分域为0,1^n,而我的积分大于R^n,维加斯的文档提出了变量的变化,但我无法使它在多个维度上工作。

所以,如果我输入Julia,在二维中输入以下积分:

代码语言:javascript
运行
复制
using LinearAlgebra, Cuba
multinormal(x,μ,Σ) = det(2*π*Σ)^(-1/2)*exp(-1/2*(x-μ)'*inv(Σ)*(x-μ))
vegas((x,f)->f=multinormal(x,[0;0],[1 0;0 1]),2)

我得到了结果

代码语言:javascript
运行
复制
Component:
 1: 0.0 ± 7.025180405943273e-18 (prob.: -999.0)
Integrand evaluations: 1000
Number of subregions:  0
Note: The desired accuracy was reached

它假定积分大于0,1^2。

为了在[0,无穷大)^2上计算相同的积分,我尝试将变量的变化表示为这里

代码语言:javascript
运行
复制
vegas((x,f)->f=multinormal(x./(1 .- x),[0;0],[1 0;0 1])./(1 .-x).^2,2)

这给了我结果

代码语言:javascript
运行
复制
Component:
 1: 0.0 ± 7.025180405943273e-18 (prob.: -999.0)
Integrand evaluations: 1000
Number of subregions:  0
Note: The desired accuracy was reached

但结果应该是0.5,而不是0。

如何利用维加斯计算具有无限积分极限的多元正态分布的积分?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-28 12:14:39

最后,我只是近似于这里建议的积分:https://stats.stackexchange.com/questions/228687/approximation-expectation-integral

例如,为了计算多维正态分布变量x的期望值E,我这样做了:

代码语言:javascript
运行
复制
using Distributions, LinearAlgebra
sampleSize = 1000;
dist = MvNormal([0;0],I);
x = rand(dist,sampleSize);
E = 1/sampleSize*sum([x[:,r] for r in 1:sampleSize])

这种方法的方便之处在于它对高维非常有效(在我的例子中,x的维数>1400)。

票数 0
EN

Stack Overflow用户

发布于 2022-04-22 11:31:13

如果您使用Quadrature.jl,它将自动为您执行必要的变量更改。然后您只需使用[-Inf,Inf]界。参见测试中的示例:

tests.jl

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71912576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档