- ベストアンサー
表計算(エクセル)で、円周率の近似値を求めようとすると・・・
コンピュータのカテゴリに書き込もうかとも迷いました。 場違いでしたらすみません。 表計算ソフト(エクセル)で、遊びで円周率の近似をやってみることにしました。半径=0.5の円に内接する正多角形の周の長さを求めるやり方です。半径=0.5にしたのは、直径1の円の円周率は、周の長さをそのまま円周率とすることができるからという理由からです。 半径0.5の円に内接する正多角形の隣り合う2点ABと円の中心Oとを結んで出来る二等辺三角形OABの辺ABの長さは、 =√(0.5^2+0.5^2-2*0.5*0.5*cos∠AOB)(余弦定理) =√(0.5^2*2*(1-cos∠AOB)) エクセルでの具体的な計算の仕方 (1) A1セルに「=3」 B1セルに「=SQRT(0.5^2*2*(1-COS(RADIANS(360/A1))))*A1」 ※これでA2セルには、半径0.5の円に内接する正三角形の周の長さが表示されます。 (2) A2セルに「=A1+1」 B2セルに「=SQRT(0.5^2*2*(1-COS(RADIANS(360/A2))))*A2」 (3) A2、B2を選択して、下方向へオートフィルします。 オートフィルを続ければ続けるほど、正n角形のnが増大するので、3.14にB列に表示される数値は、”下の行に行くほどどんどん円周率πに近づく”はずです。 なのに、正4316角形と正4317角形(セルB4315とセルB4315)では、 正4316角形の周の長さ=3.14159237622779 正4317角形の周の長さ=3.14159237622464 となっており、正4316角形の周の長さよりも正4315角形の周の長さのほうが長いことになっています。 正∞角形の周の長さ÷直径=円周率というのは、数学の教科書にも載っているようなことなので、”下の行に行くほどどんどん円周率πに近づく”という考え方自体は間違っていないと思うのですが・・・ コンピュータの限界とか、そういう問題でしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
1-cosは、角度が小さいときには、cosがほとんど1に近くなるため、この式のまま計算すると、桁落ちが起ります。また、この数列は先に行くほど√の中が1に近くなるので、ここでも精度が減少します。 結局、15桁使って計算しても、結果の精度はその半分の7桁程度になってしまいます。その上、4000回計算しても7桁の精度しか得られないので、この計算式は非常に能率が悪いといわざるを得ません。アルキメデスがこの式を使ってπを3桁までしか計算できなかったのもわかるというものです。 参考URLにいろいろな式があげてあるので、どれがよいか試してみてはいかがでしょうか?
その他の回答 (4)
- Tacosan
- ベストアンサー率23% (3656/15482)
半角の公式を使って (1 - cos x)/2 = sin^2 (x/2) とすれば桁落ちが発生する処理がなくなるので, 現状よりは精度がよくなります. この辺は数値計算では常に注意しなければならないことです.
お礼
参考になりました。試してみようと思います。 ご回答ありがとうございました。
- chie65536
- ベストアンサー率41% (2512/6032)
有効桁数の問題で、お使いの式では7~8桁しか求められません。 以下の2つの「有効桁数が15桁の数値」は、加算しても、正しく加算されません。 1.23456789012345 0.000000000000000123456789012345 この2つをA1、A2セルに入力し、=A1+A2とか=1-A2とか計算してみましょう。 桁落ちが発生し、=A1+A2はA1と同じ値に、=1-A2は1になります。 お使いの式では、SQRTやCOSの計算中に上記のような桁落ちが起き、正確には計算出来ません。
お礼
あ~、そういうことなのですね、なぜ有効桁数15桁なのにこの精度なのか、分かりました。 ありがとうございました。
- Tacosan
- ベストアンサー率23% (3656/15482)
コンピュータの限界ではないです. あなたの使っている式が悪く, 桁落ちのために精度がでないだけ. 桁落ちしない式を使えばもっといける.
補足
なるほど、そうなのですか。 No.1の方のご回答によると、15桁が限界ということなので、その限界を考慮して式を入力すればOKということですか?(計算結果の桁数が小さくなるようにあらかじめ少し引いたり足したりするとか でしょうか・・・) 桁落ちしない式というのは、どのような式なのか、教えていただけるとありがたいです。 (使用したエクセルのバージョンははExcel2000です。)
- neKo_deux
- ベストアンサー率44% (5541/12319)
Excelの仕様です。 有効桁数は15桁までです。 文書番号: 264626 - Excel 2000 仕様の説明 http://support.microsoft.com/kb/264626/ja | Number precision 15 digits
お礼
ご回答ありがとうございます。なるほどー。 (使用したエクセルのバージョン情報も記載せずにすみませんでした。Excel2000で当たっています。) セルの書式設定の表示形式で「数値」を指定すると、小数点以下の桁数は30桁まで表示は出来るということになっているので、そのくらいの精度があるのかと思っていました。
お礼
ご回答ありがとうございます。 なるほど、いろいろな式があって参考になりました。