iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >牛顿迭代法
  • 424
分享到

牛顿迭代法

算法c语言python 2023-09-02 15:09:08 424人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

  目录 一、牛顿迭代公式 二、利用牛顿迭代公式求平方根 C 语言实现 Python 语言实现  三、利用牛顿迭代公式求立方根 C 语言实现 Python 语言实现   一、牛顿迭代公式 多数方程不存在求根公式,因此求精确根非常困难

 

目录

一、牛顿迭代公式

二、利用牛顿迭代公式求平方根

C 语言实现

Python 语言实现 

三、利用牛顿迭代公式求立方根

C 语言实现

Python 语言实现


 


一、牛顿迭代公式

多数方程不存在求根公式,因此求精确根非常困难,甚至不可解,从而寻求方程的近似根就显得尤为重要。牛顿就提出了一种用迭代求方程近似根的方法,思路是不断取切线,用线性方程的根逼近非线性方程 f(x) = 0 的根

具体过程

设 x* 是 f(x) = 0 的根,选取 x0 作为 x* 的初始近似值,过点 (x0,f(x0)) 作曲线 y = f(x) 的切线 L,L:y = f(x0) + f'(x0)(x - x0),则 L 与 x 轴交点的横坐标为:gif.latex?x_1%20%3D%20x_0%20-%20%5Cfrac%7Bf%28x_0%29%7D%7Bf%27%28x_0%29%7D,称 x1 为 x* 的一次近似值。过点 (x1, f(x1)) 作曲线 y = f(x) 的切线,切线与 x 轴的交点横坐标为:gif.latex?x_2%20%3D%20x_1%20-%20%5Cfrac%7Bf%28x_1%29%7D%7Bf%27%28x_1%29%7D,称 x2 为 x* 的二次近似值。重复上述过程,得 x* 的近似值序列,其中:gif.latex?x_%7Bn+1%7D%20%3D%20x_n%20-%20%5Cfrac%7Bf%28x_n%29%7D%7Bf%27%28x_n%29%7D 称为 x* 的 n + 1 次近似值,上式称为牛顿迭代公式

概述图

fca93d38ec264b41a788103e8cc48660.png

 

 

二、利用牛顿迭代公式求平方根

求数 a 的平方根,即求二次方程 f(x) = x^2 - a = 0(a >= 0)的根,f'(x) = 2x,利用牛顿迭代公式,则有: gif.latex?x_%7Bn+1%7D%20%3D%20x_n%20-%20%5Cfrac%7Bx_n%5E2%20-%20a%7D%7B2x_n%7D%20%3D%20%5Cfrac%7B1%7D%7B2%7D%28x_n%20+%20%5Cfrac%7Ba%7D%7Bx_n%7D%29

C 语言实现

#include #include double square_root(double a){if (a < 0){return -1;}double t = a;  // t 为近似值while (fabs(t * t - a) > 1e-10){t = (t + a / t) / 2.0;}return t;}int main(){double a = 0.0;scanf("%lf", &a);double ret = square_root(a);printf("%lf\n", ret);return 0;}

fabs(t * t - a) > 1e-10:是将方程的近似值 t 代入方程 f(x) = x^2 - a 中,判断绝对误差是否小于等于 1e - 10。  

python 语言实现 

def square_root(a):    if a < 0:        return -1    t = a    while abs(t * t - a) > 1e-10:        t = (t + a / t) / 2.0    return tprint(square_root(3))  # 1.7320508075688772print(square_root(5))  # 2.236067977499978print(square_root(10))  # 3.162277660168379print(square_root(-10))  # -1

 

 

三、利用牛顿迭代公式求立方根

同理,求数 a 的立方根,即求三次方程 f(x) = x^3 - a = 0 的根,f'(x) = 3x2,利用牛顿迭代公式,则有: gif.latex?x_%7Bn+1%7D%20%3D%20x_%7Bn%7D%20-%20%5Cfrac%7Bx_n%5E3-a%7D%7B3x_n%5E2%7D%20%3D%20%5Cfrac%7B1%7D%7B3%7D%282x_n%20+%20%5Cfrac%7Ba%7D%7Bx_n%5E2%7D%29

C 语言实现

#include #include double cube_root(double a){double t = a;while (fabs(t * t * t - a) > 1e-10){t = (2 * t + a / (t * t)) / 3.0;}return t;}int main(){double a = 0.0;scanf("%lf", &a);double ret = cube_root(a);printf("%lf\n", ret);return 0;}

Python 语言实现

def cube_root(a):    t = a    while abs(t * t * t - a) > 1e-10:        t = (2 * t + a / (t * t)) / 3.0    return tprint(cube_root(3))  # 1.4422495703074112print(cube_root(5))  # 1.7099759466766973print(cube_root(10))  # 2.154434690031893print(cube_root(-10))  # -2.154434690031893

 

 

 

 

 

来源地址:https://blog.csdn.net/melonyzzZ/article/details/127655972

--结束END--

本文标题: 牛顿迭代法

本文链接: https://www.lsjlt.com/news/391021.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 牛顿迭代法
      目录 一、牛顿迭代公式 二、利用牛顿迭代公式求平方根 C 语言实现 Python 语言实现  三、利用牛顿迭代公式求立方根 C 语言实现 Python 语言实现   一、牛顿迭代公式 多数方程不存在求根公式,因此求精确根非常困难...
    99+
    2023-09-02
    算法 c语言 python
  • 图文详解牛顿迭代算法原理及Python实现
    目录1.引例2.牛顿迭代算法求根3.牛顿迭代优化4 代码实战:Logistic回归1.引例 给定如图所示的某个函数,如何计算函数零点x0 在数学上我们如何处理这个问题? 最简单的办...
    99+
    2024-04-02
  • javascript基于牛顿迭代法怎么实现求浮点数的平方根
    这篇文章主要介绍javascript基于牛顿迭代法怎么实现求浮点数的平方根,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先是牛顿迭代法原理:比如我们要求a的平方根,首先随便猜一个近...
    99+
    2024-04-02
  • 你知道怎么改进Python 二分法和牛顿迭代法求算术平方根吗
    目录二分法二分法原理牛顿迭代法牛顿迭代法原理总结二分法 def sqrtb(n): if n<0: raise ValueError('n>=0') ...
    99+
    2024-04-02
  • 详解Python牛顿插值法
    目录一、牛顿多项式二、例题三、ACcode:一、牛顿多项式 拉格朗日多项式的公式不具备递推性,每个多项式需要单独构造。但很多时候我们需要从若干个逼近多项式选择一个。这个时候我们就需要...
    99+
    2024-04-02
  • Flutter实现牛顿摆动画效果的示例代码
    目录前言实现步骤1、绘制静态效果2、加入动画两个关键点完整源码总结前言 牛顿摆大家应该都不陌生,也叫碰碰球、永动球(理论情况下),那么今天我们用Flutter实现这么一个理论中的永动...
    99+
    2024-04-02
  • python迭代、可迭代对象、迭代器及生
    迭代 通常意义上的迭代是指:重复执行一系列运算,从前面的量依次推出后面的量的过程,每一次迭代的结果,会作为下一次迭代的初始值。 在c、c++、java等编程语言中的for循环语句,就是一个迭代过程,例如: for(int i=0;i&l...
    99+
    2023-01-30
    迭代 器及 对象
  • 迭代
    如果给定一个list或tuple,可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration) 在Python中,迭代是通过for ... in来完成的 Python的for循环抽象程度要高于C的for循...
    99+
    2023-01-31
    迭代
  • JavaScript数组迭代的方法
    今天小编给大家分享一下JavaScript数组迭代的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2024-04-02
  • JavaScript 数组迭代的方法
    这篇文章主要介绍“JavaScript 数组迭代的方法”,在日常操作中,相信很多人在JavaScript 数组迭代的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java...
    99+
    2024-04-02
  • 迭代器
    目录 可迭代对象(掌握) 总结 迭代器对象(掌握) 总结 for循环原理(掌...
    99+
    2023-01-31
    迭代
  • C#迭代器方法介绍
    目录1.迭代器方法2.手动实现迭代器方法1.迭代器方法 可以使用foreach循环语句进行的迭代的方法,称为可迭代方法,或者迭代器方法。 迭代器用法法介绍。   迭代器用于依次返回每...
    99+
    2024-04-02
  • Python迭代和解析(2):迭代初探
    解析、迭代和生成系列文章:https://www.cnblogs.com/f-ck-need-u/p/9832640.html 在Python中支持两种循环格式:while和for。这两种循环的类型不同: while是通过条件判断的真...
    99+
    2023-01-30
    迭代 Python
  • Python中迭代和迭代器是什么
    本篇文章给大家分享的是有关Python中迭代和迭代器是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。可迭代一个对象,物理或者虚拟存储的序列。list,tuple,strin...
    99+
    2023-06-17
  • Javascript的迭代器和迭代接口详解
    目录1,什么是迭代器2,自定义迭代接口3,原生语言的迭代总结1,什么是迭代器 每一个可迭代对象都对应着一个可迭代接口[Symbol.iterator]; [Symbol.iterat...
    99+
    2024-04-02
  • Python进阶:迭代器与迭代器切片
    2018-12-31 更新声明:切片系列文章本是分三篇写成,现已合并成一篇。合并后,修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔接做了大量改动。原系列的单篇就不删除了,毕竟也是有单独成篇的作用。特此声明,请阅读改...
    99+
    2023-01-30
    进阶 迭代 切片
  • Python迭代和解析(4):自定义迭代
    解析、迭代和生成系列文章:https://www.cnblogs.com/f-ck-need-u/p/9832640.html 本文介绍如何自定义迭代器,涉及到类的运算符重载,包括__getitem__的索引迭代,以及__iter__、...
    99+
    2023-01-30
    迭代 自定义 Python
  • Github 大牛封装 Python 代
    *注意:全文代码可左右滑动观看 在运维开发中,使用 Python 发送邮件是一个非常常见的应用场景。今天一起来探讨一下,GitHub 的大牛门是如何使用 Python 封装发送邮件代码的。 一般发邮件方法 SMTP是发送邮件的协议,Pyt...
    99+
    2023-01-30
    大牛 Github Python
  • Python3 迭代器
    Python3 迭代器说明: 迭代器是一个可以记住遍历的位置的对象 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束 迭代器只能往前不会后退 字符串,列表或元组对象都可用于创建迭代器示例1: #!/usr/bin/pytho...
    99+
    2023-01-31
    迭代
  • Python18 迭代器
    迭代器 可迭代就是可以被循环 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list、tuple、dict、set、str等; 一类是generator,包括生成器和带yield的generator f...
    99+
    2023-01-31
    迭代
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作