资源描述:
《二分法牛顿迭代法普通迭代法资料.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、计算机与通信工程学院I储SchoolofCompuierandComumcaiKXiEngine窃Ing数值球根试验报告《数值计算方法》专业班级姓名学号08083117时间2010年10月24日星期天实验目的熟悉二分法以及牛顿迭代法求方程近似根的数值方法,掌握各种迭代方法,自己扩张研究迭代法的效率与收敛性和初始值的关系。实验内容1.已知f(x)=x3•4x2一10=0在1,2】上有一个实根x,f(1)=-5,f(2)=14,用二分法和牛顿迭代法求该实根,要求精度满足条,.13件:x—xk兰尹灯0。2.条件允许的话,扩展研究各种迭代法的效率,以及迭代
2、的效率和收敛性与初始值的关系,并通过比较采用两点加速的方法与普通的方法的效率体验加速迭代的优点。总而言之,本实验中的用到的求根方法有①二分法,②牛顿迭代法,1丄③迭代函数为「(x)二丄(10-x3)2的迭代方法,以及④对函数21(x^!(1^x3)2采用两点加速迭代的方法。2三、主函数流程程序是按顺序运行的,流程图如下图所示:迭代法分法结束等待用户输入求根方式开始•&用二分法求根显示求根的结果L—一用迭代法球根用户输入迭代初值结果包括迭代的次1C数和所求牛顿迭代法的根求根普通迭代法求根)V、两点加速法求根四、源程序#include
3、#include#include//根据x的值计算函数值//函数f(x)=xxx+4xx-10doublefunc(doublex){doublevalue;value=xxx+4xx-10;returnvalue;}//根据参数x的值计算函数f(x)的导数值doubledivFunc(doublex){return3xx+8x;}//二分法计算方程f(x)=0在[1,2]上的跟//二份迭代结束条件由参数precision精度给出voidbiSectionMethod(doubleprecision){intk=0
4、;//均分次数doublex1=1.0,x2=2.0;//区间[1.0,2.0]doublemidx;//二分之后的值printf("tk有根区间k+1f(x(k+1))");do{printf("t%3d",k);printf("[%.3f,%.3f]",x1,x2);midx=(x1+x2)/2;printf("%f",midx);printf("%.6f",func(midx));if(func(midx)<0)x1=midx;elsex2=midx;k++;if(k%3==0)//每次输出4个等用户审查getch();}whil
5、e(x2-x1>=precision);//区间的长度超过5e-3就一直迭代printf("t二分法分区间的次数:%d所求的根是:%lf",k-1,x2);//牛顿迭代法//根据初值值xO,在区间[1.0,2.0]上迭代求根//迭代次数由参数precision精度决定voidNewTonMethod(doublex0,doubleprecision){intk=0;//迭代次数doublex1,x2=x0;printf("tkx(k)f(x(k))x(k+1)-x(k)");do{printf("t%2d",k);printf("
6、%.6f",x2);printf("%.6f",func(x2));x1=x2;x2=x2-func(x1)/divFunc(x1);if(x2-x1>0)printf("%.6f",x2-x1);//输出两次迭代的差值elseprintf("%.6f",x1-x2);k++;if(k%3==0)//每次输出4个等用户审查getch();}while(x2-x1>precisionx1-x2>precision);printf("t牛顿迭代初值:%lf次数:%d所求的根是:%lf",x0,k-1,x2);}//迭代函数g(x)=(sqrt(1
7、0-xxx))/2;doublefuncTwo(doublex){return(sqrt(10-xxx))/2;}//普通迭代函数voidordinaMethod(doublex0,doubleprecision){intk=0;//迭代次数doublex1,x2=x0;printf("tkx(k)f(x(k))x(k+1)-x(k)");do{printf("t%2d",k);printf("%.6f",x2);printf("%.6f",func(x2));x1=x2;x2=funcTwo(x1);if(x2-x1>0)printf
8、("%.6f",x2-x1);//输出两次迭代的差值elseprintf("%.6f",x1-x2);k++;if(k%3