牛顿迭代法

牛顿迭代法的思想是将非线性函数(原方程)线性化(切线方程),以线性方程的解逐步逼近非线性方程的解。

算法步骤

步骤1:设x*是f(x)= 0 的根,选取x0作为x*初始近似值,并设f(x), f(x)和f’’(x) 在x*附近连续。过点(x0,f(x0)) 做曲线y=f(x)的切线L,L的方程为y=f(x0)+f’(x0)(x-x0) ,这里其实是f(x)在x0处的一阶Taylor展开,求出L与x轴交点的横坐标x1= x0-f(x0)/f’(x0) ,称x1 为x0 的一次近似值。

步骤2:过点(x1,f(x1)) 做曲线 的切线,并求该切线与x轴交点的横坐标 x2= x1-f(x1)/f’(x1) ,称x2为x*的二次近似值。

步骤3:重复以上过程,得 x*的近似值序列xk+1= xk-f(xk)/f’(xk),其中xk+1,称为 的k+1次近似值,上式称为牛顿迭代公式。

步骤4:在迭代序列收敛的情况下,取满足精度的迭代值 xk作为方程的根x* 的近似值。

算法流程

例题

用牛顿迭代法求解方程x3-3x-1=0 在x0=2 附近的根,精确到小数点后第四位。

代码实现

#include "stdio.h"
#include "math.h"
main()
{float x0,x1=2;int i=0;printf("\nx%d=%7.6f",i,x1);i++;do{x0=x1;x1=x0-(x0*x0*x0-3*x0-1)/(3*x0*x0-3);  //代码求导搞不定,只能手动求导了,囧~printf("\nx%d=%7.6f",i,x1);i++;}while(fabs(x1-x0)>=0.000001);printf("\nx=%5.5f",x1);
}

计算结果

牛顿迭代法原理及C++实现相关推荐

  1. 机器学习-牛顿迭代法原理和公式推导

    机器学习的本质是建立优化模型,通过优化方法,不断迭代参数向量,找到使目标函数最优的参数向量,最终建立模型.但是在机器学习的参数优化过程中,很多函数是非常复杂的,不能直接求出.五次及以上多项式方程没有根 ...

  2. python牛顿法算立方根_牛顿迭代法求解立方根

    //计算一个数字的立方根,不使用库函数 //详细描述: //接口说明 //原型: //public static double getCubeRoot(double input) //输入:doubl ...

  3. 二元牛顿迭代法matlab,2-8牛顿迭代法matlab

    4 实验七 牛顿迭代法 [实验目的] 1.了解牛顿迭代法的基本概念. 2.了解牛顿迭代法的收敛性和收敛速度. 3.学习掌握MATLAB 软件有关的命令. [实验内容] 用牛顿迭代法求方程0123=-+ ...

  4. 用matlab写牛顿迭代法,牛顿迭代法的MATLAB实现

    20 牛顿迭代法的MATLAB实现 云 磊 (襄樊学院,湖北 襄阳 441053) 摘要:牛顿迭代法是方程求根中的一种较快捷的迭代方法,但遇到较复杂的方程时计算量较大.文章采用了MATLAB编程来实现 ...

  5. 多元函数的极值牛顿迭代法

    多元函数的极值&牛顿迭代法 多元函数的极值 牛顿迭代法 多元函数的极值 多元函数求极值的方法其他网页已经写了很多,在此不多叙述.在此不多赘述.简单给出结论: (1)一元函数求极值:对于一阶连续 ...

  6. 牛顿迭代法求平方根原理

    牛顿迭代法可以求解n次方的根,但这里只讨论用它来求平方根. 牛顿迭代法求平方根过程 Java代码实现 /*** 求一个数的平方根* @param number* @return*/public sta ...

  7. 【算法】牛顿迭代法求平方根的原理和误差分析

    前言 在<算法(第四版)>中的P23页,给出了经典的利用牛顿迭代法求平方根的算法,牛顿迭代法在数值计算中应用十分广泛,但是在看书中的代码时,我最困惑的是其中对收敛条件的判断,经过查阅资料和 ...

  8. 141. Sqrt(x)【牛顿迭代法求平方根 by java】

    Description Implement int sqrt(int x). Compute and return the square root of x. Example sqrt(3) = 1 ...

  9. 梯度下降法,牛顿法,高斯-牛顿迭代法,附代码实现

    ---------------------梯度下降法------------------- 梯度的一般解释: f(x)在x0的梯度:就是f(x)变化最快的方向.梯度下降法是一个最优化算法,通常也称为最 ...

最新文章

  1. Linux内存技术分析(上)
  2. Redis缓存使用技巧和设计方案
  3. vue中的v-on事件监听机制
  4. TOMCAT websocket 多连接内存泄漏与jetty对比分析
  5. linux基于域的虚拟目录,RHELAS4.0 apache配置之我的小结(虚拟目录,虚拟主机)
  6. zabbix对网站web监控(配置模板)
  7. mysql 吧库下的表名都加_MySQL 数据库名、表名、字段名大小写敏感记录
  8. Android 系统(60)---JSON
  9. 算法与数据结构之判断是否为n的幂
  10. 剑指Offer:面试题31——连续子数组的最大和(java实现)
  11. anaconda 虚拟环境
  12. android怎么用apk,手机如何安装APK应用教程 小白操作安卓系统教程 (全文)
  13. 计算机U盘驱动程序安装不上问题解决方案
  14. 关于自编码器的核心点理解
  15. [坑]微信支付首次支付成功,第二次调用失败
  16. 阿里云发送短信功能(环境搭建篇)
  17. 【Linux】centos解压缩rar
  18. ArcBlock冒志鸿:区块链3.0时代最先应用于政府服务体系|筱静观察
  19. 很经典的十五句话,从别人的blog上看来的!
  20. ES6给对象部署Iterator

热门文章

  1. 番茄花园是否走上正途?
  2. ArcGIS:根据DEM数据提取区域水系
  3. 西门子mag6000接线_S7-1200与西门子电磁流量计SITRANS F M MAG 6000 DP通讯
  4. 外接显示屏 HDMI线连到台式或者笔记本后,没有声音了!
  5. rk3128 android7.1 hdmi音频调试
  6. 2022年涨价潮来了?芯片,晶圆.......1月1日正式调涨!
  7. 现在工作所具备的计算机操作,信息科科长职位竞争上岗讲演稿(网友投稿)
  8. vulnhub靶机DC1
  9. 计算机毕业设计Java作业批改管理系统(源码+系统+mysql数据库+lw文档)
  10. 编辑数学公式绘制曲线