实验五 二分法、简单迭代法、牛顿迭代法
实验目的:
比较迭代法,二分法和牛顿迭代法计算方程的根的准确度。 实验内容:
分别用下列方法求f(x)=x3-3x-1=0在x0=2附近的根。根的准确值为x*=1.87938524?,要求准确到四位有效数字,并对比各种算法的计算量。
(1) 二分法;(2)简单迭代法;(3)牛顿迭代法
实验流程图:
实验源程序: #include
#define xx 1.87938524 //x的标准值
static int ER=0,NIU=0,JIANDAN=0;//三种方法的计算次数统计变量
double Abs(double x) //求绝对值函数 { if(x>=0) return x;
else return -x; }
double FD(double x)
{return 3*x*x-3;} //求F(x)的导数
double F(double x)
{return ((x*x*x)-(3*x)-1);}//F(x)
double XF(double x) //x的表达式 {double w; double y=1.0/3;
w=pow(((x*3)+1),y); return w; }
double DD (double x,double u) //简单迭代法 {
int n=1; double D[1000],e; D[0]=x;
do{
D[n]=XF(D[n-1]); e=Abs(D[n-1]-D[n]); n++;JIANDAN++;
}while((e>u)&&(n<50));//精度达到要求或迭代次数等于50时输出x e=D[n-1]; return e; }
/*********************************************************/ double N (double x,double u) {
int n=1; double D[1000],e; D[0]=x; do{NIU++;
D[n]=D[n-1]-(F(D[n-1])/FD(D[n-1])); e=Abs(D[n-1]-D[n]); n++;
}while((e>u)&&(n<50));
e=D[n-1]; //牛顿迭代法 return e;
相关推荐: