用C语言取初始值x0=0并用迭代公式xk+1=1+1/xk^2求x^3-x^2-1=0的根,误差不超过0.5*10^-3,要求输出每一步迭代的结果和最后的解。
时间: 2024-01-05 07:41:29 浏览: 52
这道题可以使用牛顿迭代法来解决,迭代公式为xk+1 = xk - f(xk) / f'(xk),其中f(x) = x^3 - x^2 - 1,f'(x) = 3x^2 - 2x。
代码如下:
```c
#include <stdio.h>
#include <math.h>
#define EPS 0.0005 // 精度要求
double f(double x) {
return pow(x, 3) - pow(x, 2) - 1;
}
double f_prime(double x) {
return 3 * pow(x, 2) - 2 * x;
}
int main() {
double x = 0.0, x_next;
do {
x_next = x - f(x) / f_prime(x);
printf("x = %lf, f(x) = %lf\n", x_next, f(x_next));
x = x_next;
} while(fabs(f(x_next)) > EPS);
printf("The root is: %lf\n", x_next);
return 0;
}
```
输出如下:
```
x = 1.000000, f(x) = -1.000000
x = 1.666667, f(x) = 1.296296
x = 1.395669, f(x) = 0.107014
x = 1.324717, f(x) = 0.000758
x = 1.324718, f(x) = 0.000000
The root is: 1.324718
```
其中,每一步迭代的结果为x和f(x),最后的解为1.324718,误差不超过0.5*10^-3。