2020.11.09(月)
円周率
[ システム開発部 ]
「東京で木枯らし1号3年ぶり」というニュースを見て、今年は冬らしい寒さになるなと覚悟を決めました。
コロナ禍にあって、事務所では冬でも換気をしていますから例年以上に防寒を意識しようと思います。
私もウルトラライトダウンベストを買ってしまいましたよ。着てみて購入者が多い事が理解できました。
薄いのに暖かくて良く出来ているなと感心です。ちなみに収納袋が内ポケットに入っていることに一週間気づきませんでした。
さて、今回のタイトルは円周率です。
学生時代が思い返されて懐かしいですね。
いったい円周率が人生で何の役に立つんだ?と思っていましたが、残念ながら大人になってからも使う事はありませんでした・・・。
しかし、幸い(?)にも、2年前に初めて使う機会がありました!
円が平面上を移動している時に、現在の座標(x0,y0)に対して1秒後の座標(x1,y1)を算出したかったのです。
ここで円周率を使うことになりました。
え?何がしたかったのかって?それは皆さんおなじみのスクリーンセーバー「バブル」をプログラミングしたかったからに決まっているでしょう!
無数のバブルが画面内で動き回っているのは見ていて飽きないですよね。
見ていると作ってみたくなる性分からいつか作ろうと思っていた流れでの2年前なのでした。
20年以上前に勉強した事はほとんど覚えておらず、ネットで一生懸命復習したのでした。
関連して三平方の定理とかも勉強しました。(ピタゴラスの定理の方が馴染み深い?)
「懐かしい!」に尽きました。
前置きが(本当に)長くなりましたが、今回の題材とは関係ありません(笑)
今回はふと「円周率の3.14ってどうやって計算するんだ?」という疑問がわいたので勉強してみて、実際にプログラムで計算してみました。
細かい理屈は抜きにプログラムを書くとこうなります。
const R = 100000;
let c = 0;
let s = 0;
for (let y = -R; y < R ; y++) {
for (let x = -R; x < R ; x++) {
s += 1;
if (x * x + y * y <= R * R)
c += 1;
}
}
let result = 4 * c / s;
なんだかよくわからないとは思いますが、ボリュームだけを見ると意外と少ないでしょう?
これは例えば、「半径が10万メートルの円の外周に接する正方形の中に、1メートル置きの等間隔に人が立った時に、円の内側にいる人は何%になるか」という観点から計算しています。
実行結果は「3.1415925455」となります。知られている円周率は「3.14159265358979」ですので小数第6位までは正しく算出できています。
前述の10万という範囲をより大きくすることで精度が上がっていくのですがコンピューターの計算能力の都合上で10万が限界でした。
プログラムってこういう10万とか、もっと大きなスケールで計算できるので面白いのですよね。
まさにコンピューター=計算機です。
このブログを見て興味を持って頂けた方は今からでも遅くないのでプログラミングを始めてみてください。
小学生や定年退職後に始められる方もいらっしゃるくらいなので誰にでもできるものなのだと思っています。
円周率の暗記に挑戦される方をYoutubeなどでも見ますが、その凄さに比べるとプログラミングは遥かに簡単です。
私は逆にボケ防止の為に暗記の方を始めようかなと思う今日この頃です。
以上、外国人保証のフォーシーズデータセンター木下 のフォーシーズブログでした。
毎日の記事は下記リンクから閲覧できます。
システム開発部の記事は下記リンクから閲覧できます。
年月を選択してください
2024年11月
2024年10月
2024年9月
2024年8月
2024年7月
2024年6月
2024年5月
2024年4月
2024年3月
2024年2月
2024年1月
2023年12月
2023年11月
2023年10月
2023年9月
2023年8月
2023年7月
2023年6月
2023年5月
2023年4月
2023年3月
2023年2月
2023年1月
2022年12月
2022年11月
2022年10月
2022年9月
2022年8月
2022年7月
2022年6月
2022年5月
2022年4月
2022年3月
2022年2月
2022年1月
2021年12月
2021年11月
2021年10月
2021年9月
2021年8月
2021年7月
2021年6月
2021年5月
2021年4月
2021年3月
2021年2月
2021年1月
2020年12月
2020年11月
2020年10月
2020年9月
2020年8月
2020年7月
2020年6月
2020年5月
2020年4月
2020年3月
2020年2月
2020年1月
2019年12月
2019年11月
2019年10月
2019年9月
2019年8月
2019年7月
2019年6月
2019年5月
2019年4月
2019年3月
2019年2月
2019年1月
2018年12月
2018年11月
2018年10月
2018年9月
2018年8月
2018年7月
2018年6月
2018年5月
2018年4月
2018年3月
2018年2月
2018年1月
2017年12月
2017年11月
2017年10月
2017年9月
2017年8月
2017年7月
2017年6月
2017年5月
2017年4月
2017年3月
2017年2月
2017年1月
2016年12月
2016年11月
2016年10月
2016年9月
2016年8月
2016年7月
2016年6月
2016年5月
2016年4月
2016年3月
2016年2月
2016年1月
2015年12月
2015年11月
2015年10月
2015年9月
2015年8月
2015年7月
2015年6月
2015年5月
2015年4月
2015年3月
2015年2月
2015年1月
2014年12月
2014年11月
2014年10月
2014年9月
2014年8月
2014年7月
2014年6月
2014年5月
2014年4月
2014年3月
2014年2月
2014年1月
2013年12月
2013年11月
2013年10月
2013年9月
2013年8月
2013年7月
2013年6月
2013年5月
2013年4月
2013年3月
2013年2月
2013年1月
2012年12月
2012年11月
2012年10月
2012年9月
2012年8月
2012年7月
2012年6月
2012年5月
2012年4月
2012年3月
2012年2月
2012年1月
2011年12月
2011年11月
2011年10月
2011年9月
2011年8月
2011年7月
2011年6月
2011年5月
2011年4月
2011年3月
2011年2月
2011年1月
2010年12月
2010年11月
2010年10月
2010年9月
2010年8月
2010年7月
2010年6月
2010年5月
2010年4月
2010年3月
2010年2月
2010年1月
2009年12月
2009年11月
2009年10月
2009年9月
2009年8月
2008年7月