現在 Y = 100 * x^(-2)*(x-1)の最大値を求めたい(*=かける、x=エックス、^=累乗です。「100かける、エックスのマイナス2乗かける、(エックスマイナス1)」という式です。)のですが、Rの式がわかりません。数学的には、Yを微分してゼロになるxを求めればいいと思うのですが、R上でどのように処理をすれば良いか教えてください。よろしくお願いいたします。
Rに数学としての関数の最大値を求める機能は知りませんが、
下記は与えられた因子に対して解析を行う処理です。
関数特性を把握した上で因子を決定しなければなりませんが、
>f <- function(x) 100*x^-2*(x-1) >max( y = f( x = (10:30)/10 ) )
といった感じでしょうか。
上記は 1.0~3.0 を0.1 刻みで関数に適用した中の最大値を求めるものです。
関数がどのようになっているかは、下記のようにして様子を確認できるかと思います。
>f( x = (-100:100)/10 )
そのものズバリのQ&Aがありました。
>関数の最大値の求め方
Q&A (初級者コース)/14 - RjpWiki
optimize関数で、目的関数値の最小値を見つけます。(関数をマイナスにして評価する)
ありがとうございます。
f=function(x) 100*x^(-2)*(x-1)
optimize(f,-10,10)
としてみましたが、
「以下にエラー optimize(f, -10, 10) : 'xmin' が 'xmax' より大きいか等しいです 」と表記されます。
>optimize(f, -10, 10) : 'xmin' が 'xmax' より大きいか等しいです
関数のx区間が[0,0]のままだと思われているようですね。
>f <- function(x) { -(100*x^(-2)*(x-1)) } ←関数をマイナスにして最小値を見つける
>ans <- optimize(f, interval=c(-10,10)) ←x区間[-10,10]でfが最小となるxを探す
>funcmax <- -f(ans$minimum)
>cat(funcmax)
で出来ます。
視覚的に確認するなら(重要なレンジを外してしまうと無意味ですが)、
2012/12/14 15:56:33>x=(-100:100)/10
>plot(x,f(x))
のようにするとグラフの外形が把握できると思います。
なるほど。ありがとうございます!試してみます!
2012/12/15 00:39:29