方程求根方法
0.不动点迭代法
一般我们求解的方程是
f(x)=0
可以等价的改写为
x=ϕ(x)
若x∗满足f(x∗)=0,则亦满足x∗=ϕ(x∗),则称x∗是函数ϕ(x)的一个不动点
求f(x)的零点等价于求ϕ(x)的不动点,选择一个初始近似值x0,代入右端,即
x1=ϕ(x0)
x2=ϕ(x1)
...
xk+1=ϕ(xk)
如此迭代就是不动点迭代法
注意
将f(x)=0改写成x=ϕ(x)的方式很多,不是每个ϕ(x)都能收敛
比如
f(x)=x3−x−1=0
改写为
x=x3−1
就无法迭代
x=3√x+1
就可以收敛
1.收敛速度
设有序列{xk}收敛到x∗,若极限
limk→∞||xk+1−x∗||||xk−x∗||=β
存在,则当0<β<1时,称{xk}线性收敛
当β=0时,称{xk}超线性收敛
当β=1是,称{xk}为此线性收敛
一般次线性收敛的收敛速度太慢,不予考虑
若存在某个p≥1,有
limk→∞||xk+1−x∗||||xk−x∗||p=β<+∞
则称{xk}为p阶收敛,当p>1,p阶收敛必为超线性收敛,但反之不一定成立
p=2称为二阶收敛
2.二次终止性
设G是n阶正定对称矩阵,称函数
f(x)=12xTGx+rTx+δ
为正定二次函数
若某个算法对于任意的正定二次函数,从任意的起始点出发,都能经有限步迭代到其极小点,则称该算法具有二次终止性
为什么用算法的二次终止性来做判定算法优劣的标准呢?
- 1.正定二次函数具有某些好的性质,因此一个好的算法应能够在有限步内达到其最小点
- 2.队友一个一般目标函数,若在其极小点处的Hesse矩阵∇2f(x∗)正定,则泰勒展开
f(x)=f(x∗)+∇f(x∗)T(x−x∗)+12(x−x∗)T∇2f(x∗)(x−x∗)+o(||x−x∗||2)
即目标函数f(x)在极小点附件与一个正定二次函数相近似,因此可以猜想:对于正定二次函数好的算法,对于一般目标函数也应具有较好的性质
3.一些算法的收敛性
- 若一维搜索是精确的,则共轭梯度法具有二次终止性
- 牛顿法是二阶收敛的,收敛速度快
定理
对于迭代过程xk+1=ϕ(xk)及正整数p,如果ϕ(p)(x)在所求根x∗的邻近连续,并且有
ϕ′(x∗)=ϕ′′(x∗)=...=ϕ(p−1)(x∗)
ϕ(p)(x∗)≠0
则该迭代过程在点x∗邻近是p阶收敛的
回到牛顿法
f(x)∼f(xk)+f′(xk)(x−xk)
于是方程f(x)=0可近似地表示为
f(xk)+f′(xk)(x−xk)=0
迭代公式有
xk+1=xk−f(x)f′(xk),k=0,1,...
ϕ(x)=x−f(x)f′(x)
ϕ′(x)=f(x)f′′(x)[f′(x)]2
ϕ′′(x)=f′′(x)f′(x)
因为有f(x∗)=0,f′(x∗)≠0,所有有ϕ′(x∗)=0,ϕ′′(x∗)≠0,所以根据上面的定理,牛顿法是二阶收敛的
- 根据上面的定理有,迭代过程的收敛速度依赖于迭代函数ϕ(x)的选取,如果当x∈[a,b]时,ϕ′(x)≠0,则该迭代过程只可能是线性收敛
- 若不动点迭代法
xk+1=ϕ(xk),k=0,1,...
是p阶收敛,那么斯特芬森迭代法是p+1阶收敛
{yk=ϕ(xk),z=ϕ(yk),xk+1=xk−(yk−xk)2zk−2yk+xk,k=0,1,...
- 弦截法按阶p=1+√52∼1.618收敛,p是方程λ2−λ−1=0的正根
- 抛物线法也是超线性收敛的,收敛的阶=1.840,是方程λ3−λ2−λ−1=0的根
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~