我需要在 C 中求解这个超越方程:
x = 2.0 - 0.5sen(x)
我试过这个:
double x, newx, delta;
x = 2.0 - 0.5;
newx = sin(x);
delta = fabs(newx * x);
printf("%f", delta);
这是对的?
谢谢!
最简单的解决方案是迭代您给出的公式,直到它收敛到解决方案。这是求解类型方程的定点迭代方法x = f(x)
。
#define TOLERANCE 1e-8
#define MAX_ITER 50
double solve_equation() {
double x = 1.0; /* 1.0 is our initial guess */
double x_old;
int i = 0; /* iteration counter */
do {
x_old = x;
x = 2 - 0.5*sin(x); /* magic! */
i++;
} while (fabs(x-x_old)/x > TOLERANCE && i < MAX_ITER);
return x;
}
在这种特殊情况下,该方法收敛速度很快,迭代次数的上限是不必要的。答案原来是 1.50121007326。