gpt4 book ai didi

r - 用 R 进行三重积分计算

转载 作者:行者123 更新时间:2023-12-04 12:59:09 31 4
gpt4 key购买 nike

这是我第一次使用 stackoverflow,所以请耐心等待!
我正在使用 R 包“pracma”来计算三重积分。
这是我的代码:

mu1=0
mu2=0
mu3=0
mu4=0
sigma1=1
sigma2=1
sigma3=1
sigma4=1
f3=function(x,y,z){dnorm(z,mean = mu2,sd=sigma2)*dnorm(y,mean =
mu3,sd=sigma3)*(1-pnorm(z,mean= mu1,sd=sigma1))*dnorm(x,mean =
mu4,sd=sigma4)}
ymin=function(x){x}
zmin=function(x,y){y}
integral3(f3,xmin = -100,xmax = 100,ymin,ymax=100,zmin,zmax = 100)

但是,实际上,我收到以下错误:
 Error in if (adjerr[1] > localtol) { :

missing value where TRUE/FALSE needed

有人可以给我一个提示来解决这个问题吗?
预先感谢

最佳答案

这是因为您设置的最大值和最小值。
在您的 f3() 函数中,您使用 dnorm() 操作,一旦您在 [-8,8] 间隔之外,它会很快达到 0:

dnorm(0:20)
##[1] 3.989423e-01 2.419707e-01 5.399097e-02 4.431848e-03 1.338302e-04 1.486720e-06 6.075883e-09 9.134720e-12 5.052271e-15 1.027977e-18
##[11] 7.694599e-23 2.118819e-27 2.146384e-32 7.998828e-38 1.096607e-43 5.530710e-50 1.026163e-56 7.004182e-64 1.758750e-71 1.624636e-79
##[21] 5.520948e-88

如果您为 min 和 max 参数使用一些合理的值,该函数将按预期工作:
library(pracma)
mu1=0
mu2=0
mu3=0
mu4=0
sigma1=1
sigma2=1
sigma3=1
sigma4=1
f3=function(x,y,z){dnorm(z,mean = mu2,sd=sigma2)*dnorm(y,mean =
mu3,sd=sigma3)*(1-pnorm(z,mean= mu1,sd=sigma1))*dnorm(x,mean =
mu4,sd=sigma4)}
xmin <- -10
xmax <- 10
ymin=function(x){x}
ymax <- 10
zmin=function(x,y){y}
zmax <- 10
integral3(f3, xmin, xmax ,ymin, xmax, zmin, zmax)
# [1] 0.04166667

关于r - 用 R 进行三重积分计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50414023/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com