迭代法求平方根,【c++】#include <iostream>

#include <iostream> #include <math.h> using namespace std; void main() { double x, a; cout <<"please input a value:\n"; cin >>a; x = a/2; while(fabs((x-a/x)/2)>1e-7) x=(x+a/x)/2; cout <<a <<"的平方根是" <<x <<endl; } 帮忙详解一下

while(fabs((x-a/x)/2)>1e-7)
x=(x+a/x)/2;
你可能比较有问题应该是在while里面,
fabs的功能:求浮点数((x-a/x)/2)的绝对值,计算|((x-a/x)/2)|, 当((x-a/x)/2)不为负时返回((x-a/x)/2),否则返回-((x-a/x)/2);
1e-7是精确值,循环条件是((x-a/x)/2)的绝对值不小于1e-7。
算式是牛顿迭代法。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-14
求a的平方根x1,给定预报值x0,校正量Δx,矫正值x1=x0+Δx,使得(x0+Δx)^2≈a,则舍弃高阶无穷小量Δx^2,有:x0^2+2*x0*Δx=a,则x1=x0+Δx=(x0+a/x0)/2;反复实施预报矫正手续,直到x0=a/x0,

迭代法求平方根,【c++】#include <iostream>
程序前面的定义语句就不解释了,关键是x=(x+a\/x)\/2的迭代部分。这里a应当是被开方数,x的初始值取多少都可以,然后带入这个式子进行运算。定义这个数列 A(n+1)=(A(n)+a\/A(n))\/2.(式子1)显然A(n)就是经过n次迭代后的值。然后可以再设B(n)=a^2-A(n)^2.这样B(n)就表示n次...

迭代法求平方根,【c++】#include <iostream>
1e-7是精确值,循环条件是((x-a\/x)\/2)的绝对值不小于1e-7。算式是牛顿迭代法。

C++ 调试下这个用迭代法求平方根的程序
include <iostream>using namespace std;inline double absolute(double x){ if(x<0) x=-x; return x;}\/\/使用牛顿迭代法求取开方值~~~int square(double y, double resolution, double &x){ if(y<0) { cerr<<"**暂不支持复数域的开方"<<endl; return 1; } if(y==0) return...

C++的题目:计算π与迭代法求平方根
include <iostream>#include <iomanip>int main(){ double a, x0, x1, f; std::cout << "请输入一个非负数:"; std::cin >> a; while (a < 0) { std::cout << a << "不能开平方!" << '\\n'; std::cin >> a; } x1 = a \/ 2; do ...

C++用迭代法求a平方根
include<iostream>#include<cmath>using namespace std;double mysqrt(double a,double x0){ double x1,y ;x1=(x0+a\/x0)\/2 ; if(fabs(x1-x0)>1e-5) y=mysqrt(a,x1 );\/\/函数调用参数怎么能加类型呢else y=x1;return y;}int main(){double x;cout<<"input x: ";cin>>x; ...

编写一个 c++程序,用迭代法求 a 的平方根 a 的值 从键盘输入
include<iostream>#include<stdlib.h>using namespace std;struct stu{ int socol[30];};int main(){ double a, x0, x1; printf("Input a:\\n"); scanf("%lf", &a);\/\/因为a是double型数据,所以要用%lf,而不是%f if (a < 0) printf("Error!\\n"); else { x0 = a \/...

C++编程序 用迭代法求平方根
while那里是大于而不是小于; #include#include#includeusing namespace std;int main(void){ double a,x0,x1; couta; while (a

C语言递归算法表示迭代求平方根的一个问题
include <iostream> using namespace std;int main(){ int i;double x[2]={1,0},a;cout <<"\\n\\n\\t请输入你要开平方的数:";cin >>a;for (i=0;fabs(x[i]-x[1-i])>=1e-5;i=1-i){ x[1-i]=(x[i]+a\/x[i])\/2;} cout<<"\\n\\n\\t它的平方根为:"<<x[i]<<"...

C++调用平方根函数问题
用迭代法求某数a的平方根。已知求平方根的迭代公式为:x n+1 = (xn + a \/ xn)\/ 2 要求前后两次求出的差的绝对值小于10-5。算法如下:① 设定一个x的初值x0 ;(在如下程序中取x0=a\/2,通过迭代公式求出x1,可以肯定与真正的平方根相比,误差很大。)② 用上述公式求出x的下一个值 x1 ...

c++迭代法求平方根,帮忙改错!
include "stdio.h"int main(){ double a;double x=1.0;printf("please input a double\\n");scanf("%lf",&a);if (a<0) printf("error!\\n");else while(x*x-a<-0.00001||x*x-a>0.00001){ x=(a\/x+x)\/2.0;} printf("%lf\\n",x);return 0;} ...

相似回答
大家正在搜