2017-01-21 9 views
0

こんにちは私は、ランダム変数に基づいた関数を統合する助けを得ることを望んでいました。関数は、連続分布の期待値を得ることです。関数をRに組み込む

これまでのコードは次のとおりです。

montecarlo = function(r,v,t,x,k) { 
y = rnorm(1) 
e = (y*(x*exp((-v*sqrt(t)*y)+((r-(.5*v^2))*t))-k)) 
MCOP=exp(-r*t)*integrate(e, lower = -Inf, upper = Inf) 
if((x*exp((-v*sqrt(t)*y)+((r-(.5*v^2))*t))-k) > 0) { 
    return(MCOP) 
} else { 
    return(0) 
    } 
} 

Iは、例えば入力した場合:GETで

エラー(as.character(FUN)、モード= "機能": montecarlo(.03, .65, 3, 34, 30)

私は読み込みエラーメッセージが表示されます、ENVIR = ENVIR):モード '関数' の
オブジェクトのeは 'あなたのタラは

+0

を持つ必要があります。 – Dmitriy

+0

Yはランダムに生成された数であり、私がプログラムしようとしている関数は、連続分布の期待値を与えます(-infからy * f(y)dy – Dmitriy

+0

のinfまでの整数です)あなたは '?integrate'を読んでいます。最初のパラメータは" an R function ... "です。あなたのコードはeの値を計算しています。私は' integrate'を知らないので、あまりアドバイスできませんが、関数を呼び出し、それを 'integrate'へのパラメータとして渡します。 – epi99

答えて

0

見つかりませんでしたeには複数の問題がありますが、最初にエラーが発生するのはeです。 すなわち、代わりに

y = rnorm(1) 
e = (y*(x*exp((-v*sqrt(t)*y)+((r-(.5*v^2))*t))-k)) 

のあなたは、私が他の変数x、V、T、R、及びkのすべてが与えられるしようとしているYに関して統合する

e = function(y){y*(x*exp((-v*sqrt(t)*y)+((r-(.5*v^2))*t))-k)} 
+1

' integrate'は最初の引数として関数を必要とし、「\t 私はyに関して積分したいです。これは作者が前進するのに十分なプッシュであろう。一度に1つの問題を解決する。 –

関連する問題