2012-04-29 2 views
0

私は私がxE[t]の最初の誘導体を解決しようとした次の2つの機能Mathematica:Solve、Reduce、およびFindRootを使ってExtremaの位置を見つける。 (誘導体)

  1. xE[t_] := 10 (t - Sin[t]) - Sqrt[40^2 - (10 (1 - Cos[t]))^2]
  2. vE = 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::nsmet: This system cannot be solved with the methods available to Reduce 

ので、私はデリバティブを通じて、地域最小値と最大値を確定するために何をすべき?

+0

この関数には多くの最大値と最小値があります。最初の推定値と共に 'FindRoot'を使うことができます。 –

+0

Help: 'Solve'からの注意点は、主に線形方程式と多項式方程式を扱います。 –

+0

[mathematica.se]サイトはパブリックベータ版です。ご質問がある場合は、こちらから回答が得られる可能性があります。 – rcollyer

答えて

0

NLOptを使用してください。

派生語の有無にかかわらず、ローカル/グローバル極値を見つけるアルゴリズムがあります。 これは、C、C++、Fortranの、Matlabのか、GNUオクターブ、パイソン、GNU Guileの、およびGNU R.このヘルプをい

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

から呼び出し可能なのですか?

+0

OPはMathematicaでそれを行う方法を知りたがっていました。 – Verbeia

0

Reduceでエラーはありません。例えば、xEの極値を見つけるために、私はこれはあなたの両方の実数と複雑なソリューションを提供することを

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] 

を試してみました。あなたが唯一の本当のものにしたい場合は、元の式にソリューションを代用するには

編集

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

与える

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

試すことができますのリストにそれを変換することができ例えば、ToRulesを使用するルール。 ToRulesC[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} 
+0

ダンケ・ハイケ!! {t/.xE [t]} /でポイントを得るためにそれを置き換える方法。 extremaXE? – ZelelB

+0

@ ZelelB私はあなたの質問に答えるために私の答えを少し拡張しました。 – Heike

関連する問題