#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));
}
#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));
}