2016-03-21 13 views
1

を最大化するためにオーバー変数を指定して、私はどのように確認していませんどの変数が関心のある変数であるかを示す非常に単純な場合を考えてみましょう。パラメーターa、b、およびcを持つxの2次式の記号最小化が必要です。メープル:私はメイプルで関数の最小化を見つけたい...</p> <p>をこれは非常に単純な質問ですが、オンラインそれについて、驚くべきことに、非常に小さな見つけ

何も指定しないと、すべての変数a、b、c、およびxに対して最小化されます。

f4 := a+b*x+c*x^2 
minimize(f4, location) 

私は、関数内で変数を指定しようとしたいずれかの動作しませんでした:

f5 :=(x) ->a+b*x+c*x^2 
minimize(f5, location) 

は、私はこれをどのようにしたらよいでしょうか?そして、xとyの2つの変数を必要としたら、どうすればいいでしょうか?

fxy := a+b*x+c*x^2 + d*y^2 +e*y 

答えて

2
f4 := a+b*x+c*x^2: 

extrema(f4, {}, x); 

          /  2\ 
           |4 a c - b | 
          < ---------- > 
           | 4 c | 
           \  /

fxy := a+b*x+c*x^2 + d*y^2 +e*y: 

extrema(fxy, {}, {x,y}); 

        /   2  2\ 
         |4 a c d - b d - c e | 
         < --------------------- > 
         |  4 c d  | 
         \     /

極値の性質は、パラメータの値に依存します。上記の最初の例(xの二次式)では、cの記号に依存します。

コマンドextremaは、(計算の副作用として)候補解ポイントを割り当てる割り当てられていない名前(または引用符で囲まれていない名前)など、オプションの第4引数を受け入れます。たとえば、

restart; 

f4 := a+b*x+c*x^2: 

extrema(f4, {}, x, 'cand'); 

               2 
             4 a c - b 
            {----------} 
             4 c 

cand; 

              b 
            {{x = - ---}} 
              2 c 

fxy := a+b*x+c*x^2 + d*y^2 +e*y: 

extrema(fxy, {}, {x,y}, 'cand'); 

              2  2 
           4 a c d - b d - c e 
           {---------------------} 
             4 c d 

cand; 

             b   e 
           {{x = - ---, y = - ---}} 
             2 c  2 d 

また、偏微分を設定して手動で解決することもできます。これらの2つの例では、solveによって返される1つの結果(それぞれについて)があることに注意してください。

restart: 

f4 := a+b*x+c*x^2: 

solve({diff(f4,x)},{x}); 

              b 
            {x = - ---} 
              2 c 

normal(eval(f4,%)); 

               2 
             4 a c - b 
             ---------- 
             4 c 

fxy := a+b*x+c*x^2 + d*y^2 +e*y: 

solve({diff(fxy,x),diff(fxy,y)},{x,y}); 

             b   e 
           {x = - ---, y = - ---} 
             2 c  2 d 

normal(eval(fxy,%)); 

              2  2 
           4 a c d - b d - c e 
           --------------------- 
             4 c d 

extremaコマンドのコードは、コマンドshowstat(extrema)を発行することによって、見ることができます。 solveが複数の結果を返すケースをどのように考慮しているかを見ることができます。

+0

ありがとう!実際には、arg max/maximizer自体も取得することに興味があったため、私はlocationパラメータを使用しました。 extrema()をどうすればいいですか?ありがとう! – Matifou

+0

これは 'extrema'コマンドのオプションの第4引数を使って行います。私はそのための例を追加しました。 – acer

+0

優秀!本当にありがとう!! – Matifou

関連する問題