C++高手进——用迭代法求x=根号a.求平方根的迭代公式为X(n+1)=(1/2)*(Xn+a/Xn)的程序纠错。
//用迭代法求x=根号a。求平方根的迭代公式为X(n+1)=(1/2)*(Xn+a/Xn)//要求前后两次求出的x的差的绝对值小于10的-5次方。//Myprogram:...
//用迭代法求x=根号a。求平方根的迭代公式为X(n+1)=(1/2)*(Xn+a/Xn)
//要求前后两次求出的x的差的绝对值小于10的-5次方。
//My program:
(1)
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
double x,a,t;
cin>>a;
x=a/2;
do
{
t=x;
x=(1/2)*(x+a/x);
}while(fabs(x-t)>=1e-5);
cout<<"the square root of "<<a<<" is "<<x<<endl;
return 0;
}
(2)
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
double x,a;
cin>>a;
x=a/2;
while(fabs(sqrt(x*x-a))>=1e-5)//这里的条件是用现在的x表示以前的x,再让两数相减得到的
x=(1/2)*(x+a/x);
cout<<"the square of "<<a<<" is "<<x<<endl;
return 0;
}
这两个为什么答案总是不对?请高手指教。 展开
//要求前后两次求出的x的差的绝对值小于10的-5次方。
//My program:
(1)
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
double x,a,t;
cin>>a;
x=a/2;
do
{
t=x;
x=(1/2)*(x+a/x);
}while(fabs(x-t)>=1e-5);
cout<<"the square root of "<<a<<" is "<<x<<endl;
return 0;
}
(2)
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
double x,a;
cin>>a;
x=a/2;
while(fabs(sqrt(x*x-a))>=1e-5)//这里的条件是用现在的x表示以前的x,再让两数相减得到的
x=(1/2)*(x+a/x);
cout<<"the square of "<<a<<" is "<<x<<endl;
return 0;
}
这两个为什么答案总是不对?请高手指教。 展开
3个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询