0

次の2つの関数の極大値と極小値を求めたい

  1. xE[t_] := 10 (t - Sin[t]) - Sqrt[40^2 - (10 (1 - Cos[t]))^2]
  2. vE = xE'[t]

だから私は最初の導関数を解決しようとしxE[t]ました:

extremaXE = Solve[vE[t] == 0, t] (* vE is the 1st derivative of xE *)

しかし、私はこのエラーが発生しました:

Solve::ifun: Inverse functions are being used by Solve, so some solutions may not 
be found; use Reduce for complete solution information.

次にreduceを試したところ、次のエラーが発生しました。

Reduce::nsmet: This system cannot be solved with the methods available to Reduce

微分を通じて極小値と極大値を決定するにはどうすればよいですか?

4

2 に答える 2

0

NLOptを使用します。

導関数がある場合とない場合のローカル/グローバル極値を見つけるアルゴリズムがあります。C、C ++、Fortran、MatlabまたはGNU Octave、Python、GNU Guile、およびGNURから呼び出すことができます。

http://ab-initio.mit.edu/wiki/index.php/NLopt

これは役に立ちますか?

于 2012-04-29T20:14:49.333 に答える
0

でエラーになりませんReduce。たとえば、xE私が試したの局所極値を見つけるために

Reduce[xE'[t] == 0, t]

戻った

C[1] \[Element] Integers && (t == 2 \[Pi] C[1] || 
   t == 2 I ArcTanh[2/Sqrt[3]] + 2 \[Pi] C[1])

これにより、実際のソリューションと複雑なソリューションの両方が得られることに注意してください。本物のみが必要な場合は、試すことができます

Reduce[xE'[t] == 0, t, Reals]

を与える

C[1] \[Element] Integers && t == 2 \[Pi] C[1]

編集

ソリューションを元の式に戻すには、たとえば を使用してルールのリストに変換できますToRules。最初にソリューションを単純化するToRulesような式を処理できないためC[1] \[Element] Integers

sol = Reduce[xE'[t] == 0, t];
sol = Simplify[sol, C[_] \[Element] Integers]

(* ==> t == 2 \[Pi] C[1] || t == 2 I ArcTanh[2/Sqrt[3]] + 2 \[Pi] C[1] *)

ToRules次に、この式をルールのリストに変換します。これを使用して式に戻すことができますReplaceAll

xE[t] /. {ToRules[sol]}

(* ==> {-Sqrt[1600 - 100 (1 - Cos[2 \[Pi] C[1]])^2] + 
          10 (2 \[Pi] C[1] - Sin[2 \[Pi] C[1]]), 
        -Sqrt[1600 - 100 (1 - Cosh[2 ArcTanh[2/Sqrt[3]] - 2 I \[Pi] C[1]])^2] + 
          10 (2 I ArcTanh[2/Sqrt[3]] + 2 \[Pi] C[1] - 
          I Sinh[2 ArcTanh[2/Sqrt[3]] - 2 I \[Pi] C[1]])} *)

結果の式にはまだ定数が含まれていることに注意してくださいC[1]。特定の値の極値を見つけるには、C[1]別の置換規則を使用できます。

({t, xE[t]} /. {ToRules[sol]}) /. {C[1] -> -4}
于 2012-04-29T20:50:55.837 に答える