迭代法和埃特金加速法求根

来源:互联网 发布:正规java培训班 编辑:程序博客网 时间:2024/06/05 18:05
#define  _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<math.h>


double p(double x);


void main()


{
double e, x0, x1, y1, z1;
long i, maxi;


printf("请输入x的精度要求:");
scanf("%lf", &e);
printf("请输入迭代初值:");
scanf("%lf", &x1);
printf("请输入最大迭代次数:");
scanf("%ld", &maxi);


printf("k\t x1 \t p1 \t z1 \n");




for (i = 0; i<maxi; i++)


{
x0 = x1;//把本次迭代初值x1暂时存入x0
//y1 = p(x1);
//z1 = p(y1);
//x1 = z1 - pow(y1-z1,2)/ (z1 - 2 * y1 + x0);
x1 = p(x1);
printf("第%ld次\t", i + 1);
printf(" %lf\t", x0);
//printf(" %lf\t", y1);
//printf(" %lf\n", z1);


if (fabs(x1 - x0) <= e)
break;
}


if (i < maxi) {
printf("已完成求迭代");
printf("方程f(x) = 0的根x = %lf \n", x1);
}
else printf("迭代次数超过上限");


system("pause");
}


double p(double x)
{
return(cos(x));
}
原创粉丝点击