您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 牛顿迭代法求方程的根
利用迭代算法解决问题,需要做好以下三个方面的工作:一、确定迭代变量。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。二、建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。三、对迭代过程进行控制。在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。最经典的迭代算法是欧几里德算法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:牛顿迭代法是牛顿在17世纪提出的一种求解方程f(x)=0.多数方程不存在求根公式,从而求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。设r是f(x)=0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y=f(x)的切线L,L的方程为y=f(x0)+f'(x0)(x-x0),求出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的近似值序列{Xn},其中Xn+1=Xn-f(Xn)/f'(Xn),称为r的n+1次近似值。上式称为牛顿迭代公式。/*用牛顿迭代法求下面方程x*x*x-5*x*x+16*x-80=0的实根的过程是:1.你想在谁附近求解,这个范围或者这个数值大多是题目已经给定了的(本例是根据输入的数值来计算的)2.令f(x)=x*x*x-5*x*x+16*x-803.x1=X4.求f(x1)5.对f(x)求导,得到f1(x),求f1(x1)6.调整x,使x=x1-f(x1)/f1(x1)7.符合条件x-x11e-5,转到第3步8.不符合条件x-x11e-5,则x1就是我们要求的实根*/#includestdio.h#includemath.h//y=((x-5)*x+16)*x-80floatf(floatx){return(pow(x,3)-5*pow(x,2)+16*x-80);}floatf1(floatx){return(3*pow(x,2)-10*x+16);}voidmain(){floatx,x1,y1,y2;printf(请输入一个任意实数:X=);scanf(%f,&x);printf(我可以帮你找到这个方程的解\n);do{x1=x;y1=f(x);y2=f1(x1);x=x1-y1/y2;}while(fabs(x-x1)=1e-5);printf(Arootis%f\n,x1);}
本文标题:牛顿迭代法求方程的根
链接地址:https://www.777doc.com/doc-7310356 .html