zoukankan      html  css  js  c++  java
  • 求平方根的算法

    from http://blog.csdn.net/redleaves/archive/2003/06/06/6449.aspx

    1.b=a/2;
    while (abs(b*b-a)>e)  // e为一个很小的数,指明了算法的精度
     b=(b+a/b)/2;

    2.
    条件:N(N+2*Q*R) <=Y
    n进制时,Q=n;R为上一次的结果;N为要试的满足条件的最大的值;Y为计算到这时的余数
    (注意:补位时要看进制,如果为10进制,则应补100,即10*10;二进制时应补4,即2*2)

    例1:10开方根(10进制)
    sqrt(10)=3.1622776601683793319988935444327

      3. 1  6  2         
    )10
      9           <=N(N+2*Q*R)=3*(3+2*10*0)=9<10 上 3
      1 00
        61        <=N(N+2*Q*R)=1*(1+2*10*3)=61<100 上 1
        39 00
        37 56     <=N(N+2*Q*R)=6*(6+2*10*31)=3756<3900 上 6
         1 44 00
         1 26 44  <=N(N+2*Q*R)=2*(2+2*10*316)=12644<14400 上 2
           17 56
       ....
       ....

    例2:10开方根(2进制)
    N(N+2*Q*R)
    由于:
     N=0或1
     Q=2
     R=未知
    所以:
     N(N+2*Q*R) <=> R<<2+1

    (10)D=(1010)B
    sqrt(10)=(3.1622776601683793319988935444327)D=(0011.0010 1001 1000)B
      1  1. 0  0  1  0              
    )10 10
      1                    <=R<<2+1=0<<2+1=0+1=1<10 上 1
      1 10
      1 01                 <=R<<2+1=1<<2+1=100+1=101<110 上 1
         1 00
            0              <=R<<2+1=11<<2+1=1100+1=1101>100 上 0
         1 00 00
               0           <=R<<2+1=110<<2+1=11000+1=11001>10000 上 0
         1 00 00 00
           11 00 01        <=R<<2+1=1100<<2+1=110000+1=110001<1000000 上 1
              11 11
       ......

     附matlab test code:

    if 0
        
    %//算法1
        a=1000000;
        b
    =a/2;
        i
    =0;
        
    while (abs(b*b-a)>1e-5)  %// e为一个很小的数,指明了算法的精度
            b=(b+a/b)/2;
            i
    =i+1;
        end
        a
    ^.5-b
        i
    else
        
    %//算法2
       Y=20;
       R
    =0;
       Q
    =10;
       Bei
    =1;
       
    for i=1:10
           N
    =0;
           
    while N*(N+2*Q*R)<=& N<10
               N
    =N+1;
           end
           N
    =N-1;
           
    if N<0 | N>9,N,error;end
           
           i
           Y
    =(Y-N*(N+2*Q*R))*100 %//余数
           R=R*10+%//平方根
           Bei=10^(i-1)
       end
    end


     

  • 相关阅读:
    Android新手之旅(5) 网络资源
    Android新手之旅(10) 嵌套布局
    vertest
    Android新手之旅(4) 通过HTTP访问web
    Android新手之旅(6) 与.Net不同之处
    Android新手之旅(7) RadioButton的自定义
    Android新手之旅(9) 自定义的折线图
    Android新手之旅(8) ListView的使用
    ECLIPSE 安装及与CDT 的使用 多线程编程
    Eclipse的代码提示背景是黑色
  • 原文地址:https://www.cnblogs.com/cutepig/p/879837.html
Copyright © 2011-2022 走看看