Wat00370 関数の最大値(暫定もか)の求めかた

#0000 sci7531  9201110641

ある30個の係数のある非線形関数が有ります。
関数の値は、実数です。
係数も実数です。
この関数が最大値をとるような時の係数を求めたいのですが
数値解析に頼らざるを得ません

なにか良い方法は有りませんか。
パソコンで、実行したいので
出来れば、自動的に値を求めたい。
関数が最大値ではないがそれに準じた大きな値を取るような係数の決定法でも
構いません。
123Wでソウルバー機能に期待しましたが
計算時間ははかり知れません。
時間の掛らない様に求めたいのです。

数学的な言葉ではないので、分りにくいかも知れませんがー
なんとかくみ取ってください。

しかたなし算数を扱うcoupe9
より
sci7531


#0001 sci7531  9201151835

こんなこと興味有りませんかー?


#0002 sci4920  9201152304

↑ 何せ,私の知っている最も簡単な方法,ニュートン法でもその関数の1次
微分形が必要なのですよ。
それがわかったからと言って,簡単に計算できるプログラムを持っているわけ
じゃなし。

結局繰り返し計算がかなり必要なわけで,お役には立てません。

By Nori オンライン


#0003 sci7531  9201232248

ええと最初の質問からしてはっきりしてなくて御免なさい。
私が知りたいのは、多くの変数が有ってそれによって出来る関数があります。
ある1つの変数のみに注目して、見ますとその変数によって関数があたいをかえます
その最大値は、すぐに分ります。そのときの変数値もわかります。
しかし、その変数を固定したまま、次の変数に注目し同じ様に値を変化させると
やはり同じ様に関数は値をかえていきます。やはり同じ様にどこかに
最大値が有ります。   とまあこんな工合
こんなぐあいに関数の最大値を与える変数を次々と求めて行っても
さきほど関数に最大値を与える変数値を採用してもそこは関数の最大値を与える
変数ではなくなっているのです。
だんだんずれていっちゃうんですね。
1つ変数の値を変化させると全部の最適値とでも言うような変数の値が狂ってき
てしまうのです。

すこしは分るような質問になりましたでしょうか?

えーとそれで、どうせパソコンにやらせるわけですからアルゴリズム等の骨格でも
おしえていただけたら・・・とおもいます。

coupe9


#0004 sci5498  9201241615

んーーん 状況がわからないなぁ
その関数が 性質が良くて 境界 あるいは 内部の多くとも
1カ所で最大値をとることが予測できるなら ある点から出発して
大きいほう、大きいほうとたどる事で何とかなるようなきもするけど
極大値をいっぱい持つような場合だとこれじゃ 嘘のに
たどりついちゃうかも知れないし
いい加減でいいなら モンテカルロであたりをつけて
やってみると言う手もあるが

                               ってこれじゃほとんどちゃちゃ Shige-A


#0005 sci4920  9201242201

まずは偏微分して極値を導く式を立てなければ・・・

By 歯を抜いたばかりでしばらく勘弁 Nori


#0006 sci7531  9201261902

SIGE-Aさんちゃちゃなんてことは無いですよ。
モンテカルロ法っていうのは、乱数でということですか。なるほど
それから、そこそこの成績を見つければ委員ですよ
それからそこそこの成績を出すものが見つかればいいんですよ。
やっぱり一つ一つ暫定的に変数を決定していき次に・・という感じですかねー?

その暫定的に変数を決定していく何か効率の良いもの(理論的な?)
が何か無いですか?

それから、変数を変化させて出来る関数は、不連続ですが、大きな目でみると
だいたいの傾向は見えるんです。
何て言うんでしょうね。エネルギーポテンシャルが、整数倍しかとらないのに
マクロで見ると滑らかに見えるといったような関数です。

COUPE9


#0007 sci4920  9201280236

ありゃ,離散値を与える関数なんですか?

微分できにゃい・・・

By Nori オンライン


#0008 sci7531  9201282214

微分できないんです。
いいだしっぺのCOUPE9でした。


#0009 sci2596  9205070007

 久々におじゃまします.
                                             Kennywell


#0010 sci2596  9205070008

     非線形の関数の最小化を行うのに,収束のよい,シンプレックス法という
  のがあります.シンプレックスとは空間の次元数より1つ多い数の頂点をもつ
  図形のことだそうです.決定すべきパラメーターの数の次元の空間で,それよ
  り1つ多い数の頂点をもつ図形を考えてパラメーターの決定を行うことから,
  この呼び名があるようです.
  
    例.2変数関数 f(p,q) のシンプレックスは三角形.
    (p,q) の適当な初期値から,3点を定め,最大の関数値を与える点を除いた
  残りの2点 (そのうち最小頂点を L とする) の重心 G,G に関して最大頂点
  の対称点を R とする.
   (1)f(R) が最小:H を捨て R をとる.G から R の方向に対称点 E を求め,
  f(E) 最小なら E をとる.
   (2)f(R) が最大でも最小でもないときも,H を捨てる.
   (3)f(R) が最大:HG の中点 C を求める.f(C) が最大でないとき,H を捨
  て C をとる.f(C) 最大のとき,L 以外の全ての点を L に向かって,1/2 以
  下の距離まで動かす.
   以上を繰り返して,シンプレックスを関数の最小値に向かって動かす.
  
   実際のシンプレックスの初期値の定め方,アルゴリズムは,
  
   奥村晴彦 1986:パソコンによるデータ解析入門.技術評論社.p.225-237.
  
  を参考にして下さい.
  
   ここでの問題は,関数の最大値ですので,上の議論の,最大,最小を入れ換
  えて下さい.
  
   上掲書は,パラメーター5つのローレンツ型曲線のあてはめを行っています.
  私もパラメーター6つまではやったことがありますが,30個となるとどうで
  しょうか?
  
                                                               Kennywell