方程求解算法

您所在的位置:网站首页 matlab中fzero函数用法 方程求解算法

方程求解算法

2024-06-13 14:02| 来源: 网络整理| 查看: 265

方程求解算法方程求解定义

给定一组(n 个)非线性函数 Fi(x),其中 n 是向量 x 中的分量数,方程求解的目标是找到使所有 Fi(x) = 0 的向量 x。

fsolve 尝试通过最小化分量的平方和来求解方程组。如果平方和为零,则方程组得到求解。fsolve 有三种算法:

信赖域

信赖域 dogleg

莱文贝格-马夸特

所有算法均为大规模的;请参阅大规模算法与中等规模算法。

fzero 函数求解单个一维方程。

mldivide 函数对一个线性方程组求解。

信赖域算法

Optimization Toolbox™ 求解器中使用的许多方法都基于信赖域,这是一个简单而功能强大的优化概念。

要理解信赖域优化方法,请考虑无约束最小化问题,最小化 f(x),该函数接受向量参量并返回标量。假设当前点是 n 维空间中的 x,您要通过移至函数值较低的点来寻求改进。为此,该算法使用较简单的函数 q 来逼近 f,该函数需能充分反映函数 f 在点 x 的邻域 N 中的行为。此邻域是信赖域。求解器通过最小化(或近似最小化)N 来计算试探步 s。信赖域子问题是

mins{q(s), s∈N}.

如果 f(x + s) < f(x),求解器将当前点更新为 x + s;否则,当前点保持不变,求解器收缩 N(信赖域)并再次计算试探步。

在定义特定信赖域方法以最小化 f(x) 的过程中,关键问题是如何选择和计算逼近 q(在当前点 x 上定义)、如何选择和修改信赖域 N,以及如何准确求解信赖域子问题。

在标准信赖域方法 ([48]) 中,二次逼近 q 由 F 在 x 处的泰勒逼近的前两项定义。邻域 N 通常是球形或椭圆形。以数学语言表述,信赖域子问题通常写作

min{12sTHs+sTg  such that  ‖Ds‖≤Δ},(1)

其中,g 是 f 在当前点 x 处的梯度,H 是黑塞矩阵(二阶导数的对称矩阵),D 是对角缩放矩阵,Δ 是正标量,‖ . ‖ 是 2-范数。为了求解公式 1,一种算法(请参阅[48])会计算 H 的所有特征值,然后将牛顿法应用于以下久期方程

1Δ−1‖s‖=0.

这种算法提供 公式 1 的精确解。但是,这需要耗费与 H 的几个分解成比例的时间。因此,处理信赖域问题需要另一种方法。文献([42] 和 [50])提出了几种基于公式 1 的逼近和启发式策略。Optimization Toolbox 求解器采用一种逼近方法,将信赖域子问题限制在二维子空间 S 内([39] 和 [42])。在求解器计算出子空间 S 后,求解公式 1 的工作量是微不足道的,因为在子空间中,问题只是二维的。现在的主要工作转移到子空间的确定上。

求解器借助预条件共轭梯度法(将在下一节中说明)确定二维子空间 S。求解器将 S 定义为由 s1 和 s2 确定的线性空间,其中 s1 是梯度 g 的方向,s2 是近似牛顿方向,即下式的解

H⋅s2=−g,

或是负曲率的方向,

s2T⋅H⋅s2



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3