統計ソフトRでの多項式の最大値の求め方について質問です。

現在 Y = 100 * x^(-2)*(x-1)の最大値を求めたい(*=かける、x=エックス、^=累乗です。「100かける、エックスのマイナス2乗かける、(エックスマイナス1)」という式です。)のですが、Rの式がわかりません。数学的には、Yを微分してゼロになるxを求めればいいと思うのですが、R上でどのように処理をすれば良いか教えてください。よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/12/21 10:40:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント34pt

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 )
他2件のコメントを見る
id:Mook

視覚的に確認するなら(重要なレンジを外してしまうと無意味ですが)、
>x=(-100:100)/10
>plot(x,f(x))
のようにするとグラフの外形が把握できると思います。

2012/12/14 15:56:33
id:ahiruzuki

なるほど。ありがとうございます!試してみます!

2012/12/15 00:39:29
id:godabin No.2

回答回数88ベストアンサー獲得回数19

ポイント33pt

そのものズバリのQ&Aがありました。
>関数の最大値の求め方
Q&A (初級者コース)/14 - RjpWiki

optimize関数で、目的関数値の最小値を見つけます。(関数をマイナスにして評価する)

他2件のコメントを見る
id:ahiruzuki

ありがとうございます。
f=function(x) 100*x^(-2)*(x-1)
optimize(f,-10,10)
としてみましたが、
「以下にエラー optimize(f, -10, 10) : 'xmin' が 'xmax' より大きいか等しいです 」と表記されます。

2012/12/15 13:48:58
id:godabin

>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/21 09:22:01
id:boost_beast No.3

回答回数785ベストアンサー獲得回数31

ポイント33pt

http://www.ge.ce.nihon-u.ac.jp/~kiyono/prints/H21/r_h21.pdf

こちらが参考になるでしょうか?

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません