C语言任务快速采纳系列(1)

来源:百度知道 编辑:UC知道 时间:2024/06/02 17:00:21
已知f(x)=cos(x)-x; 使用牛顿迭代法求解方程f(x)=0的近似解,要求精确到1e-6.
(注意:自己使用求出来的x值代入f(x)进行验证结果是否正确。)

算法分析:f(x)的Newton代法构造方程为:x(n+1) = xn - (cos(xn)-xn) / (-sin(xn)-1)。
#include<stdio.h>

double F1(double x); //要求解的函数
double F2(double x); //要求解的函数的一阶导数函数
double Newton(double x0, double e);//通用Newton迭代子程序
int main()
{
double x0 = 3.14159/4;
double e = 10E-6;

printf("x = %f\n", Newton(x0, e));
getchar();
return 0;
}
double F1(double x) //要求解的函数
{
return cos(x) - x;
}
double F2(double x) //要求解的函数的一阶导数函数
{
return -sin(x) - 1;
}
double Newton(double x0, double e)//通用Newton迭代子程序
{
double x1;

do
{
x1 = x0;
x0 = x1 - F1(x1) / F2(x1);
} while (fabs(x0 - x1) > e);

return x0; //若返回x0和x1的平均值则更佳
}