方程求解算法
方程求解的定义
给定一组n非线性函数F<年代ub>我(x),n向量的分量是多少x,解方程的目标是找到一个向量x这就使得F<年代ub>我(x) = 0。
fsolve
试图通过最小化各分量的平方和来解方程组。如果平方和为零,则方程组已解。fsolve有三个算法:
信赖域
Trust-region-dogleg
Levenberg-Marquardt
所有算法都是大规模的;看到大规模和中等规模算法.
的fzero函数解一个一维方程。
的mldivide函数解线性方程组。
信赖域算法
优化工具箱™求解器中使用的许多方法都是基于<年代pan class="emphasis">信任区域,优化中的一个简单而强大的概念。
为了理解信任域优化方法,考虑无约束最小化问题,最小化f(x),其中函数接受向量参数并返回标量。假设当前点是x在n-空间,你想通过移动到函数值较低的点来改进。为了做到这一点,算法逼近f用一个更简单的函数问,合理地反映了函数的行为f在一个社区N围绕这一点x.这个区域是信任区域。求解器计算一个试步年代通过最小化(或近似最小化)N.信任域子问题是
求解器将当前点更新为x+年代如果<年代pan class="inlineequation">f(x+年代) <f(x);否则,当前点保持不变,求解器缩小N(信任区域)并重复试步计算。
定义特定信任区域最小化方法的关键问题f(x)是如何选择和计算近似值问(定义在当前点x),如何选择和修改信任区域N,以及如何准确地求解信赖域子问题。
在标准信赖域方法中([48]),即二次逼近问是由泰勒近似的前两项定义的F在x.附近N通常在形状上呈球形或椭球形。在数学上,信任域子问题是典型的表述
(1)
在哪里g的梯度f在目前的情况下x,H为海森矩阵(二阶导数的对称矩阵),D为对角线缩放矩阵,Δ为正标量,‖。‖是2范数。来解决方程1,一个算法(见[48])可以计算的所有特征值H然后应用牛顿过程特征方程
该算法提供了一个精确的解方程1.然而,这需要的时间与的因数分解成正比H.因此,信任域问题需要不同的方法。几种近似和启发式策略,基于方程1,已在文献中提出([42]而且[50]).“优化工具箱”求解器遵循一种近似方法,该方法将信任域子问题限制为二维子空间年代([39]而且[42]).求解器计算出子空间之后年代,工作解决方程1是微不足道的,因为在子空间中,这个问题只是二维的。现在主要的工作转移到子空间的确定上。
求解器确定了二维子空间年代借助于预条件共轭梯度法(下一节将介绍)。求解器定义了年代由张成的线性空间年代1而且年代2,在那里年代1在梯度方向上g,年代2要么是近似值牛顿方向,即解到
或者一个方向负曲率,
这种选择背后的哲学年代是强迫全局收敛(通过最陡峭的下降方向或负曲率方向),并实现快速的局部收敛(通过牛顿阶跃,当它存在时)。
使用信赖域方法的无约束最小化过程现在很容易指定:
给出二维信赖域子问题。
解决方程1确定试验步骤年代.
如果<年代pan class="inlineequation">f(x+年代) <f(x),然后<年代pan class="inlineequation">x=x+年代.
Δ调整。
求解器重复这四个步骤直到收敛,根据标准规则调整信任域维数Δ。特别是,求解器如果不接受试验步骤,则减小信任域大小<年代pan class="inlineequation">f(x+年代)≥f(x).看到[46]而且[49]对于这方面的讨论。
优化工具箱求解器处理的重要情况f有专门的函数:非线性最小二乘,二次函数,线性最小二乘。然而,基本的算法思想与一般情况是相同的。
预条件共轭梯度法
一种常用的解大型对称正定线性方程组的方法<年代pan class="inlineequation">惠普= -g为预条件共轭梯度法(PCG)。这种迭代方法要求能够计算这种形式的矩阵-向量乘积下载188bet金宝搏H·v在哪里v是任意向量。对称正定矩阵米是一个<年代pan class="emphasis">预调节器为H.也就是说,<年代pan class="inlineequation">米=C2,在那里<年代pan class="inlineequation">C1HC1是一个良好条件矩阵或具有聚类特征值的矩阵。
在最小化的情况下,你可以假设黑森矩阵H是对称的。然而,H只有在强最小值附近才保证是正定的。PCG算法在遇到负(或零)曲率方向时退出,即:<年代pan class="inlineequation">d<年代up>T高清≤0.PCG输出方向p要么是负曲率方向,要么是牛顿系的近似解<年代pan class="inlineequation">惠普= -g.无论哪种情况,p有助于定义中讨论的信赖域方法中使用的二维子空间非线性极小化的信赖域方法.
Trust-Region-Dogleg算法
另一种方法是求解一个线性方程组来找到搜索方向。牛顿法指定求解搜索方向d<年代ub>k这样
J(x<年代ub>k )d<年代ub>k= -F(x<年代ub>k)xk+ 1=x<年代ub>k +d<年代ub>k ,
在哪里J(x<年代ub>k)是n——- - - - - -n雅可比矩阵
牛顿的方法可能存在问题。J(x<年代ub>k)可能是奇异的,在这种情况下,牛顿阶跃d<年代ub>k甚至都没有定义。同样,牛顿步长d<年代ub>k计算成本很高。此外,如果起点远离解,牛顿方法可能不收敛。
使用信任域技术(在非线性极小化的信赖域方法)处理案件时J(x<年代ub>k)是奇异的,并且当起始点远离解决方案时提高了鲁棒性。要使用信任区域策略,您需要一个价值函数来决定是否xk+ 1是比好还是比坏x<年代ub>k .一个可能的选择是
但是至少f(d)不一定是的词根F(x).
牛顿步d<年代ub>k是根
米(x<年代ub>k +d) =F(x<年代ub>k) +J(x<年代ub>k)d,
所以它也是最小值米(d),
(2)
米(d)的优点函数的选择比f(d),则信赖域子问题为
(3)
这样<年代pan class="inlineequation">为D·d‖≤Δ.你可以使用狗腿策略有效地解决这个子问题。
有关信任域方法的概述,请参见Conn[4]和Nocedal[31].
Trust-Region-Dogleg实现
信赖域狗腿算法的关键特征是使用Powell狗腿程序来计算步长d,将方程3.有关详细描述,请参阅Powell[34].
算法构造步骤d从柯西阶跃(沿最陡下降方向的阶跃)和高斯-牛顿阶跃的凸组合f(x).柯西步长计算为
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),
在哪里λ区间[0,1]中的最大值是这样的吗<年代pan class="inlineequation">为d‖≤Δ.如果J<年代ub>k
(几乎)是单数,d就是柯西方向。
信任区域-狗腿算法是有效的,因为它只需要每次迭代一次线性求解(对于高斯-牛顿步的计算)。此外,该算法比使用带直线搜索的高斯-牛顿方法更具鲁棒性。
方程求解的定义
给定一组n非线性函数F<年代ub>我(x),n向量的分量是多少x,解方程的目标是找到一个向量x这就使得F<年代ub>我(x) = 0。
fsolve
试图通过最小化各分量的平方和来解方程组。如果平方和为零,则方程组已解。fsolve有三个算法:
信赖域
Trust-region-dogleg
Levenberg-Marquardt
所有算法都是大规模的;看到大规模和中等规模算法.
的fzero函数解一个一维方程。
的mldivide函数解线性方程组。
给定一组 信赖域 Trust-region-dogleg Levenberg-Marquardt 所有算法都是大规模的;看到 的 的fsolve
试图通过最小化各分量的平方和来解方程组。如果平方和为零,则方程组已解。
fzero
mldivide
信赖域算法
优化工具箱™求解器中使用的许多方法都是基于<年代pan class="emphasis">信任区域,优化中的一个简单而强大的概念。
为了理解信任域优化方法,考虑无约束最小化问题,最小化f(x),其中函数接受向量参数并返回标量。假设当前点是x在n-空间,你想通过移动到函数值较低的点来改进。为了做到这一点,算法逼近f用一个更简单的函数问,合理地反映了函数的行为f在一个社区N围绕这一点x.这个区域是信任区域。求解器计算一个试步年代通过最小化(或近似最小化)N.信任域子问题是
求解器将当前点更新为x+年代如果<年代pan class="inlineequation">f(x+年代) <f(x);否则,当前点保持不变,求解器缩小N(信任区域)并重复试步计算。
定义特定信任区域最小化方法的关键问题f(x)是如何选择和计算近似值问(定义在当前点x),如何选择和修改信任区域N,以及如何准确地求解信赖域子问题。
在标准信赖域方法中([48]),即二次逼近问是由泰勒近似的前两项定义的F在x.附近N通常在形状上呈球形或椭球形。在数学上,信任域子问题是典型的表述
(1)
在哪里g的梯度f在目前的情况下x,H为海森矩阵(二阶导数的对称矩阵),D为对角线缩放矩阵,Δ为正标量,‖。‖是2范数。来解决方程1,一个算法(见[48])可以计算的所有特征值H然后应用牛顿过程特征方程
该算法提供了一个精确的解方程1.然而,这需要的时间与的因数分解成正比H.因此,信任域问题需要不同的方法。几种近似和启发式策略,基于方程1,已在文献中提出([42]而且[50]).“优化工具箱”求解器遵循一种近似方法,该方法将信任域子问题限制为二维子空间年代([39]而且[42]).求解器计算出子空间之后年代,工作解决方程1是微不足道的,因为在子空间中,这个问题只是二维的。现在主要的工作转移到子空间的确定上。
求解器确定了二维子空间年代借助于预条件共轭梯度法(下一节将介绍)。求解器定义了年代由张成的线性空间年代1而且年代2,在那里年代1在梯度方向上g,年代2要么是近似值牛顿方向,即解到
或者一个方向负曲率,
这种选择背后的哲学年代是强迫全局收敛(通过最陡峭的下降方向或负曲率方向),并实现快速的局部收敛(通过牛顿阶跃,当它存在时)。
使用信赖域方法的无约束最小化过程现在很容易指定:
给出二维信赖域子问题。
解决方程1确定试验步骤年代.
如果<年代pan class="inlineequation">f(x+年代) <f(x),然后<年代pan class="inlineequation">x=x+年代.
Δ调整。
求解器重复这四个步骤直到收敛,根据标准规则调整信任域维数Δ。特别是,求解器如果不接受试验步骤,则减小信任域大小<年代pan class="inlineequation">f(x+年代)≥f(x).看到[46]而且[49]对于这方面的讨论。
优化工具箱求解器处理的重要情况f有专门的函数:非线性最小二乘,二次函数,线性最小二乘。然而,基本的算法思想与一般情况是相同的。
预条件共轭梯度法
一种常用的解大型对称正定线性方程组的方法<年代pan class="inlineequation">惠普= -g为预条件共轭梯度法(PCG)。这种迭代方法要求能够计算这种形式的矩阵-向量乘积下载188bet金宝搏H·v在哪里v是任意向量。对称正定矩阵米是一个<年代pan class="emphasis">预调节器为H.也就是说,<年代pan class="inlineequation">米=C2,在那里<年代pan class="inlineequation">C1HC1是一个良好条件矩阵或具有聚类特征值的矩阵。
在最小化的情况下,你可以假设黑森矩阵H是对称的。然而,H只有在强最小值附近才保证是正定的。PCG算法在遇到负(或零)曲率方向时退出,即:<年代pan class="inlineequation">d<年代up>T高清≤0.PCG输出方向p要么是负曲率方向,要么是牛顿系的近似解<年代pan class="inlineequation">惠普= -g.无论哪种情况,p有助于定义中讨论的信赖域方法中使用的二维子空间非线性极小化的信赖域方法.
优化工具箱™求解器中使用的许多方法都是基于<年代pan class="emphasis">信任区域, 为了理解信任域优化方法,考虑无约束最小化问题,最小化
求解器将当前点更新为 定义特定信任区域最小化方法的关键问题 在标准信赖域方法中( 在哪里
该算法提供了一个精确的解 求解器确定了二维子空间
或者一个方向
这种选择背后的哲学 使用信赖域方法的无约束最小化过程现在很容易指定: 给出二维信赖域子问题。 解决 如果<年代pan class="inlineequation">f Δ调整。 求解器重复这四个步骤直到收敛,根据标准规则调整信任域维数Δ。特别是,求解器如果不接受试验步骤,则减小信任域大小<年代pan class="inlineequation">f 优化工具箱求解器处理的重要情况 一种常用的解大型对称正定线性方程组的方法<年代pan class="inlineequation">惠普 在最小化的情况下,你可以假设黑森矩阵
(1)
预条件共轭梯度法
Trust-Region-Dogleg算法
另一种方法是求解一个线性方程组来找到搜索方向。牛顿法指定求解搜索方向d<年代ub>k这样
J(x<年代ub>k )d<年代ub>k= -F(x<年代ub>k)xk+ 1=x<年代ub>k +d<年代ub>k ,
在哪里J(x<年代ub>k)是n——- - - - - -n雅可比矩阵
牛顿的方法可能存在问题。J(x<年代ub>k)可能是奇异的,在这种情况下,牛顿阶跃d<年代ub>k甚至都没有定义。同样,牛顿步长d<年代ub>k计算成本很高。此外,如果起点远离解,牛顿方法可能不收敛。
使用信任域技术(在非线性极小化的信赖域方法)处理案件时J(x<年代ub>k)是奇异的,并且当起始点远离解决方案时提高了鲁棒性。要使用信任区域策略,您需要一个价值函数来决定是否xk+ 1是比好还是比坏x<年代ub>k .一个可能的选择是
但是至少f(d)不一定是的词根F(x).
牛顿步d<年代ub>k是根
米(x<年代ub>k +d) =F(x<年代ub>k) +J(x<年代ub>k)d,
所以它也是最小值米(d),
(2)
米(d)的优点函数的选择比f(d),则信赖域子问题为
(3)
这样<年代pan class="inlineequation">为D·d‖≤Δ.你可以使用狗腿策略有效地解决这个子问题。
有关信任域方法的概述,请参见Conn[4]和Nocedal[31].
Trust-Region-Dogleg实现
信赖域狗腿算法的关键特征是使用Powell狗腿程序来计算步长d,将方程3.有关详细描述,请参阅Powell[34].
算法构造步骤d从柯西阶跃(沿最陡下降方向的阶跃)和高斯-牛顿阶跃的凸组合f(x).柯西步长计算为
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),
在哪里λ区间[0,1]中的最大值是这样的吗<年代pan class="inlineequation">为d‖≤Δ.如果J<年代ub>k
(几乎)是单数,d就是柯西方向。
信任区域-狗腿算法是有效的,因为它只需要每次迭代一次线性求解(对于高斯-牛顿步的计算)。此外,该算法比使用带直线搜索的高斯-牛顿方法更具鲁棒性。
另一种方法是求解一个线性方程组来找到搜索方向。牛顿法指定求解搜索方向 J 在哪里
牛顿的方法可能存在问题。 使用信任域技术(在
但是至少 牛顿步 米 所以它也是最小值 米 这样<年代pan class="inlineequation">为 有关信任域方法的概述,请参见Conn 信赖域狗腿算法的关键特征是使用Powell狗腿程序来计算步长 算法构造步骤 d<年代ub>C 在哪里 通过求解来计算高斯-牛顿阶跃 J 使用MATLAB<年代up>® 算法选择步长 d 在哪里 信任区域-狗腿算法是有效的,因为它只需要每次迭代一次线性求解(对于高斯-牛顿步的计算)。此外,该算法比使用带直线搜索的高斯-牛顿方法更具鲁棒性。
(2)
(3)
Trust-Region-Dogleg实现
mldivide
(矩阵左除法)算子。
Levenberg-Marquardt方法
Levenberg-Marquardt算法([25],[27])使用的搜索方向是线性方程组的解
(4)
或者,可以选择,方程的
(5)
其中标量λ<年代ub>k的大小和方向d<年代ub>k.设置fsolve选项ScaleProblem来“没有”使用方程4,或设置为的雅可比矩阵使用方程5.
当λ<年代ub>k方向是零吗d<年代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尽管二阶项限制了高斯-牛顿方法的效率,但仍能确保下降。因此,Levenberg-Marquardt算法使用的搜索方向是高斯-牛顿方向和最陡下降方向之间的交叉。详情请参见Levenberg-Marquardt方法在最小二乘文档中。
Levenberg-Marquardt算法( 或者,可以选择,方程的 其中标量 当
(4)
(5)
fzero算法
fzero尝试查找标量函数的根f一个标量变量x.
fzero寻找一个围绕初始点的区间,使得f(x)变化符号。如果你指定一个初始区间而不是初始点,fzero检查以确保f(x)在区间的端点有不同的符号。初始区间必须是有限的;不能包含±正.
fzero组合使用区间对分、线性插值和逆二次插值来定位的根f(x).看到fzero获取更多信息。
fzero
fzero
fzero
fzero
\算法
的\算法在MATLAB算术运算符一节中描述mldivide.
的mldivide
另请参阅
fsolve
|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">fzero
相关的话题
fsolve
|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">fzero