上机报告-二分法史蒂芬森迭代割线法

上传人:日度 文档编号:164135618 上传时间:2021-01-26 格式:DOC 页数:8 大小:110KB
返回 下载 相关 举报
上机报告-二分法史蒂芬森迭代割线法_第1页
第1页 / 共8页
上机报告-二分法史蒂芬森迭代割线法_第2页
第2页 / 共8页
上机报告-二分法史蒂芬森迭代割线法_第3页
第3页 / 共8页
上机报告-二分法史蒂芬森迭代割线法_第4页
第4页 / 共8页
上机报告-二分法史蒂芬森迭代割线法_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《上机报告-二分法史蒂芬森迭代割线法》由会员分享,可在线阅读,更多相关《上机报告-二分法史蒂芬森迭代割线法(8页珍藏版)》请在金锄头文库上搜索。

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-aep,则返回主程序,x作为近似根,否则转4; 4)若,则,否则; 5)转2。 牛顿迭代法: 1)输入初始值,精度要求e

3、p,允许最大迭代次数; 2)k=1,G=; 3)若ep,则停止计算,迭代中断,否则计算 4)若,则为近似解,返回主程序。否则计算 5)若,则停止计算,迭代发散,否则转3。2.割线法: 1)输入初始值,精度要求ep,允许的最大迭代次数; 2)k=1,G=; 3)若ep,则停止计算,迭代中断,否则计算 4)若,则为近似解,返回主程序。否则计算 5)若,则停止计算,迭代发散,否则转3。 史蒂芬森加速迭代法: 1)输入初始值,精度要求ep,允许的最大迭代次数; 2)计算; 3)若ep,则停止计算,迭代中断,否则计算 4)若,则近似解,返回主程序。否则计算 5)若,则停止计算,迭代发散,否则转3。程序清

4、单及运行结果1. 二分法和牛顿迭代法:1)二分法:#includedouble f(double x)double f1;f1=x*x*x-6*x-1;return(f1);double df(double a,double b,double x,double ep)double c;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()double a,b,x,ep;a=0.0;b=5.0;ep=0.000001;x=0.0;x=df(a,b,x,ep);printf(the

5、 root of f(x) is %fn,x);执行结果:2) 牛顿迭代法:#includedouble f(double x)double al;al=x*x*x-3*x-1;return(al);double fl(double x)double bl;bl=3*x*x-3;return(bl);double nt(double x,double ep,int flag,int nmax)int k;double x0,g;flag=1;k=1;while(fabs(x-x0)ep)&(knmax)x0=x;g=fl(x0);if(fabs(g)ep)flag=0;break;x=x0-f

6、(x0)/g;k=k+1;return(x);main()int flag,nmax;double x,ep;ep=0.000001;nmax=200;x=2;x=nt(x,ep,flag,nmax);if(flag=0)printf(the newton method is failure);else printf(the root of f(x) is %fn,x);执行结果:2. 史蒂芬森加速迭代法和割线法1)史蒂芬森加速迭代法:#include#includedouble f(double x)double a1;a1=x*x*x+4*x*x-10;return(a1);double

7、nt(double x,double ep,int flag,int nmax)int k;double x0,g;flag=1;k=1;while(fabs(x-x0)ep)&(knmax)x0=x;if(fabs(g)=nmax) flag=0;return(x);void main()int flag,nmax;double x,ep;ep=0.000001;nmax=200;x=2;x=nt(x,ep,flag,nmax);if(flag=0) printf(the method is failure);else printf(the root of f(x) is %fn,x);执行

8、结果:2)割线法:#include#includedouble f(double x)double a1;a1=x*x*x+4*x*x-10;return(a1);double nt(double x1,double x2,double ep,int nmax)int k;double x3;k=1;while(fabs(x3-x2)ep)&(knmax)x3=x2-f(x2)/(f(x2)-f(x1)*(x2-x1);x1=x2;x2=x3;k=k+1; return(x3);void main()int nmax;double x1,x2,x3,ep;ep=0.000001;nmax=20

9、0;x1=1.6;x2=1.5;x3=nt(x1,x2,ep,nmax); printf(the root of f(x) is %fn,x3);执行结果:3. 对分法和一般迭代法求解方程一般迭代法:#include#includedouble f(x)double x;double a1;a1=x*x*x+4*x*x-10;return(a1);double f1(x)double x;double b1;b1=3*x*x+4*x;return(b1);double nt(x,ep,flag,nmax)double x,ep;int flag,nmax;int k;FILE *fp;int

10、i;double x0,g;flag=1;k=1;while(fabs(x-x0)ep)&(knmax)fp=fopen(diedai.xls,w); x0=x;g=f1(x0);if(fabs(g)ep)flag=0;break;for(i=0;i=nmax) flag=0;return(x);void main()int flag,nmax;double x,ep;ep=0.000001;nmax=200;x=2;x=nt(x,ep,flag,nmax);if(flag=0) printf(the newton method is failure);else printf(the root

11、 of f(x) is %fn,x);对分法:#includedouble f(x)double x; double f1; f1=x*x*x+4*x*x-10; return(f1);double df(a,b,x,ep)double a,b,x,ep; double c;FILE *fp;int i; c=b-a; while(c=ep) fp=fopen(erfenfa.xls,w);for(i=0;i0) a=x; else b=x; c=b-a;printf(%14.8fn,x); fprintf(fp,%d%15.8fn,i,x); fclose(fp); x=(a+b)/2; return(x);void main() double a,b,x,ep; a=1;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号