XDOJ迭代法求根
题目:迭代法求根(1)
时间限制:1S
内存限制:10000Kb
问题描述:
用迭代法求 ,求平方根的迭代公式为
要求前后两次求出的x的差的绝对值小于 。
输入说明:
输入浮点数a。
输出说明:
输出一个浮点数x,小数点后保留5位小数。
输入样例:
3
输出样例:
1.73205
第一个是错误答案
#include<bits/stdc++.h>
using namespace std;
int main(){
double a,x1=1,x2=0;
scanf("%lf",&a);
while(fabs(x2-x1)>=0.00001){
x2=(x1+a/x1)/2;
x1=x2;
}
printf("%.5lf\n",x2);
return 0;
}
下面是正确的代码
#include <stdio.h>
int main()
{
double a,x,t;
scanf("%lf",&a);
t=a;
x=(a+1)/2;
while(t-x>=0.00001)
{
t=x;
x=(x+a/x)*0.5;
}
printf("%.5lf",x);
return 0;
}
这是第一份代码错误的结果
两个代码有什么区别吗,精度问题?