2016年3月20日日曜日

160320(6)

Ruby


π を分数で近似(3)

第10 ** i 項を求めてみた。

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

p Leibniz_formula(10 ** 0) + f(10 ** 0)
(1..3).each{|i| p Leibniz_formula(10 ** i) - f(10 ** i)}

出力結果
(22/7)
(89293478252053341114758995682016773/28422996899365886608045972478361600)
(194251578717827021653232377754180287870210619157355517670127024748390253030306484155449347474294109503853037679023754000761861741721799218695348889378822387077816389245805815128268973371845917622872784975694255440764053555474637443046076288426666836462222177640420826508453509661829409421114394603761170453366871940842642393432433215937470096619564905518276939233385418954294649969385910419155785807/61832197912693173529980868719424266852703301999878896894134550354183128879767177221850341053613740008208234522310320962930739526016549081815983372085218529181110351946376142405903271044435018141598453063605266868941100590509197053981410526668873221769706915162818194175347096931712265706011844425878475145422190936996488413732854784288845243268799328991608336255666657940698177665362921112207360000)
(643326516115670507016562349366206155794254401168285640433744947616898220329579993230958907996968685391794074729745698921025546757978985842812887244418384841580860316088712368593764174071557151827143948494120464238020481080939673998511738759862549868795318703586141597544979380998242226758400217200526465666722567426684891145890553797652594519399828581458634788810878802106157859567889204864254585163269043723073654940556925687325281813791248123704745000071831862273552354400033806923376914472312441207787879087412745546270815252721233261439691760457906998741171799630390288066066103802040713114915565937301020637591997073145864347051797188166705314431169196309892535684476907117792402382576062873049224669885479021198832745741054739902207532336896854815568160137335527942864604340521107472474905364352749503338056971799403008554682127611207994336471238406482407497189033181338775582525805806854236690262364353538523517748885760975101440602173732122098343858560973484665731147659156625218135582503664367692820615477161164072209547520205772375377839074073454398952234631826307167668869426241473510778683229929949577014709508771023772423798093655776189866778129390745296012578676911772494753735385623830788905196677758464707860248638819054139334903329975827075567833696918099224937642357099882401230669085344637373447947821808593779363289086069917375824943641196726269348367258866656916888781264682319393171065534790221259628870143329874341537493854240811210618201544174556533680810317607894956663704929130802078832518352349540825488513568438186319781777270152194342596083853624916806737727509521289089144767512296390640293296924527078122386480908874555834281887188836464736312500523940034616632848673418248816028427154727196414061752421995619086758017879009920088913222608029419010065002547764981134057355196820023279873164624941868008513737179618036361642194523592854913836428530491705697196936675084224114676017225252162179490766213576502956914131267907780171644876045239319475808466454116929124334297530920349175617401729447322966718755814495070120773487974179670310527990080010352759629095612422036735489038091082480809720106787448716699562575102953532355917751483521455268352398991784193080251597493686943808979300085439740987795442492649595568148121676749549190143928679958384613422325053287447128806452423111738803004104357023805451082155951415329944247383416155894831091909463854427762661954554741333294046839756583775938400633029003019564268363134502551261792606744501183655080181005965424066060270695103009327815381250944596282515549806793500554695059620351141204708234349378944699926948576156675349533216419925964885184191402215991355690031077368641102363485040219221355952229636738294499558064316198524097254840158686853772764178428665735368852266680118562285784412006530607550743846353693990355152406070508489220506719369375309373598722884898792269828927953285481167389157543064999180449350098419496159332288660394094108347921731111269075918091597703794064868623061964394236683348120836956002408009286881458978502279044526780412460368860693337486056476060623821803195055355589103721802265141833368232744904780612937872609343327138705021066155968620552884803411080796566783924122749104315073569126277423068548698218768318944635003543278215833444826701537180821829690068421548589690773674597217817770655103361478288336523054474240160728294388890392526852048060988611586809757712330984371496968608364146396171745714086280402858199749510369177444922808472009870363943460447108753824267314403153395716565446980769611850630490209677275862022310866099313646083507540464962811508756155469018200160250916807712034218686798120035037757229549606548701754861754937732671280492912080808534060367178555806570207666494886579069677181949217024869753158088445007609796402104708703854286865006074893216652027238082572460626072434765056083704795480535185745322454478059246442553323633788642348169028990461086106186173312673548071292839227448502004816494797415218293440468234706536381335189127871116535842110603509659495534924093031157962497297863493714006290094283316667/204777190123793654316955667099153447857542229560602774013476514127682020503901449157929192318880744871119957167053359853175329444321677458750593194492982362374107219535407860660426837594087413987218132276778320945599641862831476304418626045529435918247792525204866189605977478960638821868045778289804934668423846312859566336990977888268185757952200073253001769157799912675514867047410981971378343911693299371877749447425794166382997180776178844322104069448057879982221019120200345542170964027899331031512329215614175885753020819763392679793470941529052390381952820161530193819621997822474857245181219237236343352565507661786789916610775746186613630136076670723872212975911370330121058009421214948829580747766320220608947007574053197079821488311385663610537019786036663725918278178357975870832459454203883513740630382621525112534772679623091633055732431252560256983456417198748402276788682452464051015748584835445078153146816471636000558793997712258602454252574274794540060940233801960669633356060208205451769923417824611668065482026084085688810404844068537723483464835913426642080066902533661938508403044184554951185532489340238974866923372857958490791997732601164921283693118058094787692832226096433288947431728925295507481203552270652324368950561369837850421295724904285967784531150639975348593727754245502688941988594073110925396647870902028803942292845411794427980594315418940288844261063725548829163967277293599196802465421875975563732651538440388302489881522587773265100968114302632491006998567159130213220630000252820794307945175797207288778706594548675254006000852990053213004037169951919887434743005668103233386875526214194352088079339828555819806255493454064938338984803004815494980341532945615866606574550228433027588160526315997833606755691306522994016276820579914621474635065405868804176416354957208494746941781651765297435360926091663494110584141342241646883590578626795724075142861706738500851239181385271368980255739174178394270122014371193757036468517919323683334783934091966406168744180778024908414423882359449509064543485900578433904860608185385157575970976326108564172441606627461603924199481870630390346324888026645564354232428586804459613767614166612834720047047470902665503642894664248007160094816502321441768452246864401893355326707310023919669743664268088339563358566792706334546210675177288059683057662826617336341101908887990292479313302220657118317045837886418437023046687737199521880503203188490736109491983924175636110742522570809579527874953753028291491824140289431194088447766455562920384499371368393239346362000395829136517893051560880894984669337559635664632535270219318027897719349498456710641279485993032141889153331008008635668509399765625103246991513402062782082489093434145396873355029549111269730922571159664706295369480080729319281108296588803580207881182571166458319865866676898535977421840182454765183881261185162661891853948346555788659726386440422396495215872512756822426325681858706541486372810480735256202283548886060200801954833627695181686209723231332957731525687896821244084774346377390140334226375573069310161601153569832624324958383536965856158561468794557835341586790588691954287591690863330058113164783308958556775891274449126109329193954914852850734789092205277982967027658788465697122043170869002022959382944562999868623219036856065676477396249942931622980710330346357404718274194017749730584371706920135067911493968454113686643722505568166749818499838240383048264676793405699678389580396161428216950654229089253306156442376466266393958316305375919039504233132627904533033442027742559553172416164768539506779195003096835178408057449167392366547055472363278032135128448144218872099814485816307194182736332789587478643525662595524633245619372779704687486920585391274119406591438955769759634271779076129164070969140143570004105269012526492065608554195229183708956955985238194280359754339899698418621671474789257345337375611449944968544788446186936100044351386080047839924893520705144025806230566154497316259108309479912022377604079671584292686194623738505602270601364448131621769939486807347395204166451200000)

0 件のコメント:

コメントを投稿

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