主要内容

。

fsolve

非線形方程式系を解く

説明

非線形システムソルバー

以下で指定される问题を解きます。

F (x) = 0

xに対しF (x)はベクトル値を返す関数です。

xはベクトルまたは行列です。行列引数を参照してください。

x= fsolve(有趣的x0は,点x0を開始点として,方程式有趣的(x) =0(ゼロの配列)の解を求めようとします。

x= fsolve(有趣的x0选项选项で指定された最適化オプションを使用して方程式を解きます。optimoptionsを使用してこれらのオプションを設定してください。

x= fsolve(问题は,问题で说明されている构造体问题を解きます。

xFVAL) = fsolve (___は,どの构文でも,解xでの目的関数有趣的の値を返します。

xFVALexitflag输出) = fsolve (___は上記に加え,fsolveの終了条件を記述する値exitflagおよび最適化プロセスに関する情報を含む構造体输出を返します。

xFVALexitflag输出雅可比) = fsolve (___は,解xにおける有趣的のヤコビアンを返します。

すべて折りたたむ

この例では2変数の2つの非線形方程式を解く方法を説明します。方程式は次のとおりです。

c数组$ $ \开始{}{}& # xA; {e ^ {- {e ^ {({x_1} + {x_2 })}}}} = { 左(x_2} \ {1 + x_1 ^ 2} \) \ \ & # xA; {x_1} \因为\离开({{x_2}} \右)+ {x_2} \罪\离开({{x_1}} \右)= \压裂{1}{2}# xA;公司\{数组}$ $

これらの方程式を$ F (x) = \ bf {0} $の形式に変换します。

c数组$ $ \开始{}{}& # xA; {e ^ {- {e ^ {({x_1} + {x_2 })}}}} - { 左(x_2} \ {1 + x_1 ^ 2} \右)= 0 \ \ & # xA; {x_1} \因为\离开({{x_2}} \右)+ {x_2} \罪\离开({{x_1}} \右)& # xA; - \压裂{1}{2}= 0。\{数组}$ $

これらの2つの方程式の左辺値を計算する関数を記述します。

函数F = root2d F (x) (1) = exp (exp (- x (x (1) + (2)))) - x (2) * (1 + x (1) ^ 2);F(2) = x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5;

このコードをroot2d.mという名前のファイルとしてMATLAB®パス上に保存します。

(0,0)を開始点として方程式系を解きます。

有趣= @root2d;x0 = (0,0);x0, x = fsolve(有趣)
等式解决。FSOLVE完成,因为通过函数容差的值测量,功能值的向量接近零,并且如梯度测量的问题会常规。X = 0.3532 0.6061

非线形システムの解法プロセスを検证します。

表示を返さず1次の最適性を表示するプロット関数をもつようにオプションを設定します。この場合,アルゴリズムが反復すると0に収束します。

选择= optimoptions (“fsolve”“显示”“没有”“PlotFcn”, @optimplotfirstorderopt);

非線形システムの方程式は次のとおりです。

c数组$ $ \开始{}{}& # xA; {e ^ {- {e ^ {({x_1} + {x_2 })}}}} = { 左(x_2} \ {1 + x_1 ^ 2} \) \ \ & # xA; {x_1} \因为\离开({{x_2}} \右)+ {x_2} \罪\离开({{x_1}} \右)= \压裂{1}{2}# xA;公司\{数组}$ $

これらの方程式を$ F (x) = \ bf {0} $の形式に変换します。

c数组$ $ \开始{}{}& # xA; {e ^ {- {e ^ {({x_1} + {x_2 })}}}} - { 左(x_2} \ {1 + x_1 ^ 2} \右)= 0 \ \ & # xA; {x_1} \因为\离开({{x_2}} \右)+ {x_2} \罪\离开({{x_1}} \右)& # xA; - \压裂{1}{2}= 0。\{数组}$ $

これらの2つの方程式の左辺値を計算する関数を記述します。

函数F = root2d F (x) (1) = exp (exp (- x (x (1) + (2)))) - x (2) * (1 + x (1) ^ 2);F(2) = x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5;

このコードをroot2d.mという名前のファイルとしてMATLAB®パス上に保存します。

(0,0)を開始点とする非線形システムを解き,解法プロセスを確認します。

有趣= @root2d;x0 = (0,0);x = fsolve(有趣,x0,选项)
X = 0.3532 0.6061

fsolveの问题构造体を作成し,问题を解きます。

既定ではないオプションによる解と同じ问题を解きます。ただし,问题构造体を使用して问题を定式化します。

表示を返さず1次の最適性を表示するプロット関数をもつように問題のオプションを設定します。この場合,アルゴリズムが反復すると0に収束します。

问题。选项=optimoptions(“fsolve”“显示”“没有”“PlotFcn”, @optimplotfirstorderopt);

非線形システムの方程式は次のとおりです。

c数组$ $ \开始{}{}& # xA; {e ^ {- {e ^ {({x_1} + {x_2 })}}}} = { 左(x_2} \ {1 + x_1 ^ 2} \) \ \ & # xA; {x_1} \因为\离开({{x_2}} \右)+ {x_2} \罪\离开({{x_1}} \右)= \压裂{1}{2}# xA;公司\{数组}$ $

これらの方程式を$ F (x) = \ bf {0} $の形式に変换します。

c数组$ $ \开始{}{}& # xA; {e ^ {- {e ^ {({x_1} + {x_2 })}}}} - { 左(x_2} \ {1 + x_1 ^ 2} \右)= 0 \ \ & # xA; {x_1} \因为\离开({{x_2}} \右)+ {x_2} \罪\离开({{x_1}} \右)& # xA; - \压裂{1}{2}= 0。\{数组}$ $

これらの2つの方程式の左辺値を計算する関数を記述します。

函数F = root2d F (x) (1) = exp (exp (- x (x (1) + (2)))) - x (2) * (1 + x (1) ^ 2);F(2) = x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5;

このコードをroot2d.mという名前のファイルとしてMATLAB®パス上に保存します。

問題構造体の残りのフィールドを作成します。

问题。目标= @root2d;问题。x0=(0,0);问题。解算器=“fsolve”

问题を解きます。

x = fsolve(问题)
X = 0.3532 0.6061

この例では2つの未知数をもつ2つの方程式から成る方程式系の解法プロセスを示す反復表示が返されます。

2 x 1 - x 2 e - x 1 - x 1 + 2 x 2 e - x 2

これらの方程式を, F x 0 の形式に书き直します。

2 x 1 - x 2 - e - x 1 0 - x 1 + 2 x 2 - e - x 2 0

X0 = [-5 -5]での解の検索を开始します。

まず,xでの方程式の値Fを計算する関数を記述します。

F = @(x) [2*x(1) -x(2) - exp(-x(1));-x(1) + 2*x(2) - exp(-x(2))];

初期点x0を作成します。

X0 = [-5 -5];

反復表示を返すようにオプションを設定します。

选择= optimoptions (“fsolve”“显示”“通路”);

方程式を解きます。

[x, fval] = fsolve (F, x0,选项)
一阶规范信赖域迭代Func-count f (x)最优步半径0 3 47071.2 - 2.29 e + 04年1 1 6 12003.4 - 1 5.75 e + 03年1 2 9 3147.02 1.47 e + 03 1 3 12 239.527 854.452 1 388 1 4 15 1 107 1 5 18 67.0412 30.8 1 6 21 16.7042 9.05 1 7 24 0.032658 2.42788 2.26 1 8 27 e-06 0.111927 0.00294 2.5 7.03149 0.759511 0.206 2.5 9 30 10 332.5方程已解。FSOLVE完成,因为通过函数容差的值测量,功能值的向量接近零,并且如梯度测量的问题会常规。
x =2×10.5671 - 0.5671
fval =2×110-6×-0.4059 - -0.4059

反復表示はf(x)を示します。これは,关数F (x)のノルムの2乗です。この値は,反復が行われるたびに減少してゼロに近づきます。1次の最適性の尺度も同様に、反復が行われるたびに減少してゼロに近づきます。これらのエントリは、反復が解に向かって収束していることを示しています。他のエントリの意味については、反复表示を参照してください。

FVAL出力は,関数値F (x)を与えます。この値は,解においてゼロ(FunctionToleranceの許容誤差内で)になります。

次を満たす行列 X を求めます。

X X X 1 2 3. 4

これは,点x0 = (1, 1, 1, 1)を開始点とします。行列方程式を計算する無名関数を作成し、点x0を作成します。

= @(x)x*x*x - [1,2;3,4];x0 = 1 (2);

オプションを设定して表示しないようにします。

选择= optimoptions (“fsolve”“显示”“关闭”);

fsolveの出力を検証して,解の質および解法プロセスを確認します。

[X,FVAL,exitflag,输出] = fsolve(乐趣,X0,选项)
x =2×20.1291 0.8602 1.2903 1.1612
fval =2×2109× -0.1618 0.0778 0.1160 -0.0474
exitflag = 1
输出=结构体字段:firstderopt: 2.4095e-10 message: '…'

終了フラグ値1は解が信頼できることを示します。これを手動で検証するには,残差(fvalの二乗和)を計算して,どの程度ゼロに近いかを確認します。

sum (sum (fval。* fval))
ans = 4.7957 e-20

このように残差が小さい场合,xが解であることが確認できます。

输出構造体で,解を求めるためにfsolveが実行する反復および関数評価の回数を確認できます。

入力引数

すべて折りたたむ

解を求める非線形方程式。関数ハンドルまたは关节名として指定されます。有趣的は,ベクトルxを受け,xで評価される非線形方程式である,ベクトルFを返す関数です。解を求める方程式は,Fのすべての成分について,F= 0になります。关数有趣的はファイルの関数ハンドルとして指定することができます。

x = fsolve (x0 @myfun)

ここでmyfunは次のようなMATLAB®関数です。

函数F = myfun(x)…%计算函数在x处的值

有趣的は无名关数の关数ハンドルにもなります。

x = fsolve (@ (x) sin (x) * x), x0);

xFのユーザー定義の値が配列である場合,線形インデックスを使用してベクトルに変換されます(配列インデックス付けを参照)。

ヤコビアンも计算することができ,“さらに”下式で設定された“SpecifyObjectiveGradient”オプションが真正的である場合を考えます。

选择= optimoptions(‘fsolve’,‘SpecifyObjectiveGradient’,真的)

关节有趣的は2番目の出力引数にxでのヤコビ値J行列を返さなければなりません。

有趣的個の要素をもつベクトル行(列)を返し,xが長さnをもつ场合(ここで,nx0の長さ),ヤコビアンJn列の行列になります。ここで,J (i, J)F(我)x (j)に関する偏導関数です(ヤコビアンJは,Fの勾配の転置であることに注意してください)。

例:有趣= @ (x) x * * x - [1, 2, 3, 4)

データ型:char|function_handle|细绳

初期点。実数ベクトルまたは実数配列として指定されます。fsolveは,x0の要素数およびサイズを使用して,有趣的が受け入れる変数の数およびサイズを决定します。

例:x0 =(1、2、3、4)

データ型:双倍的

最適化オプション。optimoptionsの出力,またはoptimsetなどによって返される构造体として指定されます。

いくつかのオプションはすべてのアルゴリズムに适用することができ,その他のオプションは特定のアルゴリズムに关连します。详细は,最適化オプションリファレンスを参照してください。

一部のオプションは,optimoptionsに表示されません。このようなオプションは,次の表ではイタリックで示されています。詳細は,表示オプションを参照してください。

すべてのアルゴリズム
算法

“信任区域狗腿”(既定の设定),“信赖域”“文伯格 - 马夸特”から選択します。

算法オプションは使用するアルゴリズムの优先顺位を指定します。これは基本设定のみです。信頼领域法アルゴリズムでは,非线形方程式系は劣决定では解けません。すなわち,方程式の数(有趣的によって返されるFの要素数)は少なくともxの長さと同じでなければなりません。同様に,Trust-region-dogleg法アルゴリズムの場合は,方程式の数はxの長さと同じでなければなりません。選択したアルゴリズムを使用できない場合は,fsolveはレーベンバーグ・マルカートアルゴリズムを使用します。アルゴリズムの選択についての詳細は,アルゴリズムの選択を参照してください。

いくつかのアルゴリズムオプションを設定するために,optimoptionsの代わりにoptimsetを使用します。

  • 算法——アルゴリズムを“信赖域”の代わりに“trust-region-reflective”に設定します。

  • InitDamping- - - - - -算法{levenberg-marquardt, .005}などの细胞配列に設定し,レーベンバーグ・マルカート法の初期パラメーターλを設定します。

CheckGradients

ユーザー设定の导关数(目的关数または制约の勾配)と有限差分による导关数とを比较します。选択肢は真正的または错误的(既定の设定)です。

optimsetの場合,名前はDerivativeCheckで,値は“上”または“关闭”です。詳細は,新旧のオプション名を参照してください。

诊断

最小化または計算する関数に関する情報を表示します。選択肢は“上”または“关闭”(既定の设定)です。

DiffMaxChange

有限差分勾配を計算する場合に変数内で生じる最大変化量です(正のスカラー)。既定値はです。

DiffMinChange

有限差分勾配を计算する场合に変数内で生じる最小変化量です(正のスカラー)。既定値は0です。

显示

表示レベル(反复表示を参照):

  • “关闭”または“没有”——出力を表示しない。

  • “通路”——各反復の出力を表示し,既定の終了メッセージを与える。

  • “iter-detailed”- 各反复の出力を表示し,技术的な终了メッセージを与える。

  • “最后一次”(既定の設定)——最終出力を表示し,既定の終了メッセージを返す。

  • 最后详细的——最終出力のみを表示し,技術的な終了メッセージを与える。

FiniteDifferenceStepSize

有限差分のスカラーまたはベクトルのステップサイズファクター。FiniteDifferenceStepSizeをベクトルvに設定すると,前方有限差分δ

δ= v *标志的(x) *马克斯(abs (x)、TypicalX);

ここで,标志' (0)= 1を除き符号“(x) =符号(x)です。中心有限差分法では

δ= v *马克斯(abs (x)、TypicalX);

スカラーFiniteDifferenceStepSizeはベクトルに拡張します。既定値は、前進有限差分法では开方(EPS),中心有限差分法ではeps ^ (1/3)です。

optimsetの場合,名前はFinDiffRelStepです。詳細は,新旧のオプション名を参照してください。

FiniteDifferenceType

勾配推定に使用される有限差分は'向前'(既定の设定)または“中央”(中心)のいずれかです。“中央”では2倍の関数評価が必要になりますが,正確性が増します。

アルゴリズムは有限差分の両方のタイプを推定するとき,範囲に注意深く従います。そのためたとえば,向前ではなく,向后を選択すると,範囲外の点を計算しないようにすることができます。

optimsetの場合,名前はFinDiffTypeです。詳細は,新旧のオプション名を参照してください。

FunctionTolerance

関数値に関する終了許容誤差(正のスカラー)。既定の設定は1 e-6です。詳細は,许容误差と停止条件を参照してください。

optimsetの場合,名前はTolFunです。詳細は,新旧のオプション名を参照してください。

FunValCheck

目的関数値が有効かどうかをチェックします。“上”は,目的关数が复杂的,またはである値を返すと,エラーを表示します。既定の“关闭”ではエラーを表示しません。

MaxFunctionEvaluations

可能な関数評価の最大回数(正の整数)。既定の設定は100 * numberOfVariablesです。詳細は,许容误差と停止条件反復と関数計算回数を参照してください。

optimsetの場合,名前はMaxFunEvalsです。詳細は,新旧のオプション名を参照してください。

MaxIterations

可能な反復の最大数(正の整数)。既定値400です。詳細は,许容误差と停止条件反復と関数計算回数を参照してください。

optimsetの場合,名前は麦克斯特です。詳細は,新旧のオプション名を参照してください。

OptimalityTolerance

1次の最適性に関する終了許容誤差(正のスカラー)。既定の設定は1 e-6です。詳細は,1次の最適性の尺度を参照してください。

内部的に,“文伯格 - 马夸特”アルゴリズムは,FunctionTolerance1的军医倍となる最適性の許容誤差(停止条件)を使用し,OptimalityToleranceは使用しません。

OutputFcn

各反復で最適化関数が呼び出すユーザー定義の関数を1つ以上指定します。関数ハンドルか,関数ハンドルの细胞配列を渡します。既定の設定はなし([])です。詳細は,出力関数とプロット関数の構文を参照してください。

PlotFcn

アルゴリズムが実行中のさまざまな进行状况の测定値をプロットします。事前定义されたプロットから选択するか,独自のコードを记述してください。组み込みプロット关数名,关数ハンドル,または组み込みプロット关数名か关数ハンドルの细胞配列を渡します。カスタムプロット关数の场合は,关数ハンドルを渡します。既定の设定はなし([])です。

  • “optimplotx”は現在の点をプロットします。

  • “optimplotfunccount”は关数计算をプロットします。

  • “optimplotfval”は関数値をプロットします。

  • “optimplotstepsize”はステップサイズをプロットします。

  • “optimplotfirstorderopt”は1次の最適性尺度をプロットします。

カスタムのプロット关数は,出力关数と同じ构文を使用します详细。は,优化工具箱™の出力関数出力関数とプロット関数の構文を参照してください。

optimsetの場合,名前はPlotFcnsです。詳細は,新旧のオプション名を参照してください。

SpecifyObjectiveGradient

真正的の場合,fsolveは目的関数に対してユーザー定義のヤコビアン(既定の設定では有趣的),または(JacobianMultiplyFcnを使用するときの)ヤコビ情報を使用します。错误的(既定の设定)の场合,fsolveは有限差分を使用してヤコビアンを近似します。

optimsetの場合,名前は雅可比で,値は“上”または“关闭”です。詳細は,新旧のオプション名を参照してください。

StepTolerance.

xに关する许容误差(正のスカラー)。既定の设定は1 e-6です。詳細は,许容误差と停止条件を参照してください。

optimsetの場合,名前はTolXです。詳細は,新旧のオプション名を参照してください。

TypicalX

典型的なxの値です。TypicalXの要素数は,開始点x0の要素数と等しくなります。既定値は(Numberofvarialbles,1)です。fsolveではTypicalXを使用して勾配推定の有限差分をスケーリングします。

信任区域狗腿アルゴリズムはTypicalXをスケーリング行列の対角項として使用します。

UseParallel

真正的の場合,fsolveは並列で勾配を推定します。既定の错误的に設定すると,無効になります。詳細は,並列計算を参照してください。

信頼领域法アルゴリズム
JacobianMultiplyFcn

ヤコビ乘算关数。关​​数ハンドルとして指定されます。大规模构造化问题に対して,この关数は実际にJを計算しないで,ヤコビ行列乗算Ĵ* YJ'* YJ”* (J * Y)のいずれかを计算します。この关数は次の形式を取ります。

W = jmfun(动力系统,Y,标志)

ここで,金佛山Ĵ* Y(またはJ'* YJ”* (J * Y))の計算に使用される行列を含んでいます。1番目の引数金佛山は目的関数有趣的が返す2番目の引数と同じにしなければなりません。

(F,动力系统)(x) =乐趣

Yは問題の次元と同じ行数をもつ行列です。国旗はどの乗数が計算されるかを決めます。

  • 标志== 0の場合,W = J ' * (J * Y)です。

  • 国旗> 0の場合,W =Ĵ* Yです。

  • 国旗< 0の場合,W = J ' * Yです。

いずれの場合でもJは陽的に計算されません。fsolve金佛山を使用して前提条件子を计算します。jmfunが必要とする追加のパラメーターを与える方法については追加パラメーターの受け渡しを参照してください。

メモ:

“SpecifyObjectiveGradient”は,fsolve金佛山有趣的からjmfunに渡すために真正的に设定しなければなりません。

同様の例は密に構造化されたヘッシアンと線形等式を使用した最小化を参照してください。

optimsetの場合,名前はJacobMultです。詳細は,新旧のオプション名を参照してください。

JacobPattern

有限差分に対するヤコビスパースパターン。有趣的(我)x (j)によって異なる場合,JacobPattern(I,J)= 1を設定します。それ以外の場合は,JacobPattern(I,J)= 0を設定します。言い換えると,∂有趣的(我)/∂x (j)≠0をもつことができる場合,JacobPattern(I,J)= 1となります。

有趣的でヤコビ行列Jを计算するのが不便な场合は,JacobPatternを使用します。ただし,有趣的(我)x (j)によって異なる場合は見ただけで判断できます。JacobPatternを提供できる场合,fsolveは,スパース有限差分を使ってJを近似することができます。

最悪の场合,构造が不明であれば,JacobPatternを設定しないでください。既定では,JacobPatternは1からなる密行列のように動作します。その後fsolveは,非スパース状态の有限差分近似を反复ごとに计算します。大规模な问题では,この计算には多大なリソースが必要となる场合があり,通常はスパース构造を决定するのが妥当です。

MaxPCGIter

PCG(前処理付き共役勾配)法の反復の最大回数です(正のスカラー)。既定値は马克斯(1楼(numberOfVariables / 2))です。詳細は,方程式を解くためのアルゴリズムを参照してください。

PrecondBandWidth

PCGに対する前提条件子の帯域幅の上限(非负の整数)。既定のPrecondBandWidthの場合,共役勾配(CG)ではなく,直接因子分解(コレスキー因子)が使用されます。直接因子分解ではCGより計算量が増加しますが,解を求めるためのステップの質が向上します。対角型をした前提条件のために,PrecondBandWidth0に设定します(上部帯域幅0)。一部の问题では帯域幅を中间にすることでPCG法の反复回数を减らします。

SubproblemAlgorithm

反復ステップの計算方法を定義します。既定の設定である“分解”のステップは'cg'より低速ですが,精度の点で胜ります详细。は,信頼领域法アルゴリズムを参照してください。

TolPCG

PCG反復に関する終了許容誤差(正のスカラー)。既定値は0.1です。

レーベンバーグ·マルカート法アルゴリズム
InitDamping

レーベンバーグ・マルカートパラメーターの初期値(正のスカラー)。既定値は1)依照です。詳細は,レーベンバーグ·マルカート法を参照してください。

ScaleProblem

的雅可比矩阵は,適切にスケール化されていない問題に対して収束性を高める場合があります。既定値は“没有”です。

例:选择= optimoptions(“fsolve”、“FiniteDifferenceType”,“中央”)

次のフィールドをもつ構造体として指定される問題構造体です。

フィールド名 エントリ

客观的

目的关数

x0

xの初期点

求解

“fsolve”

选项

optimoptionsで作成されたオプション

データ型:结构体

出力引数

すべて折りたたむ

実数ベクトルまたは実数配列として返される解です。xのサイズは,x0のサイズと同じです。通常、exitflagが正の場合,xは問題に対する局所的な解になります。解の質に関する詳細は,ソルバーが成功する場合を参照してください。

解での目的関数値。実数ベクトルとして返されます。一般的に、FVAL有趣的(x)ににます。

fsolveの停止理由。整数として返されます。

1

方程式が解けました。1次の最適性は僅かです。

2

方程式が解けました。指定された许容误差をxの変化が下回っているか,xにおけるヤコビアンが未定義です。

3.

方程式が解けました。残差の変化が指定した許容誤差を下回っています。

4

方程式が解けました。探索方向の大きさが指定した许容误差を下回っています。

0

反復回数が选项。麦克斯特ationsを超过,または关数评価の回数が选项。MaxFunctionEvaluationsを超過しています。

-1

出力関数またはプロット関数によってアルゴリズムが停止しました。

-2

方程式が解けませんでした。终了メッセージで详细を确认できる场合があります。

-3

方程式が解けませんでした。信頼領域の半径が小さくなりすぎています(信任区域狗腿アルゴリズム)。

最適化プロセスに関する情報。次のフィールドをもつ構造体として返されます。

迭代

実行した反复回数

funcCount

関数評価の回数

算法

使用される最适化アルゴリズム

cgiterations

PCG法の合計反復回数(“信赖域”アルゴリズムのみ)

stepsize

xの最終変位(“信任区域狗腿”以外)

firstorderopt

1次の最適性の尺度

消息

終了メッセージ

解におけるヤコビアン。実数行列として返されます。雅可比矩阵(i, j)は,解xでのx (j)に关する有趣的(我)の偏導関数です。

制限

  • 解かれる関数は連続でなければなりません。

  • うまく実行できた場合,fsolveは1つの根のみを出力します。

  • 既定のTrust-region-dogleg法は方程式系が合致する,すなわち,方程式の数が未知数の数と等しい場合にのみ使用できます。レーベンバーグ・マルカート法では,方程式系が合致している必要はありません。

ヒント

  • 大規模な問題,つまり数千を超える変数が含まれる問題の場合,算法オプションを“信赖域”SubproblemAlgorithmオプションを'cg'に設定することにより,メモリを節約できます(場合によっては時間を短縮できます)。

アルゴリズム

レーベンバーグ・マルカート法および信頼領域法は,lsqnonlinにも使用される非線形最小二乗アルゴリズムに基づいています。システムが0をもたないかもしれない場合,これらの方法の1つを使用してください。アルゴリズムは,残差が小さいところの点を戻します。しかし,システムのヤコビアンが特異な場合,アルゴリズムが方程式系の解ではない点に収束する可能性があります(制限を参照)。

  • 既定の设定ではfsolveはTrust-region-dogleg法アルゴリズムを選択します。アルゴリズムは[8]で説明される鲍威尔狗腿方法を変形したものです。これは[7]で実装したアルゴリズムと似た性質をもちます。詳細は,Trust-region-dogleg法アルゴリズムを参照してください。

  • この信頼領域法アルゴリズムは部分空間の信頼領域法であり,[1][2]で说明する内部反射ニュートン法に基づいています。各反复は,前处理付き共役勾配(PCG)法を使用する大型线形システムの近似解を伴います。详细は,信頼领域法アルゴリズムを参照してください。

  • レーベンバーグ・マルカート法は[4][5][6]の参考文献で説明されています。詳細は,レーベンバーグ·マルカート法を参照してください。

代替机能

アプリ

最適化ライブエディタータスクがfsolveにビジュアルインターフェイスを提供します。

参照

[1]科尔曼,T.F.和Y.李,“内部,信赖域方法的非线性最小化除边界,” SIAM杂志上的优化,卷。6,第418-445,1996。

[2]科尔曼,T.F.和Y.李,“在反思牛顿法的收敛大规模非线性最小化除边界,”数学规划,卷。67,第2号,第189-224,1994。

[3] Dennis, J. E. Jr.,“非线性最小二乘”,《数值分析的现状》,D. Jacobs编辑,学术出版社,第269-312页。

[4]的Levenberg,K。,“对某些问题的溶液中的方法在最小二乘,”季度应用数学2期,第164-168,1944。

[5] Marquardt,“非线性参数的最小二乘估计算法”,SIAM应用数学杂志,第11卷,431-441页,1963。

[6]以上,J. J.,“该Levenberg-Marquardt算法:执行和理论”数值分析,编辑。G. A.华生,数学630,施普林格出版社,页105-116,1977讲义。

[7] Moré, J. J., B. S. Garbow, K. E. Hillstrom, MINPACK 1用户指南,阿贡国家实验室,报告。退火- 80 - 74,1980。

[8] Powell, M. J. D.,“求解非线性代数方程组的Fortran子程序”,非线性代数方程的数值方法,P. Rabinowitz, Ch.7, 1970。

拡张机械

R2006aより前に導入