|
SOLUTIONS
|
FindRoot
FindRoot[f, {x, x0}]
から始めて
の数値根を求める.
FindRoot[lhs==rhs, {x, x0}]
方程式
の数値解を求める.
FindRoot[{f1, f2, ...}, {{x, x0}, {y, y0}, ...}]
すべての
の連立数値根を求める.
FindRoot[{eqn1, eqn2, ...}, {{x, x0}, {y, y0}, ...}]
連立方程式
の数値解を求める.
詳細とオプション詳細とオプション
- 変数の初期値がリストで与えられているとき,変数の値は同じ次元のリストであると解釈される.
- FindRootはSolveから得るのと同じ形式の 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に複素根を求めさせることができる.
- 指定可能なオプション:
-
AccuracyGoal Automatic 目標とする確度 EvaluationMonitor None 式が評価されたときに常に評価される式 Jacobian Automatic この系のヤコビ行列式 MaxIterations 100 使用する最大反復回数 PrecisionGoal Automatic 目標とする精度 StepMonitor None ステップを取るたびに常に評価される式 WorkingPrecision MachinePrecision 内部計算に使用する精度 - デフォルト設定ではAccuracyGoalとPrecisionGoalの設定はWorkingPrecision/2である.
- AccuracyGoalの設定で,根の位置の値と根における関数の値の両方の目標確度の桁数を指定する.
- PrecisionGoalの設定で根の位置の値の目標精度桁数を指定する.
- FindRootはAccuracyGoalまたはPrecisionGoalで指定された目標精度(または確度)に達するまで計算を続ける.
- FindRootがMaxIterationsの反復ステップ内で指定された正確さの解が見出せない場合,最近見出した近似解を返す.この場合,この点を初期値としてFindRootを再適用する.
例題例題すべて開くすべて閉じる
例 (3)例 (3)
| In[1]:= |
| Out[1]= |
| In[1]:= |
| Out[1]= |
| In[1]:= |
| Out[1]= |
スコープ (4)スコープ (4)
| In[1]:= |
| Out[1]= |
| In[1]:= |
| Out[1]= |
| In[1]:= |
| Out[1]= |
実数入力に対して方程式が複素数である場合,実数の初期値が複素数の結果を与えていることがある:
| In[1]:= |
| Out[1]= |
| In[2]:= |
| Out[2]= |
一般化と拡張 (1)一般化と拡張 (1)
変数は,初期値で指定されている場合にはベクトル値として考えることができる:
| In[1]:= |
| In[2]:= |
| Out[2]= |
オプション (8)オプション (8)
AccuracyGoalとPrecisionGoal (1)AccuracyGoalとPrecisionGoal (1)
| In[1]:= |
| Out[1]= |
| In[2]:= |
| Out[2]= |
| In[3]:= |
| Out[3]= |
DampingFactor (1)DampingFactor (1)
| In[1]:= |
| Out[1]= |
| In[2]:= |
| Out[2]= |
EvaluationMonitor (1)EvaluationMonitor (1)
EvaluationMonitorを使って使用された関数評価を追跡記録することができる:
| In[1]:= |
| Out[1]= |
| In[2]:= |
| Out[2]= | ![]() |
Jacobian (1)Jacobian (1)
| In[1]:= |
| In[2]:= |
| In[3]:= |
| Out[3]= |
指定された関数行列式がなければ,有限差分の計算に余分な評価が行われる:
| In[4]:= |
| Out[4]= |
疎な形式を知っているならば,疎なパターンテンプレートを指定することで評価回数を少なくできる:
| In[5]:= |
| Out[5]= |
| In[6]:= |
| Out[6]= |
MaxIterations (1)MaxIterations (1)
この軟化子関数は
においてすべての導関数が0なので,アルゴリズムは最終的に停止する:
| In[3]:= |
| Out[3]= |
Method (1)Method (1)
| In[1]:= |
| Out[1]= | ![]() |
| In[2]:= |
| Out[2]= |
ブレント(Brent)法の根の囲い込みには根を囲む2つの初期条件が必要である:
| In[3]:= |
| Out[3]= |
| In[4]:= |
| Out[4]= |
PrecisionGoal (1)PrecisionGoal (1)
| In[1]:= |
| In[2]:= |
| Out[2]= | ![]() |
| In[3]:= |
| Out[3]= | ![]() |
ステップ(赤)とその評価(緑)を表す.ステップには数回の評価が必要なことがある:
| In[4]:= |
| In[5]:= |
| Out[5]= | ![]() |
WorkingPrecision (1)WorkingPrecision (1)
| In[1]:= |
| Out[1]= | ![]() |
アプリケーション (3)アプリケーション (3)
逆関数の計算 (1)逆関数の計算 (1)
| In[1]:= |
| In[2]:= |
| Out[2]= |
これは組込みのLog関数に非常に近い:
| In[3]:= |
| Out[3]= | ![]() |
| In[4]:= |
| In[5]:= |
| Out[5]= | ![]() |
| In[6]:= |
| Out[6]= |
| In[7]:= |
| Out[7]= | ![]() |
境界値問題を解く (2)境界値問題を解く (2)
| In[1]:= |
| In[2]:= |
| Out[2]= | ![]() |
| In[3]:= |
| Out[3]= |
| In[4]:= |
| Out[4]= |
| In[5]:= |
| Out[5]= | ![]() |
| In[1]:= |
| In[2]:= |
| In[3]:= |
| In[4]:= |
| In[5]:= |
| Out[5]= | ![]() |
特性と関係 (2)特性と関係 (2)
方程式の多項式系の場合,NSolveはすべての解をFindRootは1つの解を求める:
| In[1]:= |
| Out[1]= |
FindRootは反復法を使って1つの解を求める:
| In[2]:= |
| Out[2]= |
NSolveは直接法を使ってすべての解を求める:
| In[3]:= |
| Out[3]= | ![]() |
パラメータまたは厳密解を含む方程式の場合はSolve,Reduce,FindInstanceのいずれかを使う:
| In[1]:= |
Solveはいくつかの解を返す:
Reduceはすべての解を列挙する:
| In[3]:= |
| Out[3]= |
FindInstanceは特定の例を求める:
| In[4]:= |
| Out[4]= | ![]() |
考えられる問題 (2)考えられる問題 (2)
| In[1]:= |
| Out[1]= |
| In[2]:= |
| Out[2]= |
| In[1]:= |
| In[2]:= |
| Out[2]= |
| In[3]:= |
| In[4]:= |
| Out[4]= |
























