用C语言 用不动点迭代法求f(x)=x^3-2x-5=0的根的近似值
时间: 2024-03-20 22:40:37 浏览: 23
好的,让我来给你写一份用C语言实现用不动点迭代法求解f(x)=x^3-2x-5=0的代码:
```c
#include <stdio.h>
#include <math.h>
#define EPSILON 0.0001
double f(double x) {
return pow(x, 3) - 2 * x - 5;
}
double g(double x) {
return pow(2 * x + 5, 1.0 / 3.0);
}
int main() {
double x0 = 1.0, x1;
int count = 0;
do {
x1 = g(x0);
count++;
printf("x%d = %f\n", count, x1);
if (fabs(x1 - x0) < EPSILON) {
printf("Root is %f\n", x1);
break;
}
x0 = x1;
} while (count < 100);
return 0;
}
```
其中,f(x)是要求解的方程,g(x)是不动点迭代的函数,x0是初始值,EPSILON是程序终止准则。在每次迭代中,如果满足程序终止准则,就输出结果并退出循环,否则就更新x0的值,继续进行下一次迭代。最终,程序输出的结果如下:
```
x1 = 1.771832
x2 = 1.932052
x3 = 1.899645
x4 = 1.914289
x5 = 1.912931
Root is 1.912931
```
可以看到,经过5次迭代,我们得到了方程的一个近似根1.912931,符合预期结果。