2016-08-09 12 views
0

にあるので、私はこの関数を持っています。私は別の関数でそれを使用しています多変数関数の数値積分の問題はR

f <- function(a, b, q=1, f0=1000) { 
#calculate R: 
R <- (f0 - (a*b))*((q+1)/(a^(q+1))) 
return(ifelse(a<=100,(R * a^q) + b, 0)) } 

、funk2

funk2 <- function(a,x,b,l,r) { 
f(a-x,b) * exp(-(l/r)*(exp(-r*a)*(exp(r*x)-1))) } 

funk2は、統合を使用して、別の多変数関数funk1を評価するために使用されます。

funk1 <- function(x,b,l,r) { 
sapply(x, function (s) { 
integrate(funk2, lower = s, upper = s+56, x=s, b=b, l=l, r=r)$value }) } 

私はfunk1

funk1(10,100,1,1) 

{または任意の他の値を置くことによって}を評価しようとすると、私はエラーを取得する

Error in integrate(funk2, lower = s, upper = s + 100, x = s, b = b, 
non-finite function value 

は私が間違って何をやっているかわからないことを言ってここに?助けてください! ありがとうございます。 a次いでf(0,b)NaNを生成するxに等しい場合

答えて

1

問題がfunk2内部f(a-x,b)です。たとえば、低い数字をlower = s*1.01に変更すると、次のようになります。

funk1(10,100,1,1) 
[1] 4464.721