« [Visual Basic]コマンドプロンプトでコンパイルする(Visual Studio 2019 Professional) | トップページ | [Excel]同点同着を考慮した順位付け »

2021年6月17日 (木)

[R]関数の最大値・最小値を得る

optim関数を使う。最小値を得るための実行例は以下のとおり。関数 f(x) = x ^ 2 - 5 の最小値を求めている。図からf(x)が最小となるのはx = 0でその時のf(x)は5である。簡単な計算であれば、methodオプションはBFGSを指定する。計算には適当な初期値(この例では、f(x)が最小となるxの探索のための最初の値)を与える必要があり、以下の例では10としている。

Optimmin
> f <- function(xf) xf ^ 2 - 5
> x <- seq(-5, 5, by = 0.2)
> y <- f(x)
> optim(10, f, method = "BFGS")
$par
[1] 2.441602e-11
$value
[1] -5
$counts
function gradient
6 3
$convergence
[1] 0
$message
NULL

戻り値のparに最小となる関数の引数が、valueにはその最小となるf(x)値が格納されている。

逆に、関数の最大値を得るためには、controlオプションにリストとしてfnscaleに負の値を与える。以下の例では、関数f(x) = -(x ^ 2) - 5の最大値を求めており、図より、x=0の時に最大値f(x)=-5を得ることが明らかである。

Optimmax
> f <- function(xf) -(xf ^ 2) - 5
> x <- seq(-5, 5, by = 0.2)
> y <- f(x)
> optim(10, f, control = list(fnscale = -1), method = "BFGS")
$par
[1] 2.441602e-11
$value
[1] -5
$counts
function gradient
6 3
$convergence
[1] 0
$message
NULL

戻り値parに関数が最大となる場合の引数の値(=0)、その最大となった関数の値(=-5)が格納されている。

« [Visual Basic]コマンドプロンプトでコンパイルする(Visual Studio 2019 Professional) | トップページ | [Excel]同点同着を考慮した順位付け »

R(数値計算)」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« [Visual Basic]コマンドプロンプトでコンパイルする(Visual Studio 2019 Professional) | トップページ | [Excel]同点同着を考慮した順位付け »

無料ブログはココログ

■■

■■■