实验要求
a. 实现牛顿公式,并分别找到收敛和发散的例子
算法介绍
牛顿公式原理如下图:
为了防止牛顿迭代发散并且加速迭代速度,所以我们在这里引入一个新的方法——
牛顿下山法:
根据牛顿公式原理以及牛顿下山法的原理,我们可以将算法进行代码实现。
算法步骤
牛顿求根法
1. 定义x与y,x为所要求得根的大概位置,y为我们要求得根的精度;
2. 计算f(x);
3. 计算f(x)的导数f'(X);
4. 计算x = 1 - f(X) / f'(x);
5. 比较误差|f(x) - x| 是否小于y,若大于y则返回第二步,若小于y则跳出循环输出结果;
6. 注:在牛顿求根法中还要设置一个最大迭代次数,以免一些发散的例子导致一直循环而无法跳出循环。
牛顿下山法
1. 定义x、y与k,x为所要求得根的大概位置,y为我们要求得根的精度,k为下山因子初始值为1;
2. 计算f(x)并将其绝对值值赋给一个中间量mid;
3. 计算f(x)的导数f'(X);
4. 计算x = 1 -k * (f(X) / f'(x)) ;
5. 计算f(x)
6. 比较|f(x)|与mid的大小,若|f(x)|小于mid,则继续计算,否则k = k/2,返回上一步;
7. 比较误差|f(x) - x| 是否小于y,若大于y则返回第二步,若小于y则跳出循环输出结果;
算法实现
实现算法所用语言:Python
牛顿求根公式实现代码牛顿下山法实现代码:
 
对比函数代码:实验结果
在这里我们选取一个特殊的函数作为例子:
 
这个函数在x = 1 x=2 处对于牛顿法不收敛,并且有两个根分别是-13.23483652635
x = 1 ,我们可以发现在发散部分牛顿求根公式根本没有办法求根,但是牛顿下山公式却可以求出方程的根:
 
虚线上方为牛顿求根公式,虚线下方为牛顿下山法公式。
x = 2.6 ,我们可以发现即便牛顿求根公式也可以求出方程的根但是收敛速度远远不如牛顿下山法:
 
虚线上方为牛顿求根公式,虚线下方为牛顿下山法公式。
同理,若我们选取一个收敛的例子:

x = 0.6时我们来对比牛顿求根公式与牛顿下山法的区别,也可以明显地看出牛顿下山法对牛顿求根公式收敛速度的优化效果:
 
虚线上方为牛顿求根公式,虚线下方为牛顿下山法公式。

利用牛顿公式求解方程的根并且实现牛顿下山法相关推荐

  1. 二分法求方程的根_快速求解方程的根——二分法与牛顿迭代法

    今天是周四高等数学专题的第7篇文章. 之前的文章和大家聊了许多数学上的理论,今天和大家聊点有用的东西. 我们都知道,工业上的很多问题经过抽象和建模之后,本质还是数学问题.而说到数学问题就离不开方程,在 ...

  2. java牛顿法求方程根_快速求解方程的根——二分法与牛顿迭代法

    今天是周四高等数学专题的第7篇文章. 之前的文章和大家聊了许多数学上的理论,今天和大家聊点有用的东西. 我们都知道,工业上的很多问题经过抽象和建模之后,本质还是数学问题.而说到数学问题就离不开方程,在 ...

  3. R语言应用uniroot函数求解方程的根(一元解):仿真数据(方程式可视化、并添加y=0的水平横线)、uniroot函数求解方程的根(并添加方程根对应的垂直竖线)

    R语言应用uniroot函数求解方程的根(一元解):仿真数据(方程式可视化.并添加y=0的水平横线).uniroot函数求解方程的根(并添加方程根对应的垂直竖线) 目录

  4. 3.牛顿迭代法求解方程的根

    牛顿迭代法求解方程的根 引题:用牛顿迭代法求下列方程在值等于x附近的根: 2 x 3 − 4 x 2 + 3 x − 6 = 0 2x^3-4x^2+3x-6=0 2x3−4x2+3x−6=0 输入: ...

  5. python求解方程的根

    python求解方程的根 本文将用sympy模块求解方程: 安装方法: pip install sympy 单变量方程 例题:求解 x 2 + 3 x + 2 x^2+3x+2 x2+3x+2的根 f ...

  6. 用弦截法求解方程的根

    /* 用弦截法求解方程的根 算法思想 三元方程的函数增减单调特性 定义X1,X2两个坐标 使得F(X1) 与F(X2) 的值相反 这样X1,X2之间必有一跟 由下面的弦截法公式求焦点坐标 当F(X)与 ...

  7. 使用MATLAB求解方程求根——学习笔记

    使用MATLAB求解方程求根--学习笔记 碎碎念:终于参加完了某比赛,连续大约摸了两天的鱼,就在昨天由于自己的操作失误,亲手将电脑给烧了,这就是上天在暗示我是时候加油为接下来的两场比赛和一个考试努力啦 ...

  8. 如何利用matlab求解方程

    如何利用matlab求解方程 1.    前言 作为三大数学软件之一,matlab在数值计算方法的能力首屈一指.求解方程是工科学习和工程计算中最基础.最常见的问题.掌握利用现代化工具求解方程的方法对于 ...

  9. MATLAB求解方程的根

    %% 2022-1-12求方程的根 %{ 求解方程的根 x^3+2^x+1=0,分别采用二分法,牛顿法,简单迭代法,割线法, 上坡法和下坡法以及zeroin算法 %} %% x^3+2^x+1=0 判 ...

最新文章

  1. Java Android 32位16位 MD5加密
  2. Java多线程、高并发秒杀时MySQL出现死锁原因(Deadlock found when trying to get lock)及对应解决方案
  3. WebLogic下载地址
  4. [vue] vue组件里的定时器要怎么销毁?
  5. python 中 yield 的使用
  6. 郭凯天:中国公益慈善行业数字化观察与思考
  7. 谁来结束 GUI 程序?| CSDN 博文精选
  8. 中国传统节日春节网页HTML代码 学生网页课程设计期末作业下载 春节大学生网页设计制作成品下载 DW春节节日网页作业代码下载 节日春节8页面
  9. webpack + vue 学习看过的文章 网址
  10. vue中实现打包时代码压缩
  11. linux系统被×××后处理经历
  12. 忍得住清贫 耐得住寂寞 禁得起诱惑
  13. 二进制与十进制转换器
  14. 卫生统计学v是什么意思_卫生统计学名词解释
  15. 华硕EeePC: 没有光驱重装系统(用U盘作为电脑启动盘)
  16. 社区物联网医院解决方案(智慧医疗)
  17. Elasticsearch在各大互联网公司的应用案例
  18. Struts2漏洞检测和利用
  19. 什么是生命周期函数?
  20. Jupyter Lab 密码登录、远程访问

热门文章

  1. FRW辐轮王全球十大顶级运动户外品牌第一自行车受邀中国进博会
  2. 循环闹钟c语言,闹钟设置四天一个循环,自定义周期循环提醒便签
  3. win10激活错误,软件授权服务报告无法激活计算机怎么办?
  4. 良心安利体育运动ppt幻灯片素材网站
  5. NLP学习基础入门(上)
  6. 获取32位的uuid方法
  7. 如何比较两个文本的相似度
  8. 北鲲云联合珠海中科先进技术研究院推出代算服务
  9. 学习笔记之MIB相关
  10. 银河麒麟最新V10系统下载链接