热门标签 | 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法这里就不说,原理类似。


推荐阅读
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了[从头学数学]中第101节关于比例的相关问题的研究和修炼过程。主要内容包括[机器小伟]和[工程师阿伟]一起研究比例的相关问题,并给出了一个求比例的函数scale的实现。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
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社区 版权所有