FindRoot

FindRoot[f, {x, x0}]
から始めて の数値根を求める.

FindRoot[lhs==rhs, {x, x0}]
方程式 の数値解を求める.

FindRoot[{f1, f2, ...}, {{x, x0}, {y, y0}, ...}]
すべての の連立数値根を求める.

FindRoot[{eqn1, eqn2, ...}, {{x, x0}, {y, y0}, ...}]
連立方程式 の数値解を求める.

詳細とオプション詳細とオプション

  • 変数の初期値がリストで与えられているとき,変数の値は同じ次元のリストであると解釈される.
  • FindRootSolveから得るのと同じ形式の x, y, ... のための代入リストを返す.
  • FindRootは,まずすべての変数の値を局所化し,次に記号的となった変数で を評価し,繰り返して結果を数値的に評価する.
  • FindRootは属性HoldAllを持ち,Blockを用いて実質的に変数を局所化する.
  • FindRoot[lhs==rhs, {x, x0, x1}]の最初の2つの値とし,導関数を用いずに解を求める.
  • FindRoot[lhs==rhs, {x, xstart, xmin, xmax}]は,xから の範囲外に出た場合にこの検索を中止するという条件で,解を求める.
  • x の初期値を1つしか指定しなければ,FindRootはニュートン法を用いて解を求める.初期値を2つ指定すると,FindRootは割線法の変形を用いる.
  • すべての方程式と初期値が実数の場合,FindRootは実根のみを求める.複素数が含まれる場合は複素根も求める.
  • 初期値に0.Iを加えることで,常にFindRootに複素根を求めさせることができる.
  • 指定可能なオプション:
  • AccuracyGoalAutomatic目標とする確度
    EvaluationMonitorNone式が評価されたときに常に評価される式
    JacobianAutomaticこの系のヤコビ行列式
    MaxIterations100使用する最大反復回数
    PrecisionGoalAutomatic目標とする精度
    StepMonitorNoneステップを取るたびに常に評価される式
    WorkingPrecisionMachinePrecision内部計算に使用する精度
  • デフォルト設定ではAccuracyGoalPrecisionGoalの設定はWorkingPrecision/2である.
  • AccuracyGoalの設定で,根の位置の値と根における関数の値の両方の目標確度の桁数を指定する.
  • PrecisionGoalの設定で根の位置の値の目標精度桁数を指定する.
  • FindRootAccuracyGoalまたはPrecisionGoalで指定された目標精度(または確度)に達するまで計算を続ける.
  • FindRootMaxIterationsの反復ステップ内で指定された正確さの解が見出せない場合,最近見出した近似解を返す.この場合,この点を初期値としてFindRootを再適用する.

例題例題すべて開くすべて閉じる

例 (3)例 (3)

付近で の根を求める:

In[1]:=
Click for copyable input
Out[1]=

付近で の解を求める:

In[1]:=
Click for copyable input
Out[1]=

非線形方程式系を解く:

In[1]:=
Click for copyable input
Out[1]=

スコープ (4)スコープ (4)

2つの非線形方程式の系の解を求める:

In[1]:=
Click for copyable input
Out[1]=

三変数の三変成分関数の根を求める:

In[1]:=
Click for copyable input
Out[1]=

複素数の初期値を与えることで複素数値を使った探索が行える:

In[1]:=
Click for copyable input
Out[1]=

実数入力に対して方程式が複素数である場合,実数の初期値が複素数の結果を与えていることがある:

In[1]:=
Click for copyable input
Out[1]=
In[2]:=
Click for copyable input
Out[2]=

一般化と拡張 (1)一般化と拡張 (1)

変数は,初期値で指定されている場合にはベクトル値として考えることができる:

In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=

オプション (8)オプション (8)

AccuracyGoalとPrecisionGoal (1)AccuracyGoalとPrecisionGoal (1)

誤差推定の許容率を変える:

In[1]:=
Click for copyable input
Out[1]=

停止のために誤差許容率を緩める:

In[2]:=
Click for copyable input
Out[2]=

根までの推定相対距離を停止の主要基準とする:

In[3]:=
Click for copyable input
Out[3]=

DampingFactor (1)DampingFactor (1)

を使って高次根への収束をスピードアップすることができる:

In[1]:=
Click for copyable input
Out[1]=
In[2]:=
Click for copyable input
Out[2]=

EvaluationMonitor (1)EvaluationMonitor (1)

EvaluationMonitorを使って使用された関数評価を追跡記録することができる:

In[1]:=
Click for copyable input
Out[1]=
In[2]:=
Click for copyable input
Out[2]=

Jacobian (1)Jacobian (1)

「ブラックボックス」関数に関数行列式を指定する:

In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
In[3]:=
Click for copyable input
Out[3]=

指定された関数行列式がなければ,有限差分の計算に余分な評価が行われる:

In[4]:=
Click for copyable input
Out[4]=

疎な形式を知っているならば,疎なパターンテンプレートを指定することで評価回数を少なくできる:

In[5]:=
Click for copyable input
Out[5]=
In[6]:=
Click for copyable input
Out[6]=

MaxIterations (1)MaxIterations (1)

使うステップ数を制限したり増したりする:

In[1]:=
Click for copyable input
Out[1]=

デフォルトの反復回数は100である:

In[2]:=
Click for copyable input
Out[2]=

この軟化子関数は においてすべての導関数が0なので,アルゴリズムは最終的に停止する:

In[3]:=
Click for copyable input
Out[3]=

Method (1)Method (1)

異なる方法で の根を求める:

In[1]:=
Click for copyable input
Out[1]=

デフォルトの方法(ニュートン法):

In[2]:=
Click for copyable input
Out[2]=

ブレント(Brent)法の根の囲い込みには根を囲む2つの初期条件が必要である:

In[3]:=
Click for copyable input
Out[3]=

割線法は2つの初期条件で始まる:

In[4]:=
Click for copyable input
Out[4]=

PrecisionGoal (1)PrecisionGoal (1)

いつ反復ステップが取られるかモニターする:

In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=

の等高線プロット上でステップを表す:

In[3]:=
Click for copyable input
Out[3]=

ステップ(赤)とその評価(緑)を表す.ステップには数回の評価が必要なことがある:

In[4]:=
Click for copyable input
In[5]:=
Click for copyable input
Out[5]=

WorkingPrecision (1)WorkingPrecision (1)

100桁精度演算で根を求める:

In[1]:=
Click for copyable input
Out[1]=

機械精度で始め,適応的に精度を100まで上げて根を求める:

In[2]:=
Click for copyable input
Out[2]=

アプリケーション (3)アプリケーション (3)

逆関数の計算 (1)逆関数の計算 (1)

同型写像 について,その逆関数 の根である:

In[1]:=
Click for copyable input

指数関数の近似逆関数:

In[2]:=
Click for copyable input
Out[2]=

これは組込みのLog関数に非常に近い:

In[3]:=
Click for copyable input
Out[3]=

振動周期を与える「ブラックボックス」関数:

In[4]:=
Click for copyable input
In[5]:=
Click for copyable input
Out[5]=

その逆関数をプロットする:

In[6]:=
Click for copyable input
Out[6]=
In[7]:=
Click for copyable input
Out[7]=

境界値問題を解く (2)境界値問題を解く (2)

シューティング法を使って境界値問題 , を解く:

In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=

根の両側の点を使ってカッコにいれる初期値を与える:

In[3]:=
Click for copyable input
Out[3]=

解をプロットする:

In[4]:=
Click for copyable input
Out[4]=
In[5]:=
Click for copyable input
Out[5]=

n 個の選点で境界値問題 , を解く:

In[1]:=
Click for copyable input

一階の系として考える:

In[2]:=
Click for copyable input

台形法則を使った連結に関する方程式:

In[3]:=
Click for copyable input

初期値として0を使う:

In[4]:=
Click for copyable input

の特定の値について解を求める:

In[5]:=
Click for copyable input
Out[5]=

特性と関係 (2)特性と関係 (2)

方程式の多項式系の場合,NSolveはすべての解をFindRootは1つの解を求める:

In[1]:=
Click for copyable input
Out[1]=

FindRootは反復法を使って1つの解を求める:

In[2]:=
Click for copyable input
Out[2]=

NSolveは直接法を使ってすべての解を求める:

In[3]:=
Click for copyable input
Out[3]=

パラメータまたは厳密解を含む方程式の場合はSolveReduceFindInstanceのいずれかを使う:

In[1]:=
Click for copyable input

Solveはいくつかの解を返す:

In[2]:=
Click for copyable input
Out[2]=

Reduceはすべての解を列挙する:

In[3]:=
Click for copyable input
Out[3]=

FindInstanceは特定の例を求める:

In[4]:=
Click for copyable input
Out[4]=

考えられる問題 (2)考えられる問題 (2)

関数が複素関数の場合は,変数は複素値を持つことができる:

In[1]:=
Click for copyable input
Out[1]=

関数が実数のままなら,変数も実数であると考えられる:

In[2]:=
Click for copyable input
Out[2]=

関数を記号的に評価するのには時間がかかることがある:

In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=

関数の定義を制限して記号評価を避ける:

In[3]:=
Click for copyable input
In[4]:=
Click for copyable input
Out[4]=
バージョン 1 の新機能 | バージョン 5 での修正機能
New to Mathematica? Find your learning path »
Have a question? Ask support »