牛顿迭代法又称牛顿-拉夫逊方法(Newton-Raphson method),是牛顿在17世纪提出的一种在实数域和复数域上近似求方程的方法。该方法的基础是利用泰勒展开式。

方法使用函数f(x)的泰勒级数的前几项寻找方程f(x) = 0 的根。最大优点是在方程f(x)=0的单根附近具有平方收敛,该方法可以用来求方程的重根、复根。

计算公式如下:

设r是f(x)=0的根,选取x0作为r初始近似值,过点(x0,f(x0)),做曲线y=f(x)的切线L,L与x轴的交点的横坐标x1=x0-f(x0)/f'(x0),

称x1是r的一次近似值,过点(x1,f(x1))做曲线y=f(x)的切线,求该切线与x轴的交点的横坐标为x2=x1-f(x1)/f'(x1),称x2为r的二次近似值。重复以上过程,知道r的近似值误足够小。

解非线性方程f(x)=0的牛顿法是把非线性方程线性化的一种近似方法。把f(x)在x0点附近展开成泰勒级数 f(x) = f(x0)+(x-x0)f'(x0)+(x-x0)^2*f''(x0)/2! +… 取其线性部分,作为非线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(x0)+f'(x0)(x-x0)=0 设f'(x0)≠0则其解为x1=x0-f(x0)/f'(x0) 这样,得到牛顿法的一个迭代序列:x(n+1)=x(n)-f(x(n))/f'(x(n))。

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

C语言代码实现:

#include<stdio.h>
#include<math.h>double func(double x) //要求解的函数方程{return x*x*x*x - 3 * x*x*x + 1.5*x*x - 4.0;}double func1(double x) //导函数{return 4 * x*x*x - 9 * x*x + 3 * x;}int Newton(double *x, double precision, int maxcyc)//maxcyc 最大迭代次数{double x1, x0;int k;x0 = *x;for (k = 0; k < maxcyc; k++){if (func1(x0) == 0.0){printf("迭代过程中导数为0\n");return 0;}x1 = x0 - func(x0) / func1(x0);if (fabs(x1 - x0) < precision || fabs(func(x1)) < precision)//达到设定的精度{*x = x1;return 1;}elsex0 = x1; //准备下次迭代}printf("迭代次数超过预期!\n"); //迭代次数达到,仍没有达到精度return 0;}int main(){double x, precision;int maxcyc;printf("输入初始迭代值x0");scanf("%lf", &x);printf("输入最大迭代次数:");scanf("%d", &maxcyc);printf("请输入迭代要求的精度:");scanf("%lf", &precision);if (Newton(&x, precision, maxcyc) == 1)printf("该值附近的根为:%lf\n", x);elseprintf("迭代失败!\n");while(1);return 0;}

C++实现:

//此函数是用来求3元一次方程ax^3+bx^2+cx+d=0的解//比如 x^3-27=0,我们就可以输入1 0 0 -27,这样我们就可以得到一个解#include<iostream>#include<cmath>using namespace std;int main(){double diedai(double a,double b,double c,double d,double x);double a,b,c,d;double x=10000.0;cout<<"请依次输入方程四个系数:";cin>>a>>b>>c>>d;x=diedai(a,b,c,d,x);cout<<x<<endl;return 0;}double diedai(double a,double b,double c,double d,double x){while(abs(a*x*x*x+b*x*x+c*x+d)>0.000001){x=x-(a*x*x*x+b*x*x+c*x+d)/(3*a*x*x+2*b*x+c);}return x;}

Matlab实现:

%定义函数
function y=f(x)
y=f(x) ;%函数f(x)的表达式
function z=f(x)
z=h(x) ;%函数f(x)的导函数表达式%主程序
x=X;%迭代初始值
i=0;
while i<I%迭代次数
x0 = X - f(X)/h(X);%牛顿迭代格式
if abs(x0-X)>;esp;%收敛判断
X=x0;
else break;
end
i =i+1;
end
fprintf('\n%s%.4f\t%s%d','X=',X,'i=',i);%输出结果

牛顿迭代法求解多项式方程的近似解相关推荐

  1. 非线性方程组牛顿迭代法matlab,matlab实现牛顿迭代法求解非线性方程组

    <matlab实现牛顿迭代法求解非线性方程组>由会员分享,可在线阅读,更多相关<matlab实现牛顿迭代法求解非线性方程组(5页珍藏版)>请在人人文库网上搜索. 1.matla ...

  2. python牛顿法解非线性方程组_matlab实现牛顿迭代法求解非线性方程组.pdf

    matlab实现牛顿迭代法求解非线性方程组.pdf matlab 实现牛顿迭代法求解非线性方程组实现牛顿迭代法求解非线性方程组 已知非线性方程组如下 3*x1-cosx2*x3-1/20 x12-81 ...

  3. mysql 立方根函数_Java实现牛顿迭代法求解平方根、立方根

    一.简介 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法. ...

  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. matlab牛顿法解非线性方程组,matlab实现牛顿迭代法求解非线性方程组.pdf

    资源描述 matlab 实现牛顿迭代法求解非线性方程组实现牛顿迭代法求解非线性方程组 已知非线性方程组如下 3*x1-cos(x2*x3)-1/2=0 x1^2-81*(x2+0.1)^2+sin(x ...

  6. 分别用二分法和牛顿迭代法求解方程x3 – 3x – 1 = 0在x = 2附近的实根

    编写程序,分别用二分法和牛顿迭代法求解方程x3 – 3x – 1 = 0在x = 2附近的实根,要求计算精确到小数点后七位数字为止,并将求出的近似结果与理论值2cos20 相比较,二分法的初始迭代区间 ...

  7. 二分法和简单迭代法的优缺点_二分法和牛顿迭代法求解方程的比较.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp理学 二分法和牛顿迭代法求解方程的比较.doc5页 本文档一共 ...

  8. c语言牛顿迭代法求解非线性方程组,利用牛顿迭代法求解非线性方程组

    最近一个哥们,是用牛顿迭代法求解一个四变量方程组的最优解问题,从网上找了代码去改进,但是总会有点不如意的地方,迭代的次数过多,但是却没有提高精度,真是 最近一个哥们,是用牛顿迭代法求解一个四变量方程组 ...

  9. 常用算法 之二 牛顿迭代法求解PT100温度(高阶方程求解)

    问题   在最近的工作中用到了PT100铂电阻,它适用于医疗.电机.工业.温度计算.卫星.气象.阻值计算等高精温度设备,应用范围非常之广泛.类似的还有PT1000.   PT后的100即表示它在0℃时 ...

最新文章

  1. pythonfile操作教程_Python基础教程之文件操作
  2. html 点击一行变色,elementui点击table每一行会变色,当有固定列的时候,
  3. Java实践(五)——类的声明与引用
  4. html克隆元素增加id,h.js - 元素克隆与追加
  5. L1-049__056
  6. 网络通信协议层的七个部分
  7. 淘宝商品爬虫实战笔记
  8. 【SCI\EI】SCI分区,该看JCR还是中科院?
  9. java之StringBuilder和关于数组怎么扩容
  10. 服务器受到DDOS攻击怎么办
  11. 蒸烤一体机哪个品牌好性价比高,盘点国内消费者呼声最高的品牌推荐
  12. 常见Bugger篇章一
  13. 企业微信应用授权/静默登录
  14. 万能遥控器小制作(四)
  15. 【Python可视化】2021年最新世界大学排名,来看看你的母校上榜没~
  16. easydl code for classify
  17. javascript 获取上级、同级和下级元素
  18. SCI最全写作思维导图
  19. Python中len()的用法
  20. 聊聊高并发系统之限流特技-1

热门文章

  1. 邻接矩阵/图/DFS/BFS
  2. C语言实验题――打印金字塔
  3. mysql 一个月以前_mysql查询昨天 一周前 一月前 一年前的数据
  4. 如何在微信中做好微信h5棋牌下载类推广防封防屏蔽?
  5. 网站制作教程是什么?这些步骤要知道
  6. 苹果怎么设置下载软件不要密码?手机技巧分享
  7. 使用Tensorflow 2进行猫狗分类识别
  8. kafka:默认的分区策略
  9. 中英文标点符号的读法用法大全
  10. 【总结】初创公司用AWS搭建高扩展性架构