忍者ブログ
子曰く,之を知る者は,之を好む者に如かず. 之を好む者は,之を楽しむ者に如かず.
フリーエリア
プロフィール
HN:
miwara jon
年齢:
35
性別:
男性
誕生日:
1989/05/11
職業:
学生
自己紹介:
千葉工業大学総合工学研究会でマイコンカー作っていた人.今は,研究で音声工学を勉強している.
ブログ内検索
カウンター
アクセス解析
21
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

 Rubyで少し遊んでみる.

あまり複雑な事はしたくないため,無難に円周率を求めてみた.

試したのは,arctan(x)をテイラー展開したのとarcsin(x)をテイラー展開した数式を使ってみた.

 arctan(x)=tとおく.xで微分すると,
d(arctan(x)) / dx = dt / dx
 = 1 / (dx / dt)
tan(t) = xであるため,
d(arctan(x)) / dx = 1 / ( 1 + tan(t)2)
= 1 / ( 1 + x2 )

無限等比級数の和( 1 + z + z2 + z3 + ・・・ = 1 / ( 1 - z  ) に z = -x2 を代入して得られる式 )から
d(arctan(x)) / dx = 1 - x2 + x4 - x6 + ・・・

x = 0 を代入
d(arctan(x)) / dx = 1

上を繰り返しxで微分し,x = 0 を代入すると
d2(arctan(x)) / dx2 = -2x + 4x3 - 6x5 + ・・・
d3(arctan(x)) / dx3 = -2 +12x2 - 30x4 + ・・・
d4(arctan(x)) / dx4 = 24x - 90x3 + ・・・
d5(arctan(x)) / dx5 = 24 - 270x2 + ・・・

よって,

arctan(x) = x - 2x/ 3! + 24x/ 5! - ・・・
arctan(x) = x - x/ 3 + x/ 5 - ・・・

この式に x = 1 を代入する事により下式が得られる.
arctan(1) = π/4 = 1 - 1 / 3 + 1 / 5 - ・・・( (-1)n / ( 2n + 1 ) )x2n+1・・・

この式をRubyで書いてみた.

num = 0
pai = 0
 
while num <= 10**6 do
pai += ( -1 ) ** num / ( 2.0 * num + 1 ) * 4
print( pai, "\n" )
num += 1
end

因みにこの式は,なかなか収束しない.106回計算してやっと小数点以下6桁まで求める事ができる.

Luaでも書いてみた.

num, pai = 0, 0.0
 
while (num <= 10^6 ) do
pai = ( -1 )^num / ( 2 * num + 1 ) * 4 + pai
print( pai )
num = num + 1
end


 
次はarcsin(x)のテイラー展開.
これは,下式が得られる.

π / 6 = Σn=0 (2n)! / ( 24n+1(n!)2(2n+1) )

同じようにRubyで書くと

class Calc
def initialize()
@num = 1
end
 
def factorial( pow )
@num = 1
while 0 < pow do
@num *= pow
pow -= 1
end
 
return @num
end
end
 
calc = Calc.new()
num = 0
pai = 0
 
while num <= 10
fac_1 = calc.factorial( 2 * num )
fac_2 = calc.factorial( num )**2
pai += ( fac_1 / ( 2**( 4 * num + 1 ) * fac_2 * ( 2.0 * num + 1 ) ) ) * 6
print( pai, "\n" )
num += 1
end

この式は上の arctan(x) の式と比べ,収束が速い.このプログラムは10回までしか計算していないが,小数点以下6桁を求める事ができる.
計算回数を増やすともっと精度の良い円周率を求めることができるだろうが,100回ぐらい計算するとNaNが出力される.
 
・・・円周率5兆桁なんてどうやったんだろ?(´・ω・`)
  並列演算にもいつか挑戦してみよう.
PR
お名前
タイトル
文字色
URL
コメント
パスワード
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
Trackback URL
Copyright c jonのブログ All Rights Reserved
Powered by ニンジャブログ  Designed by ピンキー・ローン・ピッグ
忍者ブログ / [PR]