C#语言自定义平方根函数

求一个数的平方根。

要求:不使用系统函数,求出一个数的平方根(要求误差值在0.0001)。按照如下的算法。

如果一个数为x 假设它的平方根为y, 如果 y*y的结果和x相差大于0.0001,就继续假设下一个值。应该如何猜下一个值呢?

用x除y的商结果z, 再求(y+z)的平均值作为新的平方根的猜测值。
示例如下,假设要求3的平方根,假设为1.5

X

猜测平方根y

结果z

下一个猜测值

3

1.5

3/1.5=2

(1.5+2)=1.75

3

1.75

3/1.75=1.7143

这时1.7143*1.7143=2.9388和3的差距还有

3-2.9388=0.0612所以继续这个猜测过程,直到差距在0.0001这个可接受的范围为止。

这个算法被称为牛顿迭代法。

class MySqrt
  {
      public const double diff=0.0001;
      public static double GetSqrt(double n)
      {
          double s = n / 2; //假设的平方根初值 
          while (NotFit(s,n))
          {
              s = ((n / s) + s) / 2;

          }
          return s;
      }
      ///


      /// 判断是否符合要求的误差范围
      ///

      /// 平方根
      /// 目标数
      /// 假为合适的值,真为不合适
          public static bool NotFit(double num,double n){
             double r= num*num;
             double d = Math.Abs(n - Math.Abs(r));
              if(d>diff){
                   return true;
              }
             return false;
          }
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值