3

問題設定について説明します。私が描いている関数は確率関数であり、積分するとその値は 1 に等しくなければなりません。そのため、積分の結果を 1 で割って C の値を求めます。したがって、C に値を割り当てることはできません。 .

以下のコードとエラーメッセージを見てください -

> f <- function(x) (C*x*(exp(-x)))
> z=integrate(f, lower = 0, upper=Inf)
Error in C * x : non-numeric argument to binary operator

ここでどのように定義すればよいですCか?


2 番目の質問 - の値の何が問題なのか、だれか理解できますかz?

> f <- function(x) (x*(exp(-x)))
> z=integrate(f, lower = 0, upper=Inf)
> z
1 with absolute error < 6.4e-06
> 1/z
Error in 1/z : non-numeric argument to binary operator
4

1 に答える 1

0

関数C = 1の積分を計算するときに作成します。そのために、デフォルト値を持つ関数へのオプションの引数にすることができます:

f <- function(x, C = 1) C * x * exp(-x)

次に、計算します。

z <- integrate(f, lower = 0, upper = Inf)

積分が1真の値になるにはC、 が必要ですC * z == 1

C <- 1 / z$value
C
# [1] 1

結局のところ、積分zはすでに に等しい1のでC = 1、選択は幸運な選択でした。何もする必要がなく、そのまま使い始めることができますf。そうでない場合は、次のように再定義することをお勧めしfます。

f_final <- function(x) f(x, C = 1 / z$value)

(2番目の質問については、ドキュメントを見?integrateて「値」セクションを参照するだけでした。)

于 2013-10-27T03:39:14.240 に答える