您的位置:首页 > 编程语言 > C语言/C++

不动点迭代法 一元非线性方程求根 C语言实现

2017-12-12 20:38 549 查看

不动点迭代法 一元非线性方程求根 C语言实现

标签:计算方法实验

/*
本实验用迭代法求方程f(x) = e^(-x) - x + 1的根。
*/
#include <stdio.h>
#include <math.h>

#define maxrept 1000  //最大迭代次数

double fa(double x){  //迭代函数fa(x)
return exp(-x) + 1;
}

int main(){
double x1, d;
double x0 = 100;  //迭代初值x0
double eps = 0.0005;  //求解精度eps
int k = 0;  //迭代次数

do{
k++;
x1 = fa(x0);
printf("%d    %f\n", k, x1);
d = fabs(x1 - x0);
x0 = x1;
}while(d >= eps && k < maxrept);
if(k < maxrept)  printf("the root of f(x) = 0 is x = %f, k = %d\n", x1, k);
else  printf("the iteration is failed!\n");  //要求迭代公式收敛,否则会出现溢出

return 0;
}


实验结果:

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