人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: ahiruzuki
●カテゴリ:学習・教育 科学・統計資料
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Mook
●34ポイント

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 )

ahiruzukiさんのコメント
ありがとうございます!素晴らしいです。ちなみに、最大のYの時のXの求め方は、コードを入れるというよりは、後半の式であたりを付けてそこを見る、という感じでしょうか。大変助かりました!

Mookさんのコメント
関数から概要を把握できればそれに越したことはありませんが、見当がつかないときには、まずは計算させてみるのも手かと思います。

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

ahiruzukiさんのコメント
なるほど。ありがとうございます!試してみます!

2 ● godabin
●33ポイント

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

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


ahiruzukiさんのコメント
ありがとうございます!ただ、今回の式ではOptimizeが使えず困っていました。。。

godabinさんのコメント
変数がxだけの1変数なので、optimize()が使えるはずですが。 同様な、optim(), nlm() を試して見るか、エラーメッセージを教えてください。

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

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) で出来ます。

3 ● boost_beast
●33ポイント

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

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

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ