#include <stdio.h>
#include <math.h>
double fun(int a, double b)
{
double ave = (b+a/b)/2;
return ave;
}
int main()
{
int a;
scanf("%d", &a);
double b/*猜测的数字*/, ave/*(猜测的数字b)和(数据源a除以b)的平均数通过递归最终能使ave==sqrt(a)*/;
b = a/10;//随意赋值但越接近sqrt(a)越好!
ave = fun(a, b);
for(int i = 0; sqrt(a) != ave; i++)
{
ave = fun(a, b);
b = ave;
if(i >= 128)
{
break;
}
}
printf("%f\n%f", ave, sqrt(a));
return 0;
}
牛顿法
最新推荐文章于 2024-01-04 15:03:54 发布