代码改变世界

计算方法之迭代法求方程根

2013-06-11 12:51  java20130722  阅读(590)  评论(0编辑  收藏  举报
/************************
* 用迭代法求方程
* f(x)=e^(-x)-x+1=0
* 的根
*************************/
#include<stdio.h>
#include<math.h>
#include<conio.h>

float fa(float);
float dd(float);
int main() {
	float x0;
	printf("input data x0 = ");
	scanf("%f", &x0);
	printf("The root of f(x) = 0  is x = \t%f\n", dd(x0));
	return 0;
}
float dd(float a) {
	float x, x0, e;
	int i;
	printf("input eps = ");
	scanf("%f", &e);
	x0 = a;
	printf("x0 = %f\n", x0);
	for (i = 1;; i++) {
		x = fa(x0);
		printf("x(%d)=%f\n", i, x);
		if (fabs(x - x0) < e)
			return x;
		else
			x0 = x;
	}
}
float f(float x) {
	float a;
	a = exp(-x) - x + 1;
	return a;
}
float fa(float x) {
	float a;
	a = exp(-x) + 1;
	return a;
}