円周率単語

345件
エンシュウリツ
4.6千文字の記事
  • 43
  • 0pt
掲示板へ

円周率(えんしゅうりつ)とは、円の直径に対する円周のである。直径1の円の周の長さに等しい。

数学定数の一つであり、“π”で表される。

無限小数では π = 3.141592... と表示される。円周率は超越数であることが知られており、(超越数は特に無理数なので)この無限小数は循環しない。

円周率に関する慣用表現

ゆとり教育の代名詞として、「円周率が3」と導された世代と揶揄する人も多い。が、実際には「円周率が3」で導ということ自体がガセネタでそのような事実はなく、都市伝説である。

当時の学習導要領に「円周率を教える前の段階で、円周率を使う必要がある問題を解かせる場合に限り円周率を3と代用してもかまわない(要約)」と書かれていたのを、とある学習塾が「ゆとり教育では円周率が3と教えるようになります。だから塾に行きましょう(要約)」というデタラメ広告を掲載したのが最初で、これがよく確認されないまま広まってしまったとされる。

つまり、ゆとり教育世代でも普通に円周率は3.14で導されているのである。知ったかぶって「お前は円周率が3と習っただろう」と発言すると、発言者こそがバカにされる結果となりかねないのでご注意を。詳細や出典などはWikipedia記事「円周率は3」exitを参照されたい。

そもそも、3だろうが3.14だろうが、等しく慣用表現であり正確な数値ではない[注]

注:有効数字という概念から3.14を慣用する事と整数部が3であることを利用して3を用いることには何の違いもない。尚、工学物理の分野では、実用的にも十分な精度を確保する為、56桁程度に拡されて用いられている。

円周率として3を使った場合最大で33%程度の誤差が出るが、3.14を使った場合0.3%程度に、3.1415なら0.003%程度になる。日常使う範囲なら3.14で、高い精度がめられる場合でもせいぜい5桁程度あれば十分であるといえる。

また、観測可宇宙と同じサイズ円盤(半径約465億光年)の円周の長さを水素原子の半径(5.29×10-9m)以下の誤差に収めるするには40桁あればいいらしい。地球サイズならば15桁もあれば同程度の精度になる。

円周率を求める方法

測る

ラップの芯などの円に近い筒に糸を巻きつけ、その長さを直径で割ってやればよい。そこそこそれっぽい値になる。

誤差は紐の伸びや歪み、筒の円度や強度、ものさしの精度に依存する。

多角形の辺の長さで近似

正多形で近似正24形とかを見てもらえばなんとなくわかると思うが、正n形のnをどんどん大きくすれば円を近似できる。下記のD言語版プグラムはこの原理に基づいて記述されている。「円周率およそ3」は円を内接正6形と見做した場合に相当する。

a0=23, b0=3, an+1=2anbn/(an+bn), bn=(an+1bn) としてやれば、anは直径1の円に外接する、bnは内接する正6×2n形となる。従って、an<π<bn。nを増やしていけばより正確になる。n=4で3桁、n=10で7桁の精度でまる。

初歩的なアルゴリズムであり図形的にも理解しやすいが、N桁めるためにN×1.66回程度の平方根計算と乗算が必要であるため現在は使われていない。

また、東京大学2003年度前期入試試験で「π>3.05を明せよ」という問題が出たが、円に内接する正八形以上の多形で計算すれば明することができる。

三角関数のテイラー展開

tan-1(x)をテイラー展開すると、tan-1(x)=x-x3/3+x5/5-x7/7+…

となる。このxに1を代入するとπ/4=tan-1(1)=1-1/3+1/5-1/7+…となる。しかし収束が極めて遅い。つまり、がんばって計算しても全然桁数が増えない。この方法でπ10桁の精度でめるために100億回計算する必要がある。

この級数オイラー変換と呼ばれる変換を施すと、t=x2/(1+x2)、an=2n!!/(2n+1)!!として、tan-1(x)=(1+Σ(antn))×t/xとなる。この改善した方法を使うと30回程度の計算で10桁の精度を得ることができる。

arctan公式

π/4=Σ(pntan-1(1/qn))の形式の物。タンジェントの加法定理を繰り返し適用することで導出する。各項の数値はtan-1(x)のテイラー展開による。

などがある。

収束が速く、πの桁数≒テイラー展開の項数である。一番上の物でtan-1(1/5)、tan-1(1/239)をそれぞれ第2項までテイラー展開すれば3桁の精度で、10項まで展開すれば10桁程度の精度で円周率がまる。

区分求積

01(1/(1+x2))dx=π/4 であることを用いる。

0から1をn等分に分割し、k番の点xk=k/nをf(x)=1/(1+x2)に代入、π/4≒Σf(xk)/nとしてめる。

1000項でおよそ3桁の精度なので収束は遅い。

モンテカルロ法

乱数を発生させてめる統計的方法。簡単にいえば、一辺2の正方形上に点をランダムに打った時、正方形に内接する半径1の円版上にプロットされる確率からめる。

具体的には-1から1までの乱数の組2つを発生させて面上にプロットし、原点の距離が1以下の物とそれ以外に分ける。そうすると π≒4×(距離1以下の点)/(全点数)となる。だいたい1000点で2桁程度の精度。

また、長さ1cmの針を2cmの間隔で引かれた行線上に落とし、線と重なる確率からめるという方法もある。繰り返せば1/πに収束する。シャープペンの芯や鉛筆など十分に細長い棒があれば簡単に実験できる。

ラマヌジャンの公式

1/π=(22/9801Σ((4k)!×(1103+26390k)/((k!)43964k)

というもの。めちゃくちゃな式に見えるがモジュラー関数がどうのこうので収束が非常に速いらしい。

さらに高度な方法

算術幾何均、楕円積分法を用いたり、掛け算割り算の計算量を圧縮するため高速フーリエ変換ニュートン法を用いたりする。また、通常のコンピュータではせいぜい十進数で19桁程度しか扱えないので桁数があっという間に足りなくなる。そのため高い桁数を計算するための専用ソフト開発する必要がある。

アルゴリズムソフトウェア開発だけでなく、大規模計算ではスパコンを始めとした並列計算を用いるのが必須であり、半導体技術やエネルギー効率の改善、コンピュータの設計技術の発展も欠かせない。

楽で円周率をめるだけでもその背景には科学技術の凄まじい発展が垣間見えるのである。

桁数の記録

暇だから俺も計算してみたい

簡単にでいいならCとかのプログラムの知識と、高校生程度の数学力があれば簡単にできる。

エクセルがあればコンパイルが通らないなどと悩まずもっと簡単にできる。

え? 手計算? 人間のやるもんじゃないよ。

俺の書いたプログラム

D言語編 (多角形近似)

import std.cstream;
import std.math;

void main() {
int N = 10;
real[] a = new real[N], b = new real[N], t = new real[N], pi = new real[N];
a[0] = 1.0;
b[0] = 1.0 / sqrt(2.0);
t[0] = 1.0 / 4.0;
for(int i=0; i<N-1; i++) {
a[i+1] = (a[i] + b[i]) / 2.0;
b[i+1] = sqrt(a[i] * b[i]);
t[i+1] = t[i] - pow(2.0, cast(real)i) * pow(a[i] - a[i+1], 2.0);
}
for(int i=0; i<N; i++) {
dout.writefln("%40.37f", pow(a[i] + b[i], 2.0) / (4.0 * t[i]));
}
dout.writefln("%40.37f", real.epsilon);
}

実行結果exit

OCaml編 (sin-1(x)のx=1/2におけるテイラー展開)

open Num;;

let pi length =
let min = Int 1 // Int 10 **/ Int length in
let rec sum n an x =
let n2 = (Int 2) */ n in
let n2_1 = n2 +/ (Int 1) in
let an' = (n2_1 */ n2_1) //
(Int 4 */ (n2 +/ Int 2) */ (n2 +/ Int 3)) */
an in
if an' </ min then x +/ an'
else sum (n +/ Int 1) an' (x +/ an') in
let a0 = Int 1 // Int 2 in
Int 6 */ sum (Int 0) a0 a0;;

print_string (approx_num_fix 100 (pi 100));;

宿題(来週までに65000桁覚えること)

記事が重くなりすぎるので分離しました。→こちら

豆知識

円周率は全な乱数表という予想がある。これが正しければ、円周率には全ての数字、例えばあなたが適当に思い浮かべた数値でも、ニコニコ動画ログインするパスワードでも、はてはクレジットカード暗号も個人のDNA情報も全て載っていることになる。ただし、的の桁数を定する方が情報量が多くなるので情報圧縮には使えない。

関連動画

関連コミュニティ

関連項目

【スポンサーリンク】

  • 43
  • 0pt
記事編集 編集履歴を閲覧

この記事の掲示板に最近描かれたお絵カキコ

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

円周率

323 ななしのよっしん
2020/07/19(日) 10:47:12 ID: x/8nKBRRNJ
>>304
三角関数テイラー展開ごり押しするのも良いぞ
大学入試問題でそれやって良いかわからんけど
👍
高評価
0
👎
低評価
0
324 ななしのよっしん
2021/10/23(土) 14:58:57 ID: IQ/rqmj4du
>>313
0に限りなく近い値を無限乗するとか概念が分かり辛いからじゃね
👍
高評価
0
👎
低評価
0
325 ななしのよっしん
2022/03/26(土) 20:50:23 ID: Nu8gEPnn6O
円周率に全ての数字が含まれていると書いてあるけど、この数字って有理数のことであってるよね?
👍
高評価
0
👎
低評価
0
326 ななしのよっしん
2022/03/27(日) 09:51:43 ID: 5A/YIqx2+e
>> 全ての有限長の数字列、って意味だと思う 有理数だと例えば1/3=0.333…は含まれないので
👍
高評価
0
👎
低評価
0
327 ポプテピピック
2022/06/19(日) 15:00:42 ID: l3PeNFIGY2
2^1*(2-2*(1/2*(cos(360°/2^1)+1))
2^2*(2-2*(1/2*(cos(360°/2^2)+1))
2^3*(2-2*(1/2*(cos(360°/2^3)+1))
2^4*(2-2*(1/2*(cos(360°/2^4)+1))
2^5*(2-2*(1/2*(cos(360°/2^5)+1))
2^6*(2-2*(1/2*(cos(360°/2^6)+1))
2^7*(2-2*(1/2*(cos(360°/2^7)+1))
2^8*(2-2*(1/2*(cos(360°/2^8)+1))
2^9*(2-2*(1/2*(cos(360°/2^9)+1))
2^10*(2-2*(1/2*(cos(360°/2^10)+1))
2^11*(2-2*(1/2*(cos(360°/2^11)+1))
2^12*(2-2*(1/2*(cos(360°/2^12)+1))
(省略しています。全て読むにはこのリンクをクリック!)
👍
高評価
0
👎
低評価
0
328 ポプテピピック
2022/06/19(日) 15:02:46 ID: l3PeNFIGY2
円周率の計算式です
👍
高評価
0
👎
低評価
0
329 ななしのよっしん
2022/07/22(金) 18:35:16 ID: qzhUetvG93
>>sm34140325exit_nicovideo
👍
高評価
0
👎
低評価
0
330 ななしのよっしん
2023/05/21(日) 11:41:13 ID: zIMt6DFeHt
👍
高評価
0
👎
低評価
0
331 ななしのよっしん
2023/11/15(水) 12:13:49 ID: dYbByVdt9W
πじゃないが
👍
高評価
0
👎
低評価
0
332 ななしのよっしん
2023/11/15(水) 13:16:47 ID: NjcxbOQNg4
👍
高評価
0
👎
低評価
1