[明らかなものの非自明なアルゴリズム]アルゴリズム1.平方根

一連の投稿[明白ではないものの非自明なアルゴリズム]には、明白で単純に見えるアクションのアルゴリズムが含まれますが、「これはどのように行われますか?」 もちろん、これらのアルゴリズムはすべて文献に記載されています。 カットの下には、平方数Xの根計算するアルゴリズムがあります





X平方根



アイデア



長方形は、辺a = 1およびb = Xで形成されます。 この長方形の面積はS = a * b = X * 1 = Xです。長方形を正方形に変換してその面積が同じになるようにすると、辺の長さは図の正方形の平方根に等しくなり、Xに等しくなります。

長方形から正方形への変換の各反復は、次のように実行されます。

S = a 0 b 0 ;

現在の四角形の辺の算術平均に等しい1つの辺を持つ新しい四角形が作成されますが、面積は同じです。

S = a 1 b 1 、ここでa 1 =(a 0 + b 0 )/ 2、およびb 1 = S / a 1

S = a 2 b 2 、ここでa 2 =(a 1 + b 1 )/ 2、およびb 2 = S / a 2

...

S = a n b n 、ここでa n =(a n-1 + b n-1 )/ 2、およびb n = S / a n

以下同様に| a n -b n | <例



機能コード



#define EPS 1e-10 float my_sqrt(float x){ float S=x, a=1,b=x; while(fabs(ab)>EPS){ a=(a+b)/2; b = S / a;} return (a+b)/2; }
      
      










All Articles