您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 数值分析上机习题2-20
数学分析上机练习习题2-20许翔1323741习题二1题目20.(上机题)Newton迭代法(1)给定初值0x及容许误差,编制Newton法解方程()0fx根的通用程序。(2)给定方程3()/30fxxx,易知其有三个根13x,20x,33x。①由Newton方法的局部收敛性可知存在0,当0(,)x时,Newton迭代序列收敛于根2x。试确定尽可能大的。②试取若干初始值,观察当0(,1)x,(1,),(,),(,1),(1,)时Newton序列是否收敛以及收敛于哪一个根。(3)通过本上机题,你明白了什么?2程序代码2.1Newton法解方程通用程序doubleNewtonIteration(doublex0,doubleeps)//Newtoniterationmethod{doublex1,x2;x1=x0;x2=x1-f(x1)/df(x1);while(fabs(x1-x2)=eps){x1=x2;x2=x1-f(x1)/df(x1);}returnx1;}2.2求解尽可能大doubleMaximalDeviateRange()//Determinethemaxrangeforconvergence.{doublestep=1e-5;//steplengthintcnt=1;//stepcountdoubledelta;数学分析上机练习习题2-20许翔1323742cout**********************NewtonIteration(eps=1e*5)**********************endl;while(fabs(NewtonIteration(step*cnt,eps))=eps){cnt++;}delta=step*cnt;coutThemaximaldeviaterangeforxconvergingtox2*=0is(-delta,delta)endl;returndelta;}3计算结果与分析图1计算结果在取步长为510的情况下,允许误差510eps时有x轴上的一个小区间0.7746,0.7746为Newton迭代序列在*20x处的尽可能大的局部收敛区间。当0(,1)x,(1,),(,),(,1),(1,)时(本例取1000,0.8873,0.3873x)牛顿迭代序列分别收敛于1.732051,1.732051,0.000000。通过本次上机编程时间并通过多次的调试从运行结果很好的验证了教材上牛顿迭代法具有局部收敛性这一重要性质。对于不同的初值,迭代序列会收敛于不同的根,所以在某个区间内求根对于初值的选取有很大的关系。产生上述结果的原因是区间不满足大范围收敛的条件。4完整代码#includeiostream#includeiomanip#includemath.husingnamespacestd;doubleeps=1e-5;doublef(doublex)//FunctionF(x)数学分析上机练习习题2-20许翔1323743{return(x*x*x)/3-x;}doubledf(doublex)//DerivativeoffunctionF(x){return(x*x)-1;}doubleNewtonIteration(doublex0,doubleeps)//Newtoniterationmethod{doublex1,x2;x1=x0;x2=x1-f(x1)/df(x1);while(fabs(x1-x2)=eps){x1=x2;x2=x1-f(x1)/df(x1);}returnx1;}doubleMaximalDeviateRange()//Determinethemaxrangeforconvergence.{doublestep=1e-5;//steplengthintcnt=1;//stepcountdoubledelta;cout**********************NewtonIteration(eps=1e*5)**********************endl;while(fabs(NewtonIteration(step*cnt,eps))=eps){cnt++;}delta=step*cnt;coutThemaximaldeviaterangeforxconvergingtox2*=0is(-delta,delta)endl;returndelta;}voidCalculate(doublex0)//CalculatetheNewtonIterationandformattheresultforoutput{printf(Ifx0=%11.4f,xconvergestothevalueof:%8.6f\n,x0,NewtonIteration(x0,eps));数学分析上机练习习题2-20许翔1323744}voidmain(){doubledelta=MaximalDeviateRange();Calculate(-10000);Calculate((-1-delta)/2);Calculate(-delta/2);Calculate(delta/2);Calculate((1+delta)/2);Calculate(10000);}
本文标题:数值分析上机习题2-20
链接地址:https://www.777doc.com/doc-2387455 .html