パスワードを忘れた? アカウント作成
13859766 journal
日記

gm300の日記: piの計算。 8

日記 by gm300

こんな感じ。精度は上げたいけど、手で行う計算時間を減らして、検算を簡単にしたい。37x43をちまちま行うよりは、(40-3)*(40+3)で暗算で計算したい。

半径100の円に内接する台形群の面積として近似する。
近似値だったら挟むけど、今は3.05 より大きい ということなので。
x = 0, 10, 20 .. 100; 実際は、等間隔である必要はなく、
x = 20, 30,40 .. 80,90,95,100; みたいなほうがいい。
y = int(sqrt(r*r-x*x));
大切なのは、整数範囲でしかも切り捨てで計算すること。yの範囲は、0から100までで整数に限るので、10の位はペンで書いていれば筆算しなくてもわかる。1の位を慣れた方法で求める。
台形の面積を求める。
Sn = (Xn+1 - Xn)*(Yn+1+Yn)/2;
Xを等ピッチにしなくても良い理由はここらにある。(1)Yに変化が無い部分は、纏めて計算できる。(2)Xの幅は、個々のSnの計算に含まれ、Snはそれぞれ独立に計算される。しかし、ピッチが10なのは、掛け算を簡単にするためでもある。0足すだけ。
pi = Snの合計 * 4 / r / r ;
割る2と掛ける4を相殺すれば、少し楽に。
半径10でyを整数に限ると答えは3.05 で題意を満たさない。
半径1の円でもいいんだけどね。
角度を45度までにして余分な三角部分を引くとか、ピッチをもっと賢く制御することで計算量を保ちながら精度を上げる方法はありそうだ。x = 0,10,20,30,40,50とy = 90,80,70,60,50 でx,yの両方からピッチ計算をするとか..

ここまで書いて、オイラの入試の時には、
(1+x)^(1+x)と(1-x)^(-1-x)を比較するという問題があったな。

この議論は、gm300 (14617)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
typodupeerror

コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell

読み込み中...