资源描述:
《数值分析实验报告(一)-胡志远-1-22》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、数值分析实验报告(一)2010级信息与计算科学-1胡志远20100810010122实验名称熟悉二分法求方程近似根的数值方法。二.实验目的二分法迭代求非线性方程的根三、题目1•已知/(x)=x3+4x2-10=0在[1,2]上有一个实根T,/(I)=-5,/(2)=14用二分法求该实根,要求精度满足条件:四、源程序#include#include#include〃根据X的值计算函数值〃函数f(x)=x*x*x+4*x*x・10doublefunc(doublex){doublevalue;value=x*x*x+
2、4*x*x・10;returnvalue;〃根据参数x的值计算函数f(x)的导数值doubledivFunc(doublex){return3*x*x+8*x;〃二分法计算方程f(x)=0在[1,2]上的跟〃二份迭代结束条件由参数precision精度给出voidbiSectionMethod(doubleprecision){intk=0;〃均分次数doublexl=1.0,x2=2.0;〃区间[1.0,2.0]doublemidx;〃二分之后的值f(x(k+l))“);printf(Htk有根区间k+ldoprintf(nt%3dH,k);prin
3、tf("[%.3f,%.3fT,xl,x2);midx=(xl+x2)/2;printf(H%fmidx);printf(H%.6f',func(midx));if(func(midx)<0)xl=midx;elsex2=niidx;k++;if(k%3==0)〃每次输出4个等用户审查getch();}while(x2-xImprecision);〃区间的长度超过5e-3就一直迭代printf(Ht二分法分区间的次数:%d,所求的根是:%f,k・l,x2);〃牛顿迭代法〃根据初值值xO,在区间[1.0,2.01上迭代求根〃迭代次数由参数precision精
4、度决定voidNewTonMethod(doublex0,doubleprecision){intk=0;〃迭代次数doublexl,x2=x0;printf(Htkx(k)f(x(k))
5、x(k+l)・x(k)「);do{printf(nt%2dn,k);printf(H%.6fx2);printf(”%.6f*,func(x2));xl=x2;x2=x2-func(x1)/divFunc(x1);讦(x2-xl>0)printf(n%.6fx2-xl);〃输li两次迭代的差值elseprintf(”%.6f*,xl-x2);k++;if(k%
6、3==0)〃每次输出4个等用户审查getch();}while(x2-x1>precision
7、
8、x1-x2>precision);printf(ut牛顿迭代初值:%lf,次数:%d,所求的根是:%f,x0,k・l,x2);}〃迭代函数g(x)=(sqrt(10-x*x*x))/2;doublefuncTwo(doublex)return(sqrt(10-x*x*x))/2;〃普通迭代函数voidordinaMethod(doublexO,doubleprecision){intk二0;〃迭代次数doublex1,x2=x0;printf(Htkx(k
9、)f(x(k))
10、x(k+l)・x(k)
11、”);do{printf(Ht%2dH,k);printf(H%.6fx2);printf(H%.6f',func(x2));xl=x2;x2=funcTwo(xl);if(x2-xl>0)printf(n%.6fx2-x1);〃输岀两次迭代的差值elseprintf("%.6f*,xl-x2);k++;if(k%3==0)〃每次输出4个等用户审查getch();}while(x2-x1>precision
12、
13、x1-x2>precision);printf(ut普通迭代初值:%lf,次数:%d,所求的根是:
14、%f,x0,k・l,x2);}〃使用两个跌代值的组合加速跌代〃对迭代函数f(x)=(sqrt(10-x*x*x))/2的加速voidtwoValue(doublex0,doubleprecision){intk=0;〃迭代次数doublexl,x2=x0;printf(Htkx(k)f(x(k))
15、x(k+1)・x(k)
16、”);do{printf(Ht%2d,,,k);printf(n%.6fx2);printf(H%.6ffunc(x2));xl=x2;x2=(funcTwo(xl)+xl)/2;if(x2-xl>0)printf(n%.6fx
17、2-x1)