数値最適化

FindMinimum[f,{x,x0}]を初期値として f の極小値を求める
FindMinimum[f,x]f の極小値を求める
FindMinimum[f,{{x,x0},{y,y0},...}]
複数の変数における極小値を求める
FindMinimum[{f,cons},{{x,x0},{y,y0},...}]
, , ...を初期値として,制約条件 cons のもとで極小値を求める
FindMinimum[{f,cons},{x,y,...}]制約条件 cons のもとで極小値を求める
FindMaximum[f,x]極大値を求める

極小値と極大値の探索

を始点としてを最小にする の値を求める.
In[1]:=
Click for copyable input
Out[1]=
リストの最後の要素が最小に達する値を与える.
In[2]:=
Click for copyable input
Out[2]=

FindRootと同様にFindMinimumFindMaximumもある点から始めて次第に最小値または最大値を求める.しかしこれらの関数は何かが見付かり次第結果を返すので,大域的な値ではなく極小値あるいは極大値を返す可能性がある.

この曲線には2つの極小値がある.
In[3]:=
Click for copyable input
Out[3]=
を始点とすると右側の極小値が求まる.
In[4]:=
Click for copyable input
Out[4]=
こうすると左側の極小値が求まる.この場合はこれが大域的最小値でもある.
In[5]:=
Click for copyable input
Out[5]=
初期値なしで変数を指定することができる.
In[6]:=
Click for copyable input
Out[6]=
制約条件を指定することができる.
In[7]:=
Click for copyable input
Out[7]=
NMinimize[f,x]f の大域的最小値を求めようとする
NMinimize[f,{x,y,...}]複数の変数について大域的最小値を求めようとする
NMaximize[f,x]f の大域的最大値を求めようとする
NMaximize[f,{x,y,...}]複数の変数について大域的最大値を求めようとする

大域的最小値と最大値の探究

これは即座に大域的最小を見付ける.
In[8]:=
Click for copyable input
Out[8]=

NMinimizeNMaximizeは数値用のMinimizeMaximizeと考えることができる.しかし,MinimizeMaximizeとは異なり,大域的最小や最大を必ず見付けられるとは限らない.関数 f がある程度滑らかで極小と極大の数が限られていればこれらの関数はかなり効果がある.

NMinimize[{f,cons},{x,y,...}]制約条件 cons に従って f の大域的最小を求める
NMaximize[{f,cons},{x,y,...}]制約条件 cons に従って f の大域的最大を求める

制約条件に従って大域的最大と最小を求める

という制約条件の下では,NMinimizeは右側の極小を与える.
In[9]:=
Click for copyable input
Out[9]=
これは単位円内の の最小を求める.
In[10]:=
Click for copyable input
Out[10]=
この場合,Minimizeは厳密な結果を返す.
In[11]:=
Click for copyable input
Out[11]=
しかしこの場合には厳密な結果は返せない.
In[12]:=
Click for copyable input
Out[12]=
これはNMinimizeを使うのと同じことで,数値近似を与える.
In[13]:=
Click for copyable input
Out[13]=

目的関数 f と制約条件 cons の両方がすべての変数について線形の場合,最小化と最大化は「線形計画問題」に対応することになる.このような問題は明示的な方程式で記述するのではなく行列やベクトルで記述する方が便利なことがある.

LinearProgramming[c,m,b]制約条件 に従って を最小にするベクトル を求める
LinearProgramming[c,m,b,l]制約条件 を使う

行列形式の線形計画法

これは方程式の形をした線形計画法の問題である.
In[14]:=
Click for copyable input
Out[14]=
これは同じ問題を行列形式にしたものである.
In[15]:=
Click for copyable input
Out[15]=

リスト をペアの列の形にすると方程式と不等式の制約条件を混ぜて指定することができる.なら 番目の制約条件は である.もし なら制約条件は である.もし ならそれは である.

最初の不等式がを使うようにする.
In[16]:=
Click for copyable input
Out[16]=

LinearProgramming[c, m, b, l] の上界と下界を表すペアのリストにすることができる.

大規模な線形計画法の問題を解く場合には行列 SparseArrayオブジェクトとして与えると便利なことが多い.

New to Mathematica? Find your learning path »
Have a question? Ask support »