2016年3月20日日曜日

160320(5)

Ruby


π を分数で近似(2)

https://en.wikipedia.org/wiki/Proof_that_22/7_exceeds_%CF%80
をもとに
1 / 2^(2n - 2) ∫(0,1) x^(4n) (1 - x)^(4n) / (1 + x^2) dx
が0 に近いことを利用してπ を分数で近似してみた。

def C(n, r)
  r = [r, n - r].min
  return 1 if r == 0
  return n if r == 1
  numerator = (n - r + 1..n).to_a
  denominator = (1..r).to_a
  (2..r).each{|p|
    pivot = denominator[p - 1]
    if pivot > 1
      offset = (n - r) % p
      (p - 1).step(r - 1, p){|k|
        numerator[k - offset] /= pivot
        denominator[k] /= pivot
      }
    end
  }
  result = 1
  (0..r - 1).each{|k|
    result *= numerator[k] if numerator[k] > 1
  }
  return result
end

def Leibniz_formula(n)
  4 * (0..3 * n - 1).inject(0){|s, i| s + (-1) ** i / (2 * i + 1r)}
end

def f(n)
  (0..2 * n - 1).inject(0){|s, i| s + (-1) ** i / (2 ** (2 * n - i - 2) * (8 * n - i - 1r) * C(8 * n - i - 2, 4 * n + i))}
end

(1..30).each{|i| p Leibniz_formula(i) + (-1) ** (i + 1) * f(i)}

出力結果
(22/7)
(47171/15015)
(431302721/137287920)
(741269838109/235953517800)
(26856502742629699/8548690331301120)
(211938730834003723543/67462193289708771840)
(506119433541064524255449/161102819285860855603200)
(19809071774292917047896724979/6305423381881718760060595200)
(23285066731814401580687501596643/7411866941185812791748757094400)
(89293478252053341114758995682016773/28422996899365886608045972478361600)
(77997614500552946262295151821844788921/24827411794278189209115835981312819200)
(53385652953509417766719017367204093188361/16993181115478931076058403260828562227200)
(2504492442679095809835466877865587690003305358231/797204704377346869713059903864272972590717337600)
(27866240172453844886325941887505217163994611104897858617/8870099737663958700556100446465640958076561638241075200)
(3737271881299351053666441876167156192604573934552162661/1189610587174277674549768534026398549974217301531033600)
(2199496269931868203800149756151730543362676840844586435379483/700121407343685092214243286289756273641462048387187186073600)
(132570645054700093606473440370784391628703685360477563188116477/42198546938673298440864239484207883524155412032193942257664000)
(29832337484492518217048916227659410964608663939042391473810429697/9495927949285245581337958144499514323433226651874145194402119680)
(842755908791452603343975605728390570004752202303444739958124097773741955147/268257537408124350364026727600009545561127583382712382710348191778209792000)
(66156338840129029362502085049678659745373047880820412086708394806039520515257/21058216686537761503576098116600749326548515295542922042762333054589468672000)
(19208978128716291288284472076131229833907197187880665999064419495161046612530817093/6114407641858606996147679646207882639125089438506388063211023659509119218352128000)
(194161760950485119583603495277389374815538366182218507109644401986701079185812018101/61803608029393290491398343929534957552325061335734232602973448135892175829545779200)
(11376531846179208486779499075860814093243136394380595776565666024223647991552013566339271/3621262557123573816777089765864308356345692454910121468879503589693158929508344004608000)
(33072589649906601294503039619501915430104748241262345867203946584680606098687119416797781273/10527332247264983629950069046266828718284283446809533417225181736459261497727838593220608000)
(25422588845948287917840198990310955266893220891255517493881289524342496083962053135792429098585663/8092261362051105765248285301685603166696861085875287087233705766880133617989065376859671442227200)
(46264531052986974409042524288673990665877753333636166970847031386641299179820533992829502611931261/14726457613822733014235618296761187744799693147268540465055933017205288205709830685816699381350400)
(15118337974655890138153621692618786255874458647572745177428650890392802385633565461429689136646412227/4812316440000796768001141835184294518755566891467916410309369717790009488585371350904855292228403200)
(2069928648601327427352439845133642469756287671058225941488213320736310619376143943839757508672264691186711/658878752544856169210929998187171572841546289913934734725669374808405315457981429539219541105191367475200)
(1945427904999589890101598798890045028016567124243525244824182818377188279480704038637893031935822360758977292080733/619248935019189789053179275651408416868079582257816933219620037680829229923216655623409469247302624426776854528000)
(231732713894571469968102101205967780695526360316041048788287205576407451806292974972467047521040580190265939101075713/73762813784841971728351645611122952962850797213242891037863061044561149361998215832515086874811852933591278498611200)

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。