您的位置:首页 > 其它

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

2017-05-22 10:35 162 查看
#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));

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息