方程式を解くためのアルゴリズム
方程式の解法の定義
n個の一連の非線形関数F<年代ub>我(x)があるとします。ここで,nはベクトル x の要素数であり、方程式の求解のゴールはすべての F<年代ub>我(x)が0になるようなベクトルxを見けることです。
fsolve
は,要素の二乗和を最小にすることにより方程式系を解こうとします。二乗和がゼロの場合,方程式系は解かれます。fsolveには次の3のアルゴリズムがあります。
信頼領域法
Trust-region-dogleg法
レ,ベンバ,グ·マルカ,ト法
すべてのアルゴリズムは大規模です。大規模アルゴリズムと中規模アルゴリズムを参照してください。
関数fzeroは単一の1次元方程式を解きます。
関数mldivideは線形方程式系を解きます。
信頼領域法アルゴリズム
优化工具箱のソルバ,で使用される多くのメソッドは,<年代pan class="emphasis">“信頼領域法”を基にしています。信頼領域法はシンプルなものですが最適化では重要な概念です。
最適化の信頼領域法のアプロ,チを理解するために制約なし最小化問題を考え,f(x)を最小化します。ここで関数はベクトル引数を取り,スカラ,を出力します。現在の点をn空間の点xと想定し,より小さい関数値をもつ点へ移動して最小化を行う場合を考えてみましょう。これを行うために,このアルゴリズムでは,シンプルな関数qでfを近似します。この関数は,点xの近傍Nで関数fの挙動をよく表すものです。この近傍が信頼領域です。ソルバーは,テストステップsをNにおける最小化(または近似最小化)によって計算します。信頼領域の部分問題を次に示します。
F (x + s) < F (x)の場合,ソルバ,は現在の点をx + sに更新します。そうでない場合は現在の点は変更されず,ソルバーはN(信頼領域)を縮小し,テストステップの計算を繰り返します。
f (x)を最小化するための信頼領域を決める上で重要な問題は,近似问(現在の点xで定義)の選択および計算方法,信頼領域Nの選択および変更方法,信頼領域の部分問題を解く精度です。
標準的な信頼領域法([48])では二次近似qは,xにおけるFのテラ近似のはじめの2項によって決められます。近傍nは通常,球形または楕円体です。数学的に,信頼領域の部分問題は,次のように表現できます。
(1)
“前提条件子”です。すなわ,<年代pan class="inlineequation">M = c<年代up>2です。ここで,<年代pan class="inlineequation">C<年代up>1HC<年代up>1は,条件数の良い行列または分類分けされた固有値をも行列です。
最小化の過程で,ヘッセ行列hが対称と仮定します。しかし,hは,強い最小化子の近傍の中でのみ正定値であることが保証されます。PCGアルゴリズムは,負または0の曲率方向が検出された場合に終了します(<年代pan class="inlineequation">d<年代up>THd≤0)。PCG出力方向pは,負の曲率方向またはニュ,トンシステム<年代pan class="inlineequation">Hp = -gへの近似解のどらかです。いずれにせよpは信頼領域法のアプローチで使用される2次元部分空間を定義するために役立ちます(非線形最小化に対する信頼領域法を参照)。
方程式の解法の定義
n個の一連の非線形関数F<年代ub>我(x)があるとします。ここで,nはベクトル x の要素数であり、方程式の求解のゴールはすべての F<年代ub>我(x)が0になるようなベクトルxを見けることです。
fsolve
は,要素の二乗和を最小にすることにより方程式系を解こうとします。二乗和がゼロの場合,方程式系は解かれます。fsolveには次の3のアルゴリズムがあります。
信頼領域法
Trust-region-dogleg法
レ,ベンバ,グ·マルカ,ト法
すべてのアルゴリズムは大規模です。大規模アルゴリズムと中規模アルゴリズムを参照してください。
関数fzeroは単一の1次元方程式を解きます。
関数mldivideは線形方程式系を解きます。
n個の一連の非線形関数F<年代ub>我 信頼領域法 Trust-region-dogleg法 レ,ベンバ,グ·マルカ,ト法 すべてのアルゴリズムは大規模です。 関数 関数fsolve
は,要素の二乗和を最小にすることにより方程式系を解こうとします。二乗和がゼロの場合,方程式系は解かれます。
fzero
mldivide
信頼領域法アルゴリズム
优化工具箱のソルバ,で使用される多くのメソッドは,<年代pan class="emphasis">“信頼領域法”を基にしています。信頼領域法はシンプルなものですが最適化では重要な概念です。
最適化の信頼領域法のアプロ,チを理解するために制約なし最小化問題を考え,f(x)を最小化します。ここで関数はベクトル引数を取り,スカラ,を出力します。現在の点をn空間の点xと想定し,より小さい関数値をもつ点へ移動して最小化を行う場合を考えてみましょう。これを行うために,このアルゴリズムでは,シンプルな関数qでfを近似します。この関数は,点xの近傍Nで関数fの挙動をよく表すものです。この近傍が信頼領域です。ソルバーは,テストステップsをNにおける最小化(または近似最小化)によって計算します。信頼領域の部分問題を次に示します。
F (x + s) < F (x)の場合,ソルバ,は現在の点をx + sに更新します。そうでない場合は現在の点は変更されず,ソルバーはN(信頼領域)を縮小し,テストステップの計算を繰り返します。
f (x)を最小化するための信頼領域を決める上で重要な問題は,近似问(現在の点xで定義)の選択および計算方法,信頼領域Nの選択および変更方法,信頼領域の部分問題を解く精度です。
標準的な信頼領域法([48])では二次近似qは,xにおけるFのテラ近似のはじめの2項によって決められます。近傍nは通常,球形または楕円体です。数学的に,信頼領域の部分問題は,次のように表現できます。
(1)
“前提条件子”です。すなわ,<年代pan class="inlineequation">M = c<年代up>2です。ここで,<年代pan class="inlineequation">C<年代up>1HC<年代up>1は,条件数の良い行列または分類分けされた固有値をも行列です。
最小化の過程で,ヘッセ行列hが対称と仮定します。しかし,hは,強い最小化子の近傍の中でのみ正定値であることが保証されます。PCGアルゴリズムは,負または0の曲率方向が検出された場合に終了します(<年代pan class="inlineequation">d<年代up>THd≤0)。PCG出力方向pは,負の曲率方向またはニュ,トンシステム<年代pan class="inlineequation">Hp = -gへの近似解のどらかです。いずれにせよpは信頼領域法のアプローチで使用される2次元部分空間を定義するために役立ちます(非線形最小化に対する信頼領域法を参照)。
优化工具箱のソルバ,で使用される多くのメソッドは,<年代pan class="emphasis">“信頼領域法”を基にしています。信頼領域法はシンプルなものですが最適化では重要な概念です。
最適化の信頼領域法のアプロ,チを理解するために制約なし最小化問題を考え,f(x)を最小化します。ここで関数はベクトル引数を取り,スカラ,を出力します。現在の点をn空間の点xと想定し,より小さい関数値をもつ点へ移動して最小化を行う場合を考えてみましょう。これを行うために,このアルゴリズムでは,シンプルな関数qでfを近似します。この関数は,点xの近傍Nで関数fの挙動をよく表すものです。この近傍が信頼領域です。ソルバーは,テストステップsをNにおける最小化(または近似最小化)によって計算します。信頼領域の部分問題を次に示します。
F (x + s) < F (x) f (x)を最小化するための信頼領域を決める上で重要な問題は,近似问(現在の点xで定義)の選択および計算方法,信頼領域Nの選択および変更方法,信頼領域の部分問題を解く精度です。 標準的な信頼領域法( 最小化の過程で,ヘッセ行列hが対称と仮定します。しかし,hは,強い最小化子の近傍の中でのみ正定値であることが保証されます。PCGアルゴリズムは,負または0の曲率方向が検出された場合に終了します(<年代pan class="inlineequation">d<年代up>T
(1)
Trust-region-dogleg法アルゴリズム
他の方法としては線形方程式系を解いて探索方向を求める方法があります。ニュ,トン法で次のような探索方向<年代ub>kを求めます。
J (x<年代ub>k) d<年代ub>k= f (x<年代ub>k)x<年代ub>K + 1= x<年代ub>k+ d<年代ub>k,
ここで,J(x<年代ub>k)はn行n列のヤコビアンです。
ニュ,トン法は問題が生じることがあります。J (x<年代ub>k)が特異なためにニュ,トンステップ<年代ub>kが定義されない可能性があります。また,正確なニュ,トンステップ<年代ub>kの計算に時間がかかる可能性もあります。さらに,ニュ,トン法では開始点が解とかけ離れている場合は収束しない可能性があります。
信頼領域法 (非線形最小化に対する信頼領域法で説明)は,J(x<年代ub>k)が特異な場合にも対応でき,また開始点が解とかけ離れている場合のロバスト性を向上させます。信頼領域法を使用するには,x<年代ub>kよりもx<年代ub>K + 1の方が良いかどうかを判断するためのメリット関数が必要です。次の選択も可能です。
但し,f(d)の最小値が必ずしもf(x)の根にはなりません。
ニュ,トンステップ<年代ub>kは,
M (x<年代ub>k+ d) = F(x<年代ub>k) + J(x<年代ub>kd),
の根であるため,m(d)の最小値にもなります。ここで
(2)
メリット関数の選択としてはm (d)の方がf (d)よりも優れており,信赖域の部分問題は
(3)
‖D·D‖≤Δが条件になります。この部分問題は狗腿法を使用して効率的に解くことができます。
信頼領域法の概要はConn[4]とNocedal[31]を参照してください。
Trust-region-dogleg法の実装
このTrust-region-dogleg法アルゴリズムの最大の特徴は鲍威尔の狗腿手順を使用して式 3を最小化する手順dを計算する点にあります。詳細は鲍威尔[34]を参照してください。
このアルゴリズムは,コーシーステップ(最急降下方向に沿ったステップ)とf (x)に対応するガウス・ニュートンステップを凸に組み合わせることで,ステップdを構成します。コ,シ,ステップは,次のように計算されます。
d<年代ub>C= -αJ (x<年代ub>k)<年代up>TF (x<年代ub>k),
ここで,αは式 2を最小化します。
ガウス·ニュ,トンステップは
J (x<年代ub>k)·d<年代ub>GN= f (x<年代ub>k),
MATLAB<年代up>®のmldivide(行列の左除算)演算子を使って上の式を解くことで計算されます。
アルゴリズムは,次のようにステップdを選択します。
D = D<年代ub>C+λ(d<年代ub>GN- d<年代ub>C),
ここでλは<年代pan class="inlineequation">‖d‖≤Δを満たすような区間[0,1]の最大値です。これはj<年代ub>kが(ほぼ)特異である場合,dはコシの方向と一致します。
Trust-region-dogleg法アルゴリズムが効率的なのは,(ガウス・ニュートンステップ計算のための)反復の各回で,1つの線形解しか必要としないからです。また,場合によっては,直線探索を伴うガウス・ニュートン法を使用する方法よりもこのアルゴリズムの方がロバストです。
他の方法としては線形方程式系を解いて探索方向を求める方法があります。ニュ,トン法で次のような探索方向<年代ub>k J (x<年代ub>k ここで,J(x<年代ub>k
ニュ,トン法は問題が生じることがあります。J (x<年代ub>k 信頼領域法 (
但し,f(d)の最小値が必ずしもf(x)の根にはなりません。 ニュ,トンステップ<年代ub>k M (x<年代ub>k の根であるため,m(d)の最小値にもなります。ここで メリット関数の選択としてはm (d)の方がf (d)よりも優れており,信赖域の部分問題は ‖D·D‖≤Δ 信頼領域法の概要はConn このTrust-region-dogleg法アルゴリズムの最大の特徴は鲍威尔の狗腿手順を使用して このアルゴリズムは,コーシーステップ(最急降下方向に沿ったステップ)とf (x)に対応するガウス・ニュートンステップを凸に組み合わせることで,ステップdを構成します。コ,シ,ステップは,次のように計算されます。 d<年代ub>C ここで,αは ガウス·ニュ,トンステップは J (x<年代ub>k MATLAB<年代up>® アルゴリズムは,次のようにステップdを選択します。 D = D<年代ub>C ここでλは<年代pan class="inlineequation">‖d‖≤Δ Trust-region-dogleg法アルゴリズムが効率的なのは,(ガウス・ニュートンステップ計算のための)反復の各回で,1つの線形解しか必要としないからです。また,場合によっては,直線探索を伴うガウス・ニュートン法を使用する方法よりもこのアルゴリズムの方がロバストです。
(2)
(3)
Trust-region-dogleg法の実装
mldivide
レ,ベンバ,グ·マルカ,ト法
レ、ベンバ、グ·マルカ、ト法アルゴリズム([25]および[27])は,探索方向として次の線形方程式の解を使います。
(4)
またはオプションとして以下の方程式を使います。
(5)
ここでスカラλ<年代ub>kはd<年代ub>kの大きさと方向を共にコントロ,ルします。式 4を使用するには,fsolveのオプションScaleProblemを“没有”に設定します。式 5を使用するには,このオプションを的雅可比矩阵に設定します。
λ<年代ub>kがゼロのとき,方向<年代ub>kはガウス·ニュ,トン法です。λ<年代ub>kが無限大方向になると,d<年代ub>kはゼロベクトル方向へ向かい,最急降下方向になります。これは,一部の十分に大きいλ<年代ub>kに対して,項<年代pan class="inlineequation">F (x<年代ub>k+ d<年代ub>k) < F(x<年代ub>k)が成り立ことを意味します。そのため,このアルゴリズムは,ガウス・ニュートン法の効果を制限する二次の項が存在するときでさえ,減少を保証するように項λ<年代ub>kをコントロ,ルできます。そのため,レーベンバーグ・マルカート法アルゴリズムはガウス・ニュートンの方向と最急降下の方向の間の探索方向を使います。詳細にいては,最小二乗に関するドキュメンテションのレ,ベンバ,グ·マルカ,ト法を参照してください。
レ、ベンバ、グ·マルカ、ト法アルゴリズム( またはオプションとして以下の方程式を使います。 ここでスカラλ<年代ub>k λ<年代ub>k
(4)
(5)
Fzeroアルゴリズム
fzeroはスカラ変数xのスカラ関数fの根を見けようとします。
fzeroはf(x)によって符号が変化する初期点のまわりの区間を調べます。初期点ではなく初期区間を与える場合,fzeroはf(x)が区間の端点で符号を変化させることを確認します。初期区間は有限である必要があります。すなわ,±正は含めることができません。
fzeroはf(x)の根を探すために,区間の2分割,線形内挿,逆二次内挿を組み合わせて使用します。詳細は,fzeroを参照してください。
fzero
fzero
fzero
fzero
\アルゴリズム
\アルゴリズムはmldivideにいてのmatlab算術演算子の節で説明されています。
\
mldivide
参考
fsolve
|<年代pan itemscope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">fzero
関連するトピック
fsolve
|<年代pan itemscope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">fzero