作者hexjacal (黑麻糬)
看板Statistics
标题[程式] R code 多重积分的问题
时间Wed Nov 21 22:47:08 2012
[软体程式类别]:
R code
[程式问题]:
多重积分
[软体熟悉度]:
高(1年以上)
[问题叙述]:
目前要做一个多重数值积分的结果
内层两个函数
1. f1(v1,y1) 要把 v1 积掉
2. f2(v2,w,y1) 要把 w 积掉
3. 函数 1 & 2 积完後相乘,接着把 y1 积掉
从头到尾 w 都是 input 定数
积分结果出现了错误讯息
"evaluation of function gave a result of wrong length"
[程式范例]:
n1=n2=5;CPU1=CPU2=1
A1=2/sqrt(2*pi/(9*n1))*gamma((n1-1)/2)*(2/(n1-1))^((n1-1)/2)
A2=2/sqrt(2*pi/(9*n2))*gamma((n2-1)/2)*(2/(n2-1))^((n2-1)/2)
A=A1*A2
F1=function(y1)
{
f1=function(v1)
{
exp(-9*n1/2*(v1*y1-CPU1)^2)*(v1^(n1-1))*exp(-(n1-1)/2*v1^2)
}
return(f1)
}
int1=function(y1) {integrate(F1(y1),lower=0,upper=Inf)$value}
F2=function(w,y1)
{
f2=function(v2)
{
exp(-9*n2*(v2*(w+y1)-CPU2)^2/2)*v2^(n2-1)*exp(-(n2-1)/2*v2^2)
}
return(f2)
}
int2=function(w,y1) {integrate(F2(w,y1),lower=0,upper=Inf)$value}
F3=function(w)
{
f3=function(y1)
{
A*int1(y1)*int2(w,y1)
}
return(f3)
}
int3=function(w) {integrate(F3(w),lower=0,upper=Inf)}
先写 Global,都是一样的写法,int1, int2 函数都没问题。
但 int3 结果就会出毛病,似乎是资料型态的问题,尝试了一整天
sapply, mapply, Vectorize 等函数,还是无法克服
希望版上能有大大提供点想法
尽管只是个简单的三变数 x,y,z 积分也可以,感恩~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.108.134