求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n])要求前后两次求出的得差的绝对值少于0.00001。
求平方根的迭代公式为:X[n+1]=1/2(X[n]+a/X[n])要求前后两次求出的得差的绝对值少于0.00001。输出保留3位小数...
求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n])要求前后两次求出的得差的绝对值少于0.00001。
输出保留3位小数 展开
输出保留3位小数 展开
4个回答
展开全部
//////////因为这个格式对任意的初始值都是收敛的,所以我把初始值选择为1;
//////下面是代码,在codeblocks上编译通过,并且结果正确。
#include <stdio.h>
double cal_sqrt(double a)
{
double x=1;
double y=1.0/2*(x+a/x);
while(fabs(y-x)>1e-5)
{
x=y;
y=1.0/2*(x+a/x);
}
return y;
}
int main()
{
double a=4;
double b=cal_sqrt(a);
printf("%.3lf",b);
return 0;
}
2016-09-19
展开全部
#include <stdio.h>
#include<math.h>
double cal_sqrt(double a)
{
double x=1;
double y=1.0/2*(x+a/x);
while(fabs(y-x)>1e-5)
{
x=y;
y=1.0/2*(x+a/x);
}
return y;
}
int main()
{
double a;
scanf("%lf",&a);
double b=cal_sqrt(a);
printf("%.3lf",b);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
float x;
float a,b;
cin>>x;
b=2;
a=1;
while(fabs(b-a)>0.00001)
{
a=b;
b=(a+x/a)/2;
}
cout<<fixed<<setprecision(3)<<b;
system("pause");
return 0;
}
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
float x;
float a,b;
cin>>x;
b=2;
a=1;
while(fabs(b-a)>0.00001)
{
a=b;
b=(a+x/a)/2;
}
cout<<fixed<<setprecision(3)<<b;
system("pause");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么是fabs(y-x)>1e-5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询