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
が複数の結果を返すケースをどのように考慮しているかを見ることができます。
ありがとう!実際には、arg max/maximizer自体も取得することに興味があったため、私はlocationパラメータを使用しました。 extrema()をどうすればいいですか?ありがとう! – Matifou
これは 'extrema'コマンドのオプションの第4引数を使って行います。私はそのための例を追加しました。 – acer
優秀!本当にありがとう!! – Matifou