牛顿法及Python实现

这篇具有很好参考价值的文章主要介绍了牛顿法及Python实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1 原理

2 牛顿法求解步骤

3 牛顿法的几何解释

4 案例&Python实现


1 原理

牛顿法是基于泰勒公式来实现的。泰勒公式的意义:如果函数满足一定的条件,泰勒公式可以用函数在某一点的各阶导数值做系数构建一个多项式来近似表达这个函数。

设在某邻域内n+1阶可导,则的泰勒展开式为:

牛顿法及Python实现

取其线性部分(即泰勒展开式的前两项),并令其等于0,即:

牛顿法及Python实现

以此可以得到非线性方程的近似解。若,则可得到方程的一个解:

这样就可以得到牛顿法的迭代公式:

牛顿法及Python实现​​​​​​​

已经证明,如果是连续的,并且待求的零点是孤立的,那么在零点周围存在一个区域,只要初始值位于这个邻近区域内,那么牛顿法必定收敛。 并且,如果不为0, 那么牛顿法将具有平方收敛的性能. 粗略的说,这意味着每迭代一次,牛顿法结果的有效数字将增加一倍。

2 牛顿法求解步骤

牛顿法求解步骤如下:

① 求解迭代函数

② 构造迭代公式;

③ 确定迭代初值;

③ 根据精度要求确定迭代停止条件。

3 牛顿法的几何解释

牛顿法及Python实现

 牛顿法的迭代过程如下:

  • 迭代起点P;
  • 过点作的切线,切线与x轴的交点的横坐标为;
  • 更新迭代起点为;
  • 过点作的切线,切线与x轴的交点的横轴标为;
  • ......
  • 如此循环,切线与x轴交点的横坐标会无限接近于真实解。

4 案例&Python实现

用牛顿法求解方程的根,精度要求。

输出近似解以及迭代次数。

程序流程如下:

牛顿法及Python实现

 Python代码如下:

#----牛顿法求根-----#
import numpy as np
def f(x):
    y=x**3-x-1#求根方程的表达式
    return y
def g(x):
    y=3*x**2-1#求根方程的导函数
    return y
def main():
    x0=1.5 #取初值
    e=10**(-9) #误差要求
    L=0 #初始化迭代次数
    while abs((f(x0)-0))>e: #采用残差来判断
        x1=x0-f(x0)/g(x0) #迭代公式,x(n+1)=x(n)-f(x(n))/f'(x(n))
        x0=x1
        L=L+1 #统计迭代次数
    print(f"x1={x1}") #输出数值解
    print(f(x0)-0)  # 验证解的正确性
    print(f"L={L}") #输出迭代次数
if __name__ == '__main__':
   main()

运行结果如下:文章来源地址https://www.toymoban.com/news/detail-459860.html

x1=1.3247179572447898
1.865174681370263e-13
L=4

到了这里,关于牛顿法及Python实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 牛顿-拉普森法求解线性方程组原理及matlab程序

      在多变量微积分和矩阵理论的交叉点是求解非线性代数方程的迭代方法。设是的 n n n 个未知向量 x ,有 F ( x ) = 0 ∈ R n mathbf{F}left( mathbf{x} right) =0in text{R}^{text{n}} F ( x ) = 0 ∈ R n 就是求解 x 的 n n n 个非线性方程组,其中向量函数具有连续导数,并且雅可比矩阵 F x ( x

    2024年02月05日
    浏览(41)
  • 牛顿法(牛顿拉夫逊)配电网潮流计算matlab程序

    牛顿法配电网潮流计算matlab程序 传统牛顿—拉夫逊算法,简称牛顿法,是将潮流计算方程组F(X)=0,进行泰勒展开。因泰勒展开有许多高阶项,而高阶项级数部分对计算结果影响很小,当忽略一阶以上部分时,可以简化对方程的求解计算。当忽略一阶以上部分后,牛顿法的求解

    2024年02月02日
    浏览(48)
  • 牛顿法、割线法、二分法

    牛顿法求解非线性方程组 割线法求解非线性方程组 二分法求解根号3  另外,今天上机课写程序时,发现不同的起始点可以收敛到不同的零点。也许这是一个新的值得研究的地方。 看来,计算数学也是这样,光听理论无法实现大的突破,也没法产生好的想法,必须在实践应用

    2024年02月05日
    浏览(51)
  • 随手笔记——如何手写高斯牛顿法

    将演示如何手写高斯牛顿法 注: 该部分仅用于学习使用,如有侵权,请联系!

    2024年02月16日
    浏览(46)
  • 最优化方法-牛顿法一维搜索

    导言: 在最优化问题中,找到函数的最小值或最大值是一个重要的任务。牛顿法是一种经典的迭代方法,常用于优化问题的求解。本文将详细介绍最优化方法中的牛顿法一维搜索,包括其基本原理、算法步骤以及应用场景。 牛顿法,也称为牛顿-拉夫逊方法,是一种迭代的优

    2024年02月06日
    浏览(40)
  • 人工智能之数学基础【牛顿法】

    简述 牛顿法常用来求解无约束非线性规划问题,它利用目标函数的二次泰勒展开式构造搜索方向。 无约束非线性规划问题 : m i n f ( x ) , x ∈ R n min f(x),quad x in R^n min f ( x ) , x ∈ R n 。如果目标函数 f ( x ) f(x) f ( x ) 在 R n R^n R n 上具有 连续的二阶偏导数 ,其中 Hessian矩阵正定

    2024年02月20日
    浏览(46)
  • 机械臂运动学逆解(牛顿法)

      常用的工业6轴机械臂采用6轴串联结构,虽然其运动学正解比较容易,但是其运动学逆解非常复杂,其逆解的方程组高度非线性,且难以化简。   由于计算机技术的发展,依靠其强大的算力,可以通过数值解的方式对机械臂的运动学逆解方程组进行求解。以下将使用牛

    2024年01月22日
    浏览(50)
  • 机器学习笔记之优化算法(十八)经典牛顿法

    本节将介绍 优化算法——经典牛顿法 ( Newton Method ) (text{Newton Method}) ( Newton Method ) 。 下降方向 在线搜索方法——方向角度中介绍了 下降方向 ( Descent Direction ) (text{Descent Direction}) ( Descent Direction ) 的概念。首先,通过推导得到 如果 更新方向 P k mathcal P_k P k ​ 与梯度方向

    2024年02月11日
    浏览(37)
  • 机器学习笔记之优化算法(二十)牛顿法与正则化

    本节我们介绍 经典牛顿法 在训练 神经网络 过程中的迭代步骤,并介绍 正则化 在牛顿法中的使用逻辑。 经典牛顿法 自身是一个典型的 线搜索方法 ( Line-Search Method ) (text{Line-Search Method}) ( Line-Search Method ) 。它的迭代过程使用 数学符号 表示如下: x k + 1 = x k + α k ⋅ P k x_

    2024年02月11日
    浏览(46)
  • 机器学习笔记之优化算法(十九)牛顿法与正则化

    本节我们介绍 经典牛顿法 在训练 神经网络 过程中的迭代步骤,并介绍 正则化 在牛顿法中的使用逻辑。 经典牛顿法 自身是一个典型的 线搜索方法 ( Line-Search Method ) (text{Line-Search Method}) ( Line-Search Method ) 。它的迭代过程使用 数学符号 表示如下: x k + 1 = x k + α k ⋅ P k x_

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包