為什麼這篇多重積分鄉民發文收入到精華區:因為在多重積分這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者hexjacal (黑麻糬)看板Statistics標題[程式] R code 多重積分的問題時...
多重積分 在 ??? 政大 | 科系職涯訪談 | 個人成長 | IG經營 Instagram 的精選貼文
2021-07-11 08:50:48
微積分難嗎? 不知道現在大一的學弟妹們過了一學期之後覺得如何呢~ 會不會有課程特別難 或是其實對你來說十分拿手,還不需要操心 教授教的是否令你滿意呢? 對於每個科目的難易度其實見仁見智 同樣科目也會因為老師的不同而有不同的難度 可能有些老師的教法也會令人不太習慣😢 好的老師幫助你拿高分、輕鬆理解...
[軟體程式類別]:
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