ものづくり筆耕ものづくり筆耕ものづくりを楽しむ。皇帝ダリアの栽培からオリジナルシステムの構築まで。円周率を求める式の研究は古来から盛んです。今からでも遅くはなく、収束が速い簡潔な式を見つければ、歴史に名を留めるかも知れません。今回は、今でも円周率の計算に使われるマチンの公式を使ってみます。収束が速いマチンの公式はとにかく、収束の速い式です。プログラミングは「マチンの公式」ウィキペデア《マチンの公式による計算》を参考にさせて頂きました。arctan(1/5)とarctan(1/239)において、両者の偏角値に開きがあり、計算する項数を調整しています。小数点以下、14桁まで、多くの算出法と同じ値が得られました。ひところ、算出桁数を競った時期があり、2016年に22.4兆桁の記録があります。余談document.write()の引数に式を指定すると文法エラーになり困りました。直前に変数に代入し、その変数を引数にすればエラーになりません。前回、乱数を用いて円周率を求めました。精度の高い円周率を求める方法は乱数を用いません。「乱数を用いて円周率を求められますよ」ということを図を使って解説してあります。一様にばらつく乱数を使うことが基本で、偏った乱数では実態に即した円周率は求まりません。一般に乱数関数は言語処理系が持っているので精度の高い円周率を求めるには他力本願にならざるを得ません。円周率を求める無限級数の近似式はたくさんあります。近似式は規則性があり、繰り返し処理で算出可能です。小さい繰り返し回数で精度の高い値を求めることを収束が速い算出法と表現します。収束が速くはありませんが、式がシンプルで有名なライプニッツの公式があります。総和記号の式を大きく明示すると以下の図のようになります。今回はこれを使って円周率を求めてみます。古くはFORTRAN、BASIC、Cなどで取り上げられていますのでJavaScriptで記述したプログラミングコードを解説します。*/</script></html>上の図に示した公式をJavaScriptでプログラミングしています。ライプニッツの公式を凝視すると、各項の分子は1でその符号は正、負が交互に現れます。分母は初期値が1で、等差2の等差数列であることが分かります。このことからすると、繰り返しインデックスは1から始まり、増加値が2であることが望ましいと言えます。n;上の式は総和記号を実現させる式の肝部分です。総和記号を厳密に解釈すると右のような表現になるが、演算順序を変えると左のように少し単純化できます。10行目のfor文で制御変数の初期値を1に、増分を2にしてあります。14行目であらかじめ設定した収束値になったかどうかを判断しています。動作結果から収束の速い近似式による収束のありさまを下図に示します。200回ほどの繰り返し回数で精度の良い円周率が求まっています。今回の動作結果から判断すると、仮に設定した収束値が得られるまで20000回かかりました。収束が遅いことが明らかになりました。3.1416まで算出するにはかなりの繰り返しが必要になります。ライプニッツの公式は単純な規則性があり、サンプルとして取り上げられますが、円周率算出の本命とは言い難く、その席はマチンの公式などに譲ることになります。戦後の詰め込み教育を反省して、ゆとり教育が叫ばれた時期がありました。そのとき、小数演算は難しいので円周と直径の比率は3.14...のところ、3で計算してもよいという通達があったと聞きました。これでは誤差が大きいのではと気をもんでいましたが、ゆとり教育そのものがとん挫したようです。乱数を用いて円周率を算出する資料は、山のように溢れていますが、仕組みを解説している記事は多くありません。今回、図を描いて丁寧に説明をします。ありますが、ここではある有限の区間を区切って、その区間内で全ての実数が同じ確率(濃度)で現れるような乱数である一様乱数を採用します。今回、JavaScriptを使ってプログラミングしますが、一様乱数はMath.random関数が用意されています。1)の区間で、同じ確率で発生します。一辺が1の正方形の中に2つの乱数を発生させ、xとyに割り振るとP点が求まります。そのP点が1/4円の中に入る確率は正方形と1/4円の面積比であるπ/4になります。算出した確率を4倍すれば円周率が求まる仕掛けです。P点が1/4円の中にあるかどうかは、xとyから半径zを求め、その値が1以下ならば円内にあると判断します。正方形の面積:1、1/4円の面積:π/4正しくはx、yの二乗和の平方根の値を求めておく必要があるが、a、bがともに正で、a<bならば√a<√bの式が成り立つので平方根を求める必要はありません。正確な円周率に近づけるにはMAXの値を大きくしますが、この方法で精度の高い円周率を求めることはできません。精度の高い円周率を算出するにはマクロリーン級数による近似値計算などがあります。alert("PI="+pi);</script></html>動作結果さいごに乱数を用いて円周率を算出してみました。紀元前2000年ころには古代バビロニアで22/7=3.142857が使われていたといいます。なんでもπ≒3は暴挙としか思えません。プログラミングinventor1都1道2府43県また、古い話で恐縮です。親しみが強かったように思います。名曲「コンドルは飛んで行く」にあるように狭い大地に縛られることなく、自由に飛んでいきたいという欲求は誰にでもあります。Pasa』で検索してお聞きください。江戸時代のお伊勢参りのような無銭旅行もままならず、交通機関が充実しても即、自由に国内旅行を楽しむことは少なく、遠方への旅行ができるようになったのは、経済力が付いた後のことであり、そんなに時間は経っておりません。今では、地図による予備知識の吸収に重きが置かれなくなったせいもあり、県の位置を正確に把握している人は昔より少ないように感じられます。そのぶん、生きた情報に触れる機会が多くなっています。始め、詳細な関連情報を取得するツールをJavaScriptで作ってみました。小学生の地理の勉強に、47都道府県の場所と県名と県庁所在地名を覚えるには、地図上をクリックします。クリックする前に考えていたものと同じかどうかを確認します。県名の前に表示される2桁の番号は沖縄を0とし、北海道を46とする整理番号です。同一箇所をさらにクリックすると県庁所在地名が表示され、もう一度クリックすると『〇〇県の詳細情報を表示するページにジャンプしますか?』という画面に切り替わります。クリックすれば、当該ページに戻ってくることができます。クリックすると47都道府県の県名が一斉に表示・非表示になります。締めくくりの前に因みに、県名と県庁所在地名が異なる県は、北海道と東京都を含めると19都道県になります。埼玉県はさいたま市が県庁所在地ですが、漢字とひらがなであり異なるものとしてカウントされています。北国の人々は西国の地理に明るくなく、同様に西国の人々には北国の地理に暗いとされています。ゲーム感覚で地理や歴史、風土などについて調べてみましょう。ソースコードは別の機会に、JavaScriptプログラミングの開発を解説する形で他も含めて一気に公開する予定です。高度な処理へ2020年から小学校において、プログラミング教育が本格化します。子供向けプログラミング言語としてScratch(スクラッチ)、Viscuit(ビスケット)があり、それらを使って県の特長や特産物の絵を表示するプログラムを小学2年生女子生徒が開発しています。簡易言語では指定された県から詳細情報を引き出すことには難儀します。プログラミングを先導する先生にはJavaScriptのエッセンスは理解していただきたいものです。最近、JavaScriptで無名関数を使い、思わぬ落とし穴にはまりそうになった体験談についてまとめます。古くからある言語は行単位で記述する習わしでした。文の終わりは行末であるから、セミコロンのような文の終わりを明示しなくてもよかったのです。新しい言語は行ではなく、ブロックという考え方に変わり、文の終わりにはセミコロンで区切るようになっています。その名残りなのか、セミコロンを省略しても文法エラーとして扱わない温情ゆたかなブラウザが多いです。4つの例題で確認4つの例題を1つのファイルのまとめました。それぞれの特徴を記します。check0は無名関数の文法に則った記述です。check1は無名関数の終わりを示す’}’の後のセミコロンを省略したもの。check2は’}’の後の2つの改行コードを削除したもの。最後のcheck3は’}’の後にセミコロンを挿入したものです。