複天一流:どんな手を使ってでも問題解決を図るブログ

宮本武蔵の五輪書の教えに従い、どんな手を使ってでも問題解決を図るブログです(特に、科学、数学、工学の問題についてですが)

東京大学2023数学[2]-(1) part4: やっと本題へ

前回のあらすじ

赤玉が隣合わない確率を求めるために、その補事象「隣り合う確率」を延々と計算してきた。解析的な考察や数値計算を行い、それなりに正しそうな結果を得た。数値計算ではpython+awk(bash)を使ったプログラムを書いたり、計算速度向上のためにC言語を利用したプログラミングを行ってみた(C言語コンパイラであり、またawkに文法が似ている----というよりもawkはCに文法を似せて設計された)。自分なりに「複天一流」の流儀を貫いてきたつもりである。

そして今回いよいよ東大が要求する「赤玉が隣合わない確率」について「複天一流」の観点から答えを出してみようと思うのである(解き始めから一体何週間かかったことか...やれやれである)。

grepで一発!

これまでグチャグチャと考えてきたり、色々と計算してきたのだが、実はこの問題の本題に答えるだけなら

aka-dama.py | grep "XX" | wc -l

で十分なのである!結果を見てみると

 819172

これを1100000で割れば補事象の確率が出るので、さらにそれを1から引けば「東大に入るための第一歩」が手に入る(数値計算しないでその答えにたどり着ければ、の条件付きだが)。

ここでは複天一流の流儀に則り、あえて電卓を用いずにこの計算を行ってみよう。といっても暗算のトレーニングをするわけではない。UNIXに入っている計算コマンドbcを使ってみるのだ。

bcを使った計算

bcは面倒な代数計算や関数値の算出などをやってくれる「関数電卓」みたいなUNIXコマンドなのだが、いつも使い方を忘れてしまい、結局は電卓に頼ってしまいがちである。「腰にこの武具を吊るしたまま」人生を終えるのは耐え難い悔しさである。よい機会なので、使い方を復習してみた。

基本はawkのようにスクリプトを書いて実行する仕様なのだが、OSのプロンプトで直接計算させることもできる。その時は、計算内容をパイプラインをつかってbcに流し込むのである。bcはデフォルトで「終了しない」設定になっているので、計算が終わったらすぐにbcモードから離脱するよう「-q」オプションをつける必要がある。具体例を見てみよう。1+2=3を確かめるなら、

echo 1+2 | bc -q

とする。単純な計算ならこれでよいが、三角関数平方根を用いた計算をする時は「標準数学ライブラリ」を組み込む必要がある。その場合には、「-l」オプションを追加して

echo "s(3.14159265/4)" | bc -ql;
echo "1.0/sqrt(2.0)"| bc -ql

などとする。s(x)というのはsin(x)を意味し、sqrt(x)はxの平方根である。関数の表記についてはman bcで知ることができる。

さて、我々の計算の場合は次のようになる。

$ echo 819172 / 1100000 | bc -ql

.74470181818181818181

注意:-lオプションをつけないと小数計算をやってくれず、「0」となってしまう。

これまでの経験から、我々の数値計算の精度は小数第4位で四捨五入して得られる小数以下3桁程度である。とすると、この結果は0.745...までは正しそうである。これがもし0.745454...という循環小数になっているならば、循環小数を分数に戻す有名な方法を使って分数の形で書き表すことができる。確率の問題の答えはほとんどが有理数であるので、きっと分数にすると正解に近づけるはずである。

循環小数の分数化

まず、\begin{equation} x = 0.745454...\end{equation}とおく。

次にこれを10倍する。\begin{equation} 10x = 7.45454...\end{equation}

さらに1000倍したものも用意する。\begin{equation}1000x = 745.4545....\end{equation}

最後に1000倍したものから10倍したものを引く。\begin{equation} 990x = 738\end{equation}

したがって、\begin{equation} x = \frac{738}{990} = \frac{18\cdot 41}{18\cdot 55}=\frac{41}{55}\end{equation} が、数値計算から推測されるこの問題の「答え」である。いや、うっかりしていた。これは補事象の確率であるから、1から引いたものが「答え」である(危ない、危ない)。 \begin{equation} p_0 = 1- \frac{41}{55} = \frac{14}{55} \end{equation} 各予備校の答えをちらっとみると、どうやらこれが正解らしい!

補事象A,Bの「充填具合」

数値的にではあるが正解が手に入ったので、前回までに計算していた補事象A,Bがどれだけ補事象を「埋めていた」のか調べてみることにしよう。考察では\begin{equation}p_A+p_B=\frac{277}{495}\end{equation}であった。完全な補事象の確率は$x=41/55$であったから、残りは \begin{equation} \frac{41}{55}-\frac{277}{495} =\frac{2^2\cdot 23}{3^2\cdot 5\cdot 11}\end{equation}である。bcで計算すると、0.18585858...となった(分数化すると$184/990=92/495$)。つまり、この数字を見ると、まだまだ結構な数の補事象が数え残されていることが推測される。それはO@XOXOXX...のような列のように、連続する赤玉の前に赤玉が散発的に二回発生するような事象であろう。この計算は面倒そうに見える....が、「複天一流」の奥義を使えば、やってやれないこともあるまい。この問題はいずれ解決することになるだろう。