当前位置: 首页 > news >正文

牛顿迭代法求解x 的平方根

牛顿迭代法是一种可以用来快速求解函数零点的方法。

为了叙述方便,我们用 C C C表示待求出平方根的那个整数。显然, C C C的平方根就是函数

f ( x ) = x c − C f(x)=x^c-C f(x)=xcC
的零点。

牛顿迭代法的本质是借助泰勒级数,从初始值开始快速向零点逼近。我们任取一个 x 0 x_0 x0作为初始值,在每一步的迭代中,我们找到函数图像上的点 ( x i , f ( x i ) ) (x_i,f(x_i)) (xi,f(xi)) ,过该点作一条斜率为该点导数 f ′ ( x i ) f'(x_i) f(xi)的直线,与横轴的交点记为 x i + 1 x_{i+1} xi+1 x i + 1 x_{i+1} xi+1 相较于 x i x_{i} xi 而言距离零点更近。在经过多次迭代后,我们就可以得到一个距离零点非常接近的交点。下图给出了从 x 0 x_{0} x0 开始迭代两次,得到 x 1 x_{1} x1 x 1 x_{1} x1的过程。

在这里插入图片描述

#include <iostream>
#include <math.h>
int main(int argc, char *argv[]) {const int C = 5;const double y_eps = 1e-10;const double x_eps = 1e-8;double x_n = double(C);             // last iteration value x(n)double x_n_1 = (x_n + C / x_n) / 2; // iteration value x(n+1)int iter_num = 1e5;                 // a protect valuewhile (std::abs(x_n * x_n - C) > y_eps && (std::abs(x_n_1 - x_n) > x_eps) &&(iter_num--)) {x_n = x_n_1;x_n_1 = (x_n + C / x_n) / 2;std::cout<<C<<"的平方根为:"<<x_n_1<<std::endl;}std::cout<<C<<"的平方根最终迭代计算结果为:"<<x_n_1<<std::endl;std::cout<<C<<"的平方根库函数计算结果为:"<<std::sqrt(C)<<std::endl;return 0;
}

计算log:

5的平方根为:2.33333
5的平方根为:2.2381
5的平方根为:2.23607
5的平方根为:2.23607
5的平方根为:2.23607
5的平方根最终迭代计算结果为:2.23607
5的平方根库函数计算结果为:2.23607

参考
youtube
leetcode

http://www.lryc.cn/news/448823.html

相关文章:

  • 端口隔离配置的实验
  • 洛谷 P10456 The Pilots Brothers‘ refrigerator
  • windows+vscode+arm-gcc+openocd+daplink开发arm单片机程序
  • Mysql梳理10——使用SQL99实现7中JOIN操作
  • 24.9.27学习笔记
  • C++第3课——保留小数点、比较运算符、逻辑运算符、布尔类型以及if-else分支语句(含视频讲解)
  • 韩媒专访CertiK首席商务官:持续关注韩国市场,致力于解决Web3安全及合规问题
  • 计算机毕业设计之:宠物服务APP的设计与实现(源码+文档+讲解)
  • 小柴冲刺软考中级嵌入式系统设计师系列二、嵌入式系统硬件基础知识(3)嵌入式系统的存储体系
  • Unity android 接USBCamera
  • 演示:基于WPF的DrawingVisual开发的频谱图和律动图
  • 【数据结构初阶】排序算法(中)快速排序专题
  • Redis缓存双写一致性笔记(上)
  • PCB基础
  • PostgreSQL 17:新特性与性能优化深度解析
  • [Linux#58][HTTP] 自己构建服务器 | 实现网页分离 | 设计思路
  • 7.MySQL内置函数
  • 如何快速自定义一个Spring Boot Starter!!
  • 【音视频】ffmpeg其他常用过滤器filter实现(6-4)
  • 云栖3天,云原生+ AI 多场联动,新产品、新体验、新探索
  • jackson对于对象序列化的时候默认空值和手动传入的null的不同处理
  • L8打卡学习笔记
  • VBA解除Excel工作表保护
  • bash: unzip: 未找到命令,sudo: nano:找不到命令
  • tauri开发配置文件和文件夹访问路径问题
  • 【web安全】——信息收集
  • 赵长鹏今日获释,下一步会做什么?币安透露2024年加密货币牛市的投资策略!
  • SpringMVC之ContextHolder
  • 什么是SQL注入?
  • 混合密码系统——用对称密钥提高速度,用公钥密码保护会话密钥