热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于牛顿迭代法的初值以及收敛性的理解

文章目录定理描述初值对于牛顿迭代法的影响Newton下山法牛顿迭代法的优缺点定理描述规规矩矩的定理就不再重复了,举个栗子吧f(x)0f(x)0f(x)0单变量方程,求根改写为等价形

文章目录

    • 定理描述
    • 初值对于牛顿迭代法的影响
    • Newton下山法
    • 牛顿迭代法的优缺点

定理描述

规规矩矩的定理就不再重复了,举个栗子吧
f ( x ) = 0 f(x) = 0 f(x)=0
单变量方程,求根
改写为等价形式
ϕ ( x ) = x \phi(x) = x ϕ(x)=x
在大前提 ϕ ∈ C [ a , b ] \phi\in C[a,b] ϕC[a,b]的条件下(即函数在区间[a,b]上连续)如果
∣ ϕ ( x ) − ϕ ( y ) ∣ ≤ L ∣ x − y ∣ |\phi(x) – \phi(y)|\leq L|x – y| ϕ(x)ϕ(y)Lxy
其中 ∀ x , y ∈ [ a , b ] \forall x,y \in [a,b] x,y[a,b] L ∈ ( 0 , 1 ) L\in(0,1) L(0,1), a ≤ ϕ ( x ) ≤ b a\leq \phi(x) \leq b aϕ(x)b
表达的意思就是
如果函数 ϕ \phi ϕ的割线斜率有最大值且最大值不超过1,则迭代序列 { x k } \{x_k\} { xk}会收敛于一个定点 x ∗ x^* x,收敛区间是[a,b]

初值对于牛顿迭代法的影响

同样举个栗子,求下列方程的根
x 3 − x − 1 = 0 x^3 – x -1=0 x3x1=0
第一次选初值 x 0 = 0.6 x_0 = 0.6 x0=0.6

x = zeros(1,10);
x(1) = 0.6;
k = 1;
while abs(x(k)^3-x(k)-1) > eps
x(k+1) = x(k)-(x(k)^3-x(k)-1)/(3*x(k)^2-1);
k = k + 1;
end
format long;
disp(x(k));

迭代情况如图

《关于牛顿迭代法的初值以及收敛性的理解》
共迭代九次
not bad
可以更快一点???
下面寻找更快的初值条件
代码如下

function X = sroot(x,epsilon)
% 初值条件一
%y(k)*y(k-1)<= 0
% 初值条件二
%拐点附近,且拐点的函数值在允许的误差范围内。
%切记所允许的误差的大小很关键。如果误差太小,
%则迭代可能一直执行下去一般选$\10^-M$大100倍,其中M是计算机浮点数的小数位数。
Y = f(x);
yrange = max(Y) - min(Y);
epsilon2 = yrange*epsilon;
n = length(x);
Y(n+1) = Y(n);
x(n+1) = x(n);
m = 0;
for k = 2:n
if Y(k)*Y(k-1) <0
m = m + 1;
X(m) = 0.5*(x(k)+x(k-1));
end
if ((Y(k)-Y(k-1))*(Y(k+1)-Y(k))<= 0)...
&&(abs(Y(k)) m = m + 1;
X(m) = x(k);
end
end

执行情况

x = -2:0.001:2;
sroot(x,0.00001)

ans =

1.324500000000000
说明能找得到的最佳初值点 x 0 x_0 x0= 1.324500000000000

再用牛顿迭代法执行一次

x = zeros(1,10);
x(1) = 1.3245;
k = 1;
while abs(x(k)^3-x(k)-1) > eps
x(k+1) = x(k)-(x(k)^3-x(k)-1)/(3*x(k)^2-1);
k = k + 1;
end
format long;
disp(x(k));

k

k =

4

x

x =

1 至 7 列

1.324500000000000 1.324718001527481 1.324717957244748 1.324717957244746 0 0 0

8 至 10 列

0 0 0

这次迭代次数缩短一半

Newton下山法

简单说一下吧
在牛顿迭代公式的基础上加一个迭代因子 λ k \lambda_k λk,即
x k + 1 = x k − f ( x k ) λ k f ( x k ) x_{k+1}=x_k &#8211; \frac{f(x_k)}{\lambda_k f(x_k)} xk+1=xkλkf(xk)f(xk)
目的
通过调整切线斜率将本不属于收敛区间[a,b]的 x k + 1 x_{k+1} xk+1划入之中

牛顿迭代法的优缺点

缺点

  • 对函数的条件太苛刻,函数 f ( x ) f(x) f(x)必须光滑
  • 导数的计算未必方便
  • 初始值必须尽量靠近最终解

优点
一旦满足条件,牛顿迭代法的局部收敛还是很有吸引力的。而牛顿迭代法是按平方收敛的,粗略的说就是每迭代一次误差平方一次,所以算 2 \sqrt{2} 2 就很方便。

另外离散Newton法这里就不说,原理类似。


推荐阅读
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 计算机网络复习:第五章 网络层控制平面
    本文探讨了网络层的控制平面,包括转发和路由选择的基本原理。转发在数据平面上实现,通过配置路由器中的转发表完成;而路由选择则在控制平面上进行,涉及路由器中路由表的配置与更新。此外,文章还介绍了ICMP协议、两种控制平面的实现方法、路由选择算法及其分类等内容。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • 在给定的数组中,除了一个数字外,其他所有数字都是相同的。任务是找到这个唯一的不同数字。例如,findUniq([1, 1, 1, 2, 1, 1]) 返回 2,findUniq([0, 0, 0.55, 0, 0]) 返回 0.55。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 本文总结了在使用Ionic 5进行Android平台APK打包时遇到的问题,特别是针对QRScanner插件的改造。通过详细分析和提供具体的解决方法,帮助开发者顺利打包并优化应用性能。 ... [详细]
author-avatar
一颗顽石
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有