欢迎来到天天文库
浏览记录
ID:30125778
大小:127.04 KB
页数:8页
时间:2018-12-27
《上机报告-二分法,史蒂芬森迭代,割线法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、计算方法上机实习报告[题目及目的要求]1.用二分法求方程在[0,5]上根的近似值。用牛顿迭代法求在附近的实根。2.完成史蒂芬森迭代加速法和割线法的子程序,并利用方程对比对分法与一般迭代法。[方法原理说明]1.二分法和牛顿迭代法:二分法是逐次把有根区间分半,舍弃无根区间而保留有根区间的一种逼近根的方法。在这个过程中有根区间的长度以2的幂次方减少,当有根区间的长度小于给定的精度时,其中点就作为根的近似值。牛顿迭代法的迭代格式为:初值(k=0,1,2....)显然,牛顿迭代格式能够迭代下去必须要求的导数不能为0.当某个或很小时,迭代中断;当满足一定条件时,牛顿迭代具有平
2、方收敛速度。该方法对初值要求较高,若选取不当,则可能发散,若选取的好,则收敛很快。2.史蒂芬森迭代加速法和割线法迭代法就是通过一个迭代格式进行反复迭代以产生一个序列。若这个序列收敛于方程的根,就称这个迭代格式收敛。史蒂芬森迭代加速法的迭代格式为,(k=0,1,2....)割线法与牛顿迭代法一样,即在根的某个邻域内,有直至二阶的连续导数,且,则在邻域内选取初值,迭代均收敛。割线法的迭代格式为初值(k=2,3....)[计算步骤]1.二分法:1)给定a,b及精度要求ep;2)计算x=(a+b)/2及;3)若b-a3、,否则;5)转2。牛顿迭代法:1)输入初始值,精度要求ep,允许最大迭代次数;2)k=1,G=;3)若4、主程序。否则计算5)若,则停止计算,迭代发散,否则转3。[程序清单及运行结果]1.二分法和牛顿迭代法:1)二分法:#includedoublef(doublex){doublef1;f1=x*x*x-6*x-1;return(f1);}doubledf(doublea,doubleb,doublex,doubleep){doublec;c=b-a;while(c>=ep){x=(a+b)/2;if(f(a)*f(x)>0)a=x;elseb=x;c=b-a;}x=(a+b)/2;return(x);}main(){doublea,b,x,ep;a5、=0.0;b=5.0;ep=0.000001;x=0.0;x=df(a,b,x,ep);printf("therootoff(x)is%f",x);}执行结果:2)牛顿迭代法:#includedoublef(doublex){doubleal;al=x*x*x-3*x-1;return(al);}doublefl(doublex){doublebl;bl=3*x*x-3;return(bl);}doublent(doublex,doubleep,intflag,intnmax){intk;doublex0,g;flag=1;k=1;while6、((fabs(x-x0)>ep)&&(k7、蒂芬森加速迭代法:#include#includedoublef(doublex){doublea1;a1=x*x*x+4*x*x-10;return(a1);}doublent(doublex,doubleep,intflag,intnmax){intk;doublex0,g;flag=1;k=1;while((fabs(x-x0)>ep)&&(k8、=k+1;
3、,否则;5)转2。牛顿迭代法:1)输入初始值,精度要求ep,允许最大迭代次数;2)k=1,G=;3)若4、主程序。否则计算5)若,则停止计算,迭代发散,否则转3。[程序清单及运行结果]1.二分法和牛顿迭代法:1)二分法:#includedoublef(doublex){doublef1;f1=x*x*x-6*x-1;return(f1);}doubledf(doublea,doubleb,doublex,doubleep){doublec;c=b-a;while(c>=ep){x=(a+b)/2;if(f(a)*f(x)>0)a=x;elseb=x;c=b-a;}x=(a+b)/2;return(x);}main(){doublea,b,x,ep;a5、=0.0;b=5.0;ep=0.000001;x=0.0;x=df(a,b,x,ep);printf("therootoff(x)is%f",x);}执行结果:2)牛顿迭代法:#includedoublef(doublex){doubleal;al=x*x*x-3*x-1;return(al);}doublefl(doublex){doublebl;bl=3*x*x-3;return(bl);}doublent(doublex,doubleep,intflag,intnmax){intk;doublex0,g;flag=1;k=1;while6、((fabs(x-x0)>ep)&&(k7、蒂芬森加速迭代法:#include#includedoublef(doublex){doublea1;a1=x*x*x+4*x*x-10;return(a1);}doublent(doublex,doubleep,intflag,intnmax){intk;doublex0,g;flag=1;k=1;while((fabs(x-x0)>ep)&&(k8、=k+1;
4、主程序。否则计算5)若,则停止计算,迭代发散,否则转3。[程序清单及运行结果]1.二分法和牛顿迭代法:1)二分法:#includedoublef(doublex){doublef1;f1=x*x*x-6*x-1;return(f1);}doubledf(doublea,doubleb,doublex,doubleep){doublec;c=b-a;while(c>=ep){x=(a+b)/2;if(f(a)*f(x)>0)a=x;elseb=x;c=b-a;}x=(a+b)/2;return(x);}main(){doublea,b,x,ep;a
5、=0.0;b=5.0;ep=0.000001;x=0.0;x=df(a,b,x,ep);printf("therootoff(x)is%f",x);}执行结果:2)牛顿迭代法:#includedoublef(doublex){doubleal;al=x*x*x-3*x-1;return(al);}doublefl(doublex){doublebl;bl=3*x*x-3;return(bl);}doublent(doublex,doubleep,intflag,intnmax){intk;doublex0,g;flag=1;k=1;while
6、((fabs(x-x0)>ep)&&(k7、蒂芬森加速迭代法:#include#includedoublef(doublex){doublea1;a1=x*x*x+4*x*x-10;return(a1);}doublent(doublex,doubleep,intflag,intnmax){intk;doublex0,g;flag=1;k=1;while((fabs(x-x0)>ep)&&(k8、=k+1;
7、蒂芬森加速迭代法:#include#includedoublef(doublex){doublea1;a1=x*x*x+4*x*x-10;return(a1);}doublent(doublex,doubleep,intflag,intnmax){intk;doublex0,g;flag=1;k=1;while((fabs(x-x0)>ep)&&(k8、=k+1;
8、=k+1;
此文档下载收益归作者所有