已知f(x)=cos(x)-x,使用牛顿迭代法求解方程法(x)=0的近似解,要求精确到10-6次方。
提示:自行估算迭代起始的x值,并且使用求出的x值代入fx)进行验证结果是否正确。
f'(x)=-sin(x)-1 ×0=1
#include <stdio.h>
#include <math.h>
double f(double x) {
return cos(x) - x;
}
double df(double x) {
return -sin(x) - 1;
}
double solve() {
double x0 = 0.5, x1;
while (1) {
x1 = x0 - f(x0) / df(x0);
if (fabs(x1 - x0) < 1e-6) {
break;
}
x0 = x1;
}
return x1;
}
int main() {
double x = solve();
printf("The solution is: %lf\n", x);
printf("Verification: %lf\n", f(x));
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: