[R]関数の最大値・最小値を得る
optim関数を使う。最小値を得るための実行例は以下のとおり。関数 f(x) = x ^ 2 - 5 の最小値を求めている。図からf(x)が最小となるのはx = 0でその時のf(x)は5である。簡単な計算であれば、methodオプションはBFGSを指定する。計算には適当な初期値(この例では、f(x)が最小となるxの探索のための最初の値)を与える必要があり、以下の例では10としている。
> 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を得ることが明らかである。
> 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(数値計算)」カテゴリの記事
- [R]複数のパラメーターと定数を持つ関数の値が最大・最小となるパラメーターを求める(2026.03.30)
- [R]重み付き線形最小二乗法を行う(2026.03.20)
- [R]重み付き非線形最小二乗法を行う(2026.03.06)
- [R]計算機イプシロンを求める(2025.10.29)
- [R]複数の引数を持つ関数の値の最小値(最大値)を求める(2024.12.07)
« [Visual Basic]コマンドプロンプトでコンパイルする(Visual Studio 2019 Professional) | トップページ | [Excel]同点同着を考慮した順位付け »



コメント