迭代法和埃特金加速法求根
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));
}
#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));
}
相关文章推荐
- 99、插值法,函数逼近,曲线拟和,数值积分,数值微分,解线性方程组的直接方法,解线性方程组的迭代法,非线性方程求根,常微分方程的数值解法
- C 迭代法求开方 牛顿迭代法求根近似值
- 斯特芬森加速迭代法(Steffensen)-埃特金方法(Aitken) 一元非线性方程求根 C语言实现
- 4.用二分发,迭代法,牛顿法求方程.
- 迭代法
- 迭代法
- 迭代法
- 迭代法 递归 区别
- 方程求根问题
- poj 3111 迭代法
- GSL求根2
- 迭代法求最大公约数
- Fib数列用迭代法时间超限
- 方程求根!
- 迭代法求图像的最佳阀值
- URAL 1153. Supercomputer 二分求根
- 图像的二值化之大津法和迭代法
- 迭代法解题课后
- leetcode: Path Sum II 迭代法
- Javascript 迭代法实现数组多条件排序