牛顿迭代法 - 求解非线性方程根的近似解

news/2024/10/13 0:24:03

牛顿迭代法 - 求解非线性方程根的近似解

在算法中,牛顿迭代法主要用于求解非线性方程或优化问题。它是一种迭代算法,通过不断逼近来找到函数的根或者最小化/最大化某个目标函数。

这里呢,我们重点讲一下如何求解线性方程 \(F(X) = 0\) 近似根的大致步骤。

  1. 选择一个初始猜测值\(x_0\):
    • 这个初始猜测应该尽可能接近实际的根,一个好的初始猜测可以加速收敛过程,并且有助于避免算法陷入局部极小值或不收敛的情况。
  2. 定义迭代公式:
    • 牛顿迭代法的迭代公式是:\(X_(n+1) = X_n - \frac{F(X_n)}{F^`(X_n)}\)
    • 其中 \(F^`(X_n)\) 是函数 \(F(X)\) 在点 \(X_n\) 处的一阶导数。
  3. 执行迭代过程:
    • 使用上面的迭代公式。从$ X_0$ 开始计算 \(X_1, X_2, X_3, ...\) ,直到满足停止条件。
  4. 设置停止条件:
    • 停止条件通常有两种形式:
      • 当连续两次迭代的结果足够接近时,即 \(∣X_n+1 - X_n∣ < ϵ\) ,其中 ϵ 是预设的小正数。
      • 或者当函数值足够接近于零时,即 \(|F(X_(n+1))| < ϵ\)
    • 有时还会设置最大迭代次数以防止无限循环。
  5. 检查结果的有效性:
    • 确认最终得到的 X 值确实是 \(F(X)=0\) 的根。如果函数在该点附近的行为复杂(如存在多个根或导数为零),可能需要进一步分析。

这里以牛客的一道题来举个例子:

计算一个浮点数的立方根而不使用库函数

我们就可以使用牛顿迭代法来逼近结果。

对于求解X的立方根,我们需要找到满足 \(Y^3 = X\)\(Y\) , 这里可以通过解方程 \(F(Y) = Y^3 - X = 0\) 来实现,牛顿迭代的公式为:

\(Y_(n+1) = Y_n - \frac{F(Y_n)}{F^`(Y_n)}\)

其中 \(F(Y) = Y^3 - X\) , 导数 \(F^`(Y) = 3Y^2\)

带入后得到:

\(Y_(n+1) = Y_n - \frac{Y^3_n - X}{3Y_n^2}\)

下面是Java代码的实现:

public class Main {public static void main(String[] args) {double x = 27.0;    // 求Math.sqrt(x)double tolerance = 1e-10;   // 允许的误差System.out.printf("%f\n",calculateCubeRoot(x, tolerance));}private static double calculateCubeRoot(double x, double tolerance) {if (x == 0) return 0;   // 特殊值处理double y = x;   // 猜测初始值double diff;    // 计算出来的误差do {double nextY = y - (y * y * y - x)/(3 * y*y);   // 迭代公式,计算出新的迭代值diff = Math.abs(nextY - y); // 计算出新的迭代值与旧的迭代值之间的误差y = nextY;  // 更新迭代后的值} while (diff > tolerance);return y;   // 满足误差后跳出循环直接返回最终迭代后的结果}
}

运行结果如下:

3.000000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/70883.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

VLAN-IP实验

需求:1.PC1和PC3所在接口为access接口;属于VLAN 2 PC2-4-5-6处于同一网段:其中PC2可以访间Pc4-5-6 PC4可以访间Pc5不能访间PC6 Pc5不能访问Pc6 3.PC1-Pc3---192.168.0.0 24与PC2-4-5-6不在一个网段--192.168.1.0 24 4.所有Pc均使用DHcp禁取IP地址,且PC1可以正常访间Pc2-4-5-6 …

mobaxterm隔一段时间就断开连接

【解决方法】点击setting,选中SSH Keepalive即可

【安全服务】2024年我国新一代网络安全服务代表性厂商:新华三

新华三是新华三技术有限公司的全资子公司,成立于2017年3月,为国内信息安全领域的领导企业,致力于为国家信息安全提供安全可信的领先产品与解决方案、专业的网络安全服务和优质的信息安全人才培养体系。 新华三拥有安全服务团队人员500+人,网络安全服务类型包括安全增值服务…

【安全服务】2024年我国新一代网络安全服务代表性厂商:中通服

中通服成立于2006年,是一家网络安全综合服务提供商,提供全生命周期的网络安全一体化综合服务,是国家重大活动安全保障和网信安全工程建设国家队。目前拥有安全服务团队人员1600+人,网络安全服务类型包括评估、咨询、设计、集成实施、涉密施工、监理、运维、应急和培训等。主…

《使用Gin框架构建分布式应用》阅读笔记:p1-p19

《使用Gin框架构建分布式应用》学习第1天,p1-p19总结,总计19页。 一、技术总结 1.go get & go install 执行go get 或者 go install 命令后package会被安装到哪里?参考:https://go.dev/ref/mod#go-install VSCode结合WSL使用后,路径把人绕晕了。 二、英语总结 1.evang…

华为交换机配置-STP

1.STP上述环境中,只对交换机3、4连接pc的端口设置为access模式,pc1和pc2可以通信,但是上图所示的网络中存在环路,所以需要开启STP 1.命令 交换机1 <Huawei>sy Enter system view, return user view with Ctrl+Z. [Huawei]sysname SW1 //开启全局STP [sw1]stp enable …

2024-2025-1 20241305 《计算机基础与程序设计》第三周学习总结

作业信息这个作业属于哪个课程 如[2024-2025-1-计算机基础与程序设计(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP))这个作业要求在哪里 2024-2025-1计算机基础与程序设计第三周作业这个作业的目标 1数字分类与计数法 2位置指数法 3进制转换 4模拟数据与数字数据 …

datawhale-大模型攻防比赛实践-第一次行动

最近刚好是在写智能信息安全的教程,最后一章准备讲内容安全,里面有一节探讨大模型安全的内容,刚好可以拿比赛的内容当案例。 首先,可以通过modelscope平台获得GPU使用权限。然后你就可以跑baseline了 我这里试着跑了一下,如果是GPU版本就比较流畅,CPU会被卡死。但是呢,一…