用迭代法求 。求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001。 输出保留3位小数


#include <stdio.h>
#include<math.h>
int main()
{
  float x;
  float a,b;
  scanf("%f",&x);
  b = 1.0;
  while(fabs(b-a) > 0.00001)
  {
     a = b;
  b = (a+x/a)/2;
  }
  printf("%0.3f\n",b);
  return 0;
}
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 可以使用以下代码来用平方根: a = float(input("请输入一个正数:")) x0 = a / 2 # 初始值可以取a/2 x1 = (x0 + a / x0) / 2 while abs(x1 - x0) > 0.00001: x0 = x1 x1 = (x0 + a / x0) / 2 print("平方根为:{:.3f}".format(x1)) 其中,输入一个正数a,初始值x0可以取a/2,然后根据公式x[n+1]=(x[n]+a/x[n])/2,不断计算x1,直到前后两次绝对值小于0.00001,即可得到平方根。最后输出结果保留3位小数。 ### 回答2: 是一种通过逐步逼近解来解问题的方,常用于解决数值计算中的各种问题。平方根解也可以通过实现。 公式 a 的平方根公式为: x[n+1]=(x[n]+a/x[n])/2,其中 x[n] 为第 n 次代的结果,x[n+1] 为第 n+1 次代的结果。 具体解过程如下: 1. 初始化。设置初始值 x[0] = a。 2. 代。根据公式进行代计算,直到前后两次绝对值少于0.00001。即 abs(x[n+1]-x[n])<0.00001。 3. 输出结果。输出最终结果,并保留3位小数。 下面是实现过程的具体步骤: # 初始化 a = float(input("请输入一个非负实数:")) x0 = a x1 = (x0 + a / x0) / 2 n = 1 # 代 while abs(x1 - x0) >= 0.00001: x0 = x1 x1 = (x0 + a / x0) / 2 n += 1 # 输出结果 print("代次数:", n) print("平方根:%.3f" % x1) 参考代码中,通过 input() 函数获取用户输入的实数 a,并将其赋值给初始值 x0。然后使用 x1 = (x0 + a / x0) / 2 计算第一次代的结果 x1。接着,使用 while 循环进行代计算,每次将 x1 赋值给 x0,再通过 x1 = (x0 + a / x0) / 2 下一个值 x1。直到满足前后两次小于0.00001时,循环停止。最后,使用 print() 函数输出结果,包括代次数和平方根的值,其中平方根的值按照要求保留3位小数。 以上就是使用平方根的方的优点是简单易懂,容易实现,但可能会受到初始值的影响。如果初值选择不好,可能需要进行较多的代次数才能达到精度要求。因此,需要在实际使用中根据问题的具体情况,选择合适的代方和初值。 ### 回答3: 平方根是一种常见的数学运算,使用可以方便地平方根是一种数值计算的方,通过不断逼近目标值来得到近似解。 根据公式a的平方根公式为:x[n+1]=(x[n]+a/x[n])/2,其中x[0]为估计值,x[n+1]表示第n+1次代的值。 下面简单讲解一下如何使用平方根。 1.选择一个合适的初始值x[0],比如a的平方根的一个估计值。 2.利用公式x[n+1]=(x[n]+a/x[n])/2,依次带入x[0],x[1],x[2]…计算x[n]的值,直到满足前后两次绝对值少于0.00001为止。 3.输出结果,保留3位小数。 例如,a=2的平方根。我们可以选择x[0]=1作为初始值。 第一次代:x[1]=(x[0]+2/x[0])/2=1.5 第二次代:x[2]=(x[1]+2/x[1])/2=1.4166666 第三次代:x[3]=(x[2]+2/x[2])/2=1.4142157 第四次代:x[4]=(x[3]+2/x[3])/2=1.4142136 前后两次绝对值为|x[4]-x[3]|=0.0000021,小于0.00001,满足要求。 因此,结果为1.414,保留3位小数即为1.414。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值