编写程序,用迭代法求某数a的平方根。已知平方根的迭代法公式为x1=1⼀2(x0+a⼀x0)

怎么编写程序,怎么注释。求解答、、、
2024-12-05 01:46:51
推荐回答(3个)
回答1:

/*

√2 ≈ 1.4142

√3 ≈ 1.7321

√4 ≈ 2.0000

√5 ≈ 2.2361

√6 ≈ 2.4495

√7 ≈ 2.6458

√8 ≈ 2.8284

√9 ≈ 3.0000

√10 ≈ 3.1623

√11 ≈ 3.3166

√12 ≈ 3.4641

√13 ≈ 3.6056

√14 ≈ 3.7417

√15 ≈ 3.8730

√16 ≈ 4.0000

√17 ≈ 4.1231

√18 ≈ 4.2426

Press any key to continue

*/

#include 
#include 

double Square_root(double dnum) {
double xo = 1.0,xl;
double EPS = 1E-6;
if(dnum < 0.0) dnum = -dnum;
while(fabs(xl * xl - dnum) > EPS) {
xl = (xo + dnum/xo)/2.0;
xo = xl;
}
return xl;
}

int main() {
double dnum;
for(dnum = 2.0; dnum <= 18.0; ++dnum)
printf("√%.0lf ≈ %.4lf\n",dnum,Square_root(dnum));
return 0;
}

回答2:

x0=x1是用x0暂存x1在第n-1次迭代时的值,用于后面计算第n次迭代与n-1此迭代的差值,如果差值满足fabs(x0-x1)>1e-5,迭代结束.即,求出x1的近似值!

回答3:

public double 平方根(double a) //建立个函数用迭代法来算平方根
{double x0=1; //迭代的x0从1开始
int n=1; //计算迭代次数用
while(a!=1/(2*(x0+n/x0))) //判断x0是否为a的平方根
{
n++; //不是则继续迭代并且迭代次数+1
x0=1/(2*(x0+n/x0); //将迭代结果累积
}
return x0; //返回平方根的值

}
经测试不能用请等待别人答案吧