主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

lsqcurvefit

非線形曲線近似(データ適合)問題を最小二乗近似的に解く

説明

非線形最小二乗ソルバー

問題を解く係数xを見つけます

最小值 x F x x d 一个 t 一个 y d 一个 t 一个 2 2 最小值 x F x x d 一个 t 一个 y d 一个 t 一个 2

xdataは入力データ,ydataは観測された出力です。ここで,xd一个t一个およびydataは行列またはベクトル、F (x, xdata) は ydata と同サイズの行列値またはベクトル値関数です。

オプションでxの成分は下限磅と上限乌兰巴托をもつことができます。引数x,磅,および乌兰巴托はベクトルまたは行列とすることができます。行列引数を参照してください。

関数lsqcurvefitlsqnonlinと同じアルゴリズムを使用します。lsqcurvefitの目的は単にデータ适合问题用に便利なインターフェイスを与えることです。

二乗和を計算するというよりもむしろ,lsqcurvefitは次の”“ベクトル値関数を計算するユーザー定義関数を必要とします。

F x x d 一个 t 一个 F x x d 一个 t 一个 1 F x x d 一个 t 一个 2 F x x d 一个 t 一个 k

x= lsqcurvefit (有趣的X0.xdataydataは,X0.を開始値として,非線形関数乐趣(x, xdata)がデータydataに(最小二乗的に)最も合う係数xを求めます。ydataは,有趣的が返すベクトル(または行列)Fと同じサイズでなければなりません。

メモ

追加パラメーターの受け渡しは必要に応じて他のパラメーターを関数有趣的(x)へ渡す方法を説明します。

x= lsqcurvefit (有趣的X0.xdataydataUB.は,解が常にxUB.の範囲に存在するように,設計変数xに上限と下限を定義します。磅(i) =乌兰巴托(我)を指定することによって解の要素x(i)を修正できます。

メモ

問題の指定された入力範囲が矛盾する場合,出的力xX0.、出力resnorm剩余[]です。

範囲Lb≤x≤ubに違反するX0.。

x= lsqcurvefit (有趣的X0.xdataydataUB.选项は,选项で指定された最適化オプションを使って最小化します。optimoptionsを使用してこれらのオプションを設定してください。範囲が存在しない場合,UB.に空行列を渡してください。

x= lsqcurvefit (问题は,问题で説明されている構造体问题の最小値を求めます。

xresnorm] = lsqcurvefit(___は,すべての入力引数に対して,xでの残差の2乗ノルム値(总和(乐趣(x, xdata) -ydata) ^ 2)。)を返します。

xresnorm剩余exitflag输出] = lsqcurvefit(___は上記に加え,解xにおける残差の値有趣(x,xdata)-ydata,終了条件を記述する値exitflag,および最適化プロセスに関する情報を含む構造体输出を返します。

xresnorm剩余exitflag输出λ雅可比矩阵] = lsqcurvefit(___は上記に加え,解xにおけるラグランジュ乗数をフィールドに含む構造体λ,および解xにおける有趣的のヤコビアンを返します。

すべて折りたたむ

観測時間データxdataおよび観測応答データydataについて,次の形式のモデルが適合するパラメーター x 1 および x 2 を求めるものとします。

ydata x 1 经验值 x 2 xdata

観測時間と応答を入力します。

xdata =...[0.9 1.5 13.8 19.8 24.1 28.2 35.2 60.3 74.6 81.3];ydata =...[455.2 428.6 124.1 67.3 43.2 28.1 13.1 -0.4 -1.3 -1.5];

単純な指数減衰モデルを作成します。

有趣= @ (x, xdata) x (1) * exp (x (2) * xdata);

開始点x0 =[1] 100年を使用してモデルを当てはめます。

x0 =[1] 100年;x = lsqcurvefit(有趣,x0, xdata ydata)
地方最低可能。LSQCurveFit停止,因为相对于其初始值相对于初始值的总和的最终变化小于功能公差的值。
X =1×2498.8309 - -0.1013

データと当てはめた曲線をプロットします。

times = linspace(xdata(1),xdata(end));情节(xdata ydata,“柯”,乘以,有趣(x,倍),'b-') 传奇(“数据”的拟合指数)标题(“数据与拟合曲线”

图包含轴。具有标题数据和拟合曲线的轴包含2个类型的型号。这些对象代表数据,拟合指数。

適合パラメーターに制約がある場合の,データへの最適な指数適合を求めます。

ノイズを含む指数減衰モデルからデータを生成します。モデルは次のとおりです。

y 经验值 - 1 3. t + ε

ここで, t の範囲は0 ~ 3, ε は平均が0,標準偏差が0.05の正規分布ノイズです。

rng默认的%的再现性xdata = linspace (0, 3);Ydata = exp(-1.3*xdata) + 0.05*randn(size(xdata)));

問題は,データ(xdataydata)について,データに最も適合する指数減衰モデル y x 1 经验值 x 2 xdata の検出です。パラメーターには以下の境界があります。

0 x 1 3. / 4

- 2 x 2 - 1

lb = [0,-2];UB = [3/4,-1];

モデルを作成します。

有趣= @ (x, xdata) x (1) * exp (x (2) * xdata);

初期推定を作成します。

x0 = [1/2, 2];

有界適合問題を解きます。

x = lsqcurvefit (ydata,有趣,x0, xdata磅,乌兰巴托)
局部最小值。由于梯度的大小小于最优性公差的值,优化完成。
X =1×20.7500 - -1.0000

生成された曲線がどれだけ適切にデータに合っているかを検証します。制約によって解と実際の値に差が生じるため,この近似は最適なものではありません。

情节(xdata ydata,“柯”、xdata有趣(x, xdata),'b-') 传奇(“数据”的拟合指数)标题(“数据与拟合曲线”

图包含轴。具有标题数据和拟合曲线的轴包含2个类型的型号。这些对象代表数据,拟合指数。

既定の“trust-region-reflective”アルゴリズムと“levenberg-marquardt”アルゴリズムによる適合の結果を比較します。

観測時間データxdataおよび観測応答データydataについて,次の形式のモデルが適合するパラメーター x 1 および x 2 を求めるものとします。

ydata x 1 经验值 x 2 xdata

観測時間と応答を入力します。

xdata =...[0.9 1.5 13.8 19.8 24.1 28.2 35.2 60.3 74.6 81.3];ydata =...[455.2 428.6 124.1 67.3 43.2 28.1 13.1 -0.4 -1.3 -1.5];

単純な指数減衰モデルを作成します。

有趣= @ (x, xdata) x (1) * exp (x (2) * xdata);

開始点x0 =[1] 100年を使用してモデルを当てはめます。

x0 =[1] 100年;x = lsqcurvefit(有趣,x0, xdata ydata)
地方最低可能。LSQCurveFit停止,因为相对于其初始值相对于初始值的总和的最终变化小于功能公差的值。
X =1×2498.8309 - -0.1013

この解を“levenberg-marquardt”による近似と比較します。

选项= Optimoptions('lsqcurvefit''算法'“levenberg-marquardt”);lb = [];UB = [];x = lsqcurvefit (ydata,有趣,x0, xdata磅,乌兰巴托,选项)
地方最低可能。LSQCurveFit停止,因为当前步骤的相对尺寸小于阶梯尺寸公差的值。
X =1×2498.8309 - -0.1013

2つのアルゴリズムが同じ解に収束しています。データと当てはめた指数モデルをプロットします。

times = linspace(xdata(1),xdata(end));情节(xdata ydata,“柯”,乘以,有趣(x,倍),'b-') 传奇(“数据”的拟合指数)标题(“数据与拟合曲线”

图包含轴。具有标题数据和拟合曲线的轴包含2个类型的型号。这些对象代表数据,拟合指数。

既定の“trust-region-reflective”アルゴリズムと“levenberg-marquardt”アルゴリズムによる適合の結果を比較します。解法プロセスを検証して,この場合にどちらがより効率的かを確認します。

観測時間データxdataおよび観測応答データydataについて,次の形式のモデルが適合するパラメーター x 1 および x 2 を求めるものとします。

ydata x 1 经验值 x 2 xdata

観測時間と応答を入力します。

xdata =...[0.9 1.5 13.8 19.8 24.1 28.2 35.2 60.3 74.6 81.3];ydata =...[455.2 428.6 124.1 67.3 43.2 28.1 13.1 -0.4 -1.3 -1.5];

単純な指数減衰モデルを作成します。

有趣= @ (x, xdata) x (1) * exp (x (2) * xdata);

開始点x0 =[1] 100年を使用してモデルを当てはめます。

x0 =[1] 100年;[x,Resnorm,Reseal,ExitFlag,输出] = LSQCurveFit(Fun,X0,Xdata,Ydata);
地方最低可能。LSQCurveFit停止,因为相对于其初始值相对于初始值的总和的最终变化小于功能公差的值。

この解を“levenberg-marquardt”による近似と比較します。

选项= Optimoptions('lsqcurvefit''算法'“levenberg-marquardt”);lb = [];UB = [];[x2,Resnorm2,Reseal2,ExitFlag2,Output2] = LSQCurveFit(有趣,X0,XDATA,YDATA,LB,UB,选项);
地方最低可能。LSQCurveFit停止,因为当前步骤的相对尺寸小于阶梯尺寸公差的值。

これらの解は等価でしょうか。

规范(x x2)
ANS = 2.0626E-06

これらの解は等価です。

解が得られるまでの关数评価の回数が少ないのは,どちらのアルゴリズムでしょうか。

流([''信任区域反射''算法进行%d函数计算,\n'...''''''''''''''算法取代了%d函数评估。\ n'],...output.funcCount output2.funcCount)
“信任区域反射”算法进行了87次函数评估,“levenberg-marquardt”算法进行了72次函数评估。

データと当てはめた指数モデルをプロットします。

times = linspace(xdata(1),xdata(end));情节(xdata ydata,“柯”,乘以,有趣(x,倍),'b-') 传奇(“数据”的拟合指数)标题(“数据与拟合曲线”

图包含轴。具有标题数据和拟合曲线的轴包含2个类型的型号。这些对象代表数据,拟合指数。

適切に近似されているように見えます。残差の大きさはどの程度でしょうか。

流([''信任区域反光'算法具有残余标准%f,\ n'...''''''''''''''算法具有残余标准%f。\ n'],...resnorm resnorm2)
“信任区域反射”算法的残差范数为9.504887,而“levenberg-marquardt”算法的残差范数为9.504887。

入力数

すべて折りたたむ

当てはめる関数。関数ハンドルまたは関数名として指定されます。有趣的は2つの入力,ベクトルまたは行列xとベクトルまたは行列xdataを取る関数です。有趣的はベクトルまたは行列Fを返しますが,これはxxdataで評価される目的関数です。関数有趣的は関数ファイルの関数ハンドルとして指定することができます。

x = lsqcurvefit (@myfun x0、xdata ydata)

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

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

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

f = @ (x, xdata) x (1) * xdata。x ^ 2 +(2) *罪(xdata);x = lsqcurvefit (f, x0, xdata ydata);

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

メモ:

有趣的はは二和总和(乐趣(x, xdata) -ydata) ^ 2)。ではなく,乐趣(x, xdata)を返します。lsqcurvefit有趣(x,xdata)-ydataの要素の二乗和を暗黙的に計算します。詳細は,を参照してください。

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

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

関数有趣的は2番目の出力引数にxでのヤコビ値J行(列)を返さなければなりません。nargoutの値を確認することで,1つの出力引数のみの場合(最適化アルゴリズムがJではなくFの値のみを必要とする場合),有趣的が呼び出されるときにJの演算を避けることができます。

功能[f,j] = myfun(x,xdata)f = ...%目标函数值,如果nargout> 1%两个输出参数j = ...%jacobian在x结束时评估的函数

有趣的个の要素をもつベクトル(行程)を返し,xn個の要素をもつ場合(ここで,nX0.の要素数),ヤコビアンJn列の行列になります。ここで,j(i,j)F(我)x(j)に関する偏導関数です(ヤコビアンJは,Fの勾配の転置であることに注意してください)。詳細は,ベクトルと行列の目的関数の記述を参照してください。

例:@(x,xdata)x(1)* exp(-x(2)* xdata)

データ型:字符|function_handle|字符串

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

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

データ型:

モデルの入力データ。実数ベクトルまたは実数配列として指定されます。モデルは次のとおりです。

ydata =乐趣(x, xdata)

ここで,xdataおよびydataは固定配列,xは二乘和の最小値の探索探索ためlsqcurvefitによって変更されるパラメーターの配列です。

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

データ型:

モデルの応答データ。実数ベクトルまたは実数配列として指定されます。モデルは次のとおりです。

ydata =乐趣(x, xdata)

ここで,xdataおよびydataは固定配列,xは二乘和の最小値の探索探索ためlsqcurvefitによって変更されるパラメーターの配列です。

ydata配列のサイズおよび形状は,配列有趣(x0,xdata)と同じでなければなりません。

例:ydata = [1,2,3,4]

データ型:

下限。実数ベクトルまたは実数配列として指定されます。X0.の要素数との要素数号等しい等しい合,は次を指定します。

x(i)> = lb(i)(すべてのについて)

元素个数(磅)<元素个数(x0)のの合,は次を指定します。

x(i)> = lb(i)1 <= I <= numel(lb)

X0.よりの要素数が少ない場合,ソルバーは警告を生成します。

例:xのすべての成分が正であることを指定するには,磅= 0(大小(x0))を使用します。

データ型:

実数ベクトルまたは実数配列として指定される上限です。X0.の要素数とUB.の要素数号等しい等しい合,UB.は次を指定します。

x (i) < =乌兰巴托(我)(すべてのについて)

元素个数(乌兰巴托)<元素个数(x0)のの合,UB.は次を指定します。

x (i) < =乌兰巴托(我)1 <= I <= numel(ub)

X0.よりUB.の要素数が少ない場合,ソルバーは警告を生成します。

例:xのすべての成分が1未満であることを指定するするには乌兰巴托= 1(大小(x0))を使用します。

データ型:

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

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

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

すべてのアルゴリズム

算法

“trust-region-reflective”(既定の設定)と“levenberg-marquardt”から選択します。

算法オプションは使用するアルゴリズムの優先順位を指定します。これは基本設定のみです。条件によっては,各アルゴリズムに対応しなければならないからです。信頼領域反射法アルゴリズムでは、非線形方程式系は劣決定では解けません。すなわち、方程式の数 (有趣的によって返されるFの要素数)は少なくともxの長さと同じでなければなりません。アルゴリズムの選択についての詳細は、アルゴリズムの選択を参照してください。

CheckGradients

ユーザー設定の導関数(目的関数または制約の勾配)と有限差分による導関数とを比較します。選択肢は,(既定の設定)または真正的です。

优化集の结合,名称はDerivativeCheckで,値は“上”または'离开'です。詳細は,新闻の名を参照してください。

诊断

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

diffmaxchange.

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

DiffMinChange

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

展示

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

  • '离开'または“没有”——出力を表示しない。

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

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

  • '最终的'(既定の設定)——最終出力を表示し,既定の終了メッセージを返す。

  • '最终详细'- 最终最终力のみを表示,技术的な终了メッセージを。

FiniteDifferenceStepSize

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

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

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

delta = v。* max(abs(x),典型值);

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

优化集の结合,名称はFinDiffRelStepです。詳細は,新闻の名を参照してください。

FiniteDifferenceType

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

アルゴリズムは有ののする,范囲に注意深くます。そのそのたとえば,前,向前,向后,向后を选択と,范囲外の点计算しないにすることができます。

优化集の结合,名称はFinDiffTypeです。詳細は,新闻の名を参照してください。

FunctionTolerance

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

优化集の结合,名称は塔尔芬です。詳細は,新闻の名を参照してください。

FunValCheck

关键词有效かかかチェックチェックます。“上”は,関数が复杂的inf,またはである値を返すと,エラーを表示します。既定の'离开'ではエラーを表示しません。

MaxFunctionEvaluations

可能关节数评価最大数次数(正の整数)。既定既定の设定100 * numberOfVariablesです。詳細は,許容誤差と停止条件反復と関数計算回数を参照してください。

优化集の结合,名称はMaxfunevals.です。詳細は,新闻の名を参照してください。

MaxIterations

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

优化集の结合,名称はmaxit.です。詳細は,新闻の名を参照してください。

OptimalityTolerance

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

内部的に,“levenberg-marquardt”アルゴリズムは,FunctionTolerance1E-4倍となる最适性性の许容误差误差误差(停止条件)をを使用し,OptimalityToleranceは使用しませ。

优化集の结合,名称は塔尔芬です。詳細は,新闻の名を参照してください。

outputfcn.

各反復で最適化関数が呼び出すユーザー定義の関数を1つ以上指定します。関数ハンドルか,関数ハンドルの细胞配列を渡します。既定の設定はなし([])です详细は,触力关节关系关键词を参照してください。

PlotFcn

アルゴリズムが実行中のさまざまな進行状況の測定値をプロットします。事前定義されたプロットから選択するか,独自のコードを記述してください。名前,関数ハンドル,または名前か関数ハンドルの细胞配列を渡します。カスタムプロット関数の場合は,関数ハンドルを渡します。既定の設定はなし([])です。

  • 'Optimplotx'は現在の点をプロットします。

  • 'OptimplotFunccount'は関数計算をプロットします。

  • 'OptimplotFval'は関数値をプロットします。

  • “optimplotresnorm”は残差のノルムをプロットします。

  • 'OptimplotStepsize'はステップサイズをプロットします。

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

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

优化集の结合,名称はPlotFcnsです。詳細は,新闻の名を参照してください。

SpecifyObjectiveGradient

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

优化集の结合,名称は雅可比矩阵で,値は“上”または'离开'です。詳細は,新闻の名を参照してください。

StepTolerance

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

优化集の结合,名称はTolXです。詳細は,新闻の名を参照してください。

TypicalX

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

UseParallel

真正的の場合,ソルバーは並列で勾配を推定します。既定のに设定すると,无效になります。详细详细,并列计算を参照してください。

信頼領域反射法アルゴリズム
JacobianMultiplyFCN.

ヤコビ乗算関数。関数ハンドルとして指定されます。大規模構造化問題に対して、この関数は実際にJを計算しないで,ヤコビ行列乗算J * YJ ' * YJ”* (J * Y)のいずれかを計算します。この関数は次の形式を取ります。

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

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

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

Yは問題の次元と同じ行数をもつ行列です。旗帜はどの乘数が计算されるかを决めます。

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

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

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

どの場合でも,Jは明示的に形成されません。ソルバーは动力系统を使用して前提条件子を計算します。jmfunが必要とする追加のパラメーターを与える方法については追加パラメーターの受け渡しを参照してください。

メモ:

'specifyobjectivegradient'真正的に設定し,ソルバーが动力系统有趣的からjmfunに渡すようにしなければなりません。

同様の例は密に構造化されたヘッシアンと線形等式を使用した最小化线路最小二乘付きヤコビ关联を参照してください。

优化集の结合,名称はJacobMultです。詳細は,新闻の名を参照してください。

jacobpattern.

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

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

構造が不明であれば,jacobpattern.を設定しないでください。既定では,jacobpattern.は1からなる密行列のように動作します。その後,ソルバーは,非スパース状態の有限差分近似を反復ごとに計算します。大規模な問題では,この計算には多大なリソースが必要となる場合があり,通常はスパース構造を決定するのが妥当です。

maxpcgiter.

PCG(前致理性付き共役勾配)法の反复の大大参数です(正のスカラー)。既既値はMax(1,Numberofvariables / 2)です。詳細は,大規模な非線形最小二乗法を参照してください。

PrecondBandWidth

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

子项产算法

反復ステップの計算方法を定義します。既定の設定である“分解”のステップは“重心”より低速ですが,精度の点で勝ります。詳細は,信頼領域反射法の最小二乗を参照してください。

TolPCG

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

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

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

ScaleProblem

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

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

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

フィールド名 エントリ

客观的

xxdataの目的关节

X0.

xの初期点,アクティブセットアルゴリズムのみ

xdata

目的関数の入力データ

ydata

目的関数に一致させる出力データ
下限のベクトル
UB. 上限のベクトル

解算器

'lsqcurvefit'

选项

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

问题構造体では,少なくとも客观的X0.解算器xdataydata,および选项フィールドを指定しなければなりません。

データ型:结构体

出力引数

すべて折りたたむ

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

残差の2乗ノルム。非负の数として返されます。resnormは,xにおける残差の二乗した2ノルム(总和(乐趣(x, xdata) -ydata) ^ 2)。)です。

解での目的関数の値。配列として返されます。一般的に、剩余=乐趣(x, xdata) -ydataになります。

ソルバーの停止理由。整数として返されます。

1

関数が解xに収束したことを示します。

2

xの変化が指定された許容誤差を下回っているか,xにおけるヤコビアンが未定義です。

3.

残差の変化が指定された許容誤差を下回っています。

4

探索方向の相対振幅がステップの許容誤差を下回っています。

0

反復回数が选项..を超過,または関数評価の回数がoptions.maxfunctionevaluations.を超過しています。

-1

プロット関数または出力関数がソルバーを停止させたことを示します。

-2

問題が実行不可能です。範囲UB.が適切ではありません。

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

firstorderopt

1次の最適性の尺度

迭代

実行した反復回数

funcCount

関数評価回数です。

cgiterations

PCG法の合計反復回数(信頼領域反射法アルゴリズムのみ)

stepsize

xの最終変位

算法

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

消息

終了メッセージ

解におけるラグランジュ乘数。次のフィールドをもつ构造体として返されます。

较低的

下限

上限UB.

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

制限

  • 信頼領域反射法アルゴリズムは劣決定システムを扱いません。方程式の数,つまりFの行数が少なくとも変数の数と同じである必要があります。劣決定の場合,lsqcurvefitはレーベンバーグ・マルカート法アルゴリズムを使用します。

  • lsqcurvefitはは値问题ことができことができことができます解く制约は値値に対して持た持たないことにしくださいくださいくださいくださいくださいください。。详细详细,複素数値データへのモデルの当てはめを参照してください。

  • 信息领域反思法のの前定理付き付き勾配ででで使使れる条件子の计算は,その计算のにjTJ(はヤコビ行列)を作成します。そのため多くの非ゼロ要素をもつJの行は,密行列の積JTjに近い结果になり,大规模な问题についてはのコストを要する解プロセスプロセスなるなるなる场ががあり。

  • xの構成要素に上限(または下限)がない場合,lsqcurvefitでは非常に大きい任意の正の値(下限に対しては負の値)を設定する代わりに,inf(下限に対しては)をUB.(または)の対応する构成要素に设定する方がより适切です。

lsqnonlinlsqcurvefitfsolveの信息领域反思法アルゴリズムは,有趣的でヤコビアンを計算せずに,あるいはヤコビスパースパターンを提示せずに,小規模から中規模の問題で使用できます(これは,ヘッシアンの計算やヘッセスパースパターンの入力なしで,fminconまたはfminuncを使规模とは,どのくらい小さいうか。

個の方程式とn個の未知数の問題を考えてみましょう。コマンドJ =稀疏((m, n))内存不足エラーを引き起こす場合は,間違いなく大きな問題が発生しています。エラーが発生しない場合でも,問題の規模が大きすぎる場合があります。判定するには,問題を実行してMATLABがシステムで使用可能な仮想メモリ内で実行されるかどうかを確認します。

アルゴリズム

レーベンバーグ・マルカート法および信頼領域反射法は,fsolveにも使用される非線形最小二乗アルゴリズムに基づいています。

  • 既定の信頼領域反射法アルゴリズムは部分空間の信頼領域法であり,[1]および[2]で説明するinterior-reflectiveニュートン法に基づいています。各反復は,前処理付き共役勾配(PCG)法を使用する大型線形システムの近似解を伴います。詳細は,信頼領域反射法の最小二乗を参照してください。

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

代替機能

アプリ

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

参照

[1] Coleman, T.F.和Y. Li。有界非线性极小化的内部信赖域方法《优化学报》,1996年第6卷,第418-445页。

[2] Coleman, T.F.和Y. Li。关于有界大规模非线性极小化的反射牛顿方法的收敛性《数学规划》,第67卷第2期,1994年,第189-224页。

[3] Dennis, J. E. Jr. <非线性最小二乘>《数值分析的技术现状》,雅各布斯编,学术出版社,269-312页。

[4] Levenberg, K. <一种求解最小二乘某些问题的方法>。应用数学季刊2,1944,页164-168。

《非线性参数的最小二乘估计算法》。SIAM应用数学杂志,Vol. 11, 1963, pp. 431-441。

[6] Moré, J. J. < Levenberg-Marquardt算法:实现和理论>。数值分析,g.a. Watson主编,《数学讲义》630,施普林格Verlag, 1977,第105-116页。

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

[8] Powell, M. J. D. <求解非线性代数方程组的Fortran子程序>。非线性代数方程的数值方法,P. Rabinowitz主编,ch7, 1970。

拡張機能

R2006Aより前に导入