• ベストアンサー

Mathematicaで関数の最大値を求める

Mathematicaで複素数の関数S(t)があったとします。 このS(t)の絶対値の最大値が知りたい時、どのように入力すればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • mach999
  • ベストアンサー率75% (36/48)
回答No.1

 S[t]は複素数関数ということですが、絶対値を取ってAbs[S[t]]とすれば結局は実数関数となるので、あとはこの実数関数を最大化すれば良いわけですね。  ところが、Mathematicaには関数の最大化を行う関数はありません。まあこの点については最小化を行うFindMinimum関数があるため、正負を反転させた関数-Abs[S[t]]の最小化を行えば目的を達成することはできます。  しかし、問題はFindMinimumで求められるのは局所的最小解であって、大域的最小解ではないということです(そもそも任意の関数の最小値を求める手法は未だ発見されていない)。これについては、幸い目的関数-Abs[S[t]]が1変数関数であるため、Plot関数で最小解がありそうな範囲の見当をつけてからFindMinimumで適切な初期値を与えてやれば、S[t]の絶対値の最大値を求めることができると思います。 Plot[-Abs[S[t]],{t,0,10}]←範囲は適当に変えて下さい FindMinimum[-Abs[S[t]],{t,t0}]←t0(局所的最適解を求めるための初期点)は適切なものを与えて下さい

abspectra
質問者

お礼

できました! ありがとうございました。

関連するQ&A