Unityと数学と音楽の学習帳

Unityと数学、音楽の同時学習を目的としたブログ(個人的メモ帳:勉強中なので正確性はない)

対数定規を作る

書籍:虚数の情緒P553「手動計算機をつくろう」を参考に計算尺を自作してみます

作成にはグーグルスプレッドとアドビ:イラストレーターを利用する
底を10に設定した対数関数の値を利用して横幅10センチメートルの定規を作り計算結果を確認します

f:id:cqbosinko:20180215220928p:plain

具体的な作成手順

1.グーグルスプレッドを開き「=LOG10(A2)*10」のような関数を利用して以下の様な底10の対数表を作成します。イラストレーター上で横幅10センチメートルの定規を作る為×10しています
docs.google.com

2.イラストレーターの長方形ツールを利用して中身透明色、線黒色の長方形を重ねて描いて行きます。この時、ポイント吸着機能を利用して長方形左上から数値入力形式でツールを利用して横幅にスプレッドシートの値をコピペして作成します(縦長の値はあらかじめ決めて置いてその値は固定値として触らないようにします)。作業的に100個の長方形を描くので少し根気が必要な作業となります。もし長方形の位置がずれても気にせず作業を続けてください。最後にオブジェクトの整列ツールを利用して「水平方向左に整列」、「垂直方向上に整列」を利用するとピッタリと収まります

3.イラストレーターで必要な位置値や定規として利用しやすい、判り易い記号を作成します。これをクローンして上下に並べます
この計算尺は一般にC尺、D尺と呼ばれるものに対応しています。関連資料:尺の名前の由来

f:id:cqbosinko:20180311112238p:plain

出来上がった定規を利用して計算結果を確認してみる

例えば「5.5\times 6=33」、「5.5\times 8=44」の計算を検証してみます。この場合、D尺を一行に二つ並べて「10の二桁目の計算」に対応させます。C尺をスライドさせて1の位置を下の定規の5.5に合わせます
f:id:cqbosinko:20180311130659p:plain
上の定規の「6」位置の延長線上を下の定規でみると「3.3」この定規は二桁目を表しているので×10して答えは「33」になります

計算式で表すと
\log _{ 10 }{ 5.5 } +\log _{ 10 }{ 6 } \quad \Leftrightarrow \quad 0.74036...+0.77815...=1.51851...
この対数式は底を10とした指数ですから指数法則の考えを利用すると
{ 10 }^{ 0.74036 }\times { 10 }^{ 0.77815 }\quad \Leftrightarrow \quad { 10 }^{ 0.74036+0.77815 }\quad \Leftrightarrow \quad { 10 }^{ 1.51851 }\quad =\quad 32.9997...\quad \simeq \quad 33
と同値であると考える事が出来ます

同様に「8」位置の延長線上を下の定規でみると「4.4」、×10して答えは「44」になります

これは入力値に対応した出力値を持つ関数の表リストを利用した計算であり、どこかsin,cos関数の加法定理に近い構造を持つ事に気が付きます

memo:
計算尺においては計算は掛算割算が基本であり単純な加算引算にはテクニックが必要となる
参考資料:
計算尺での足し算・引き算
この参考資料内のページの最後の式は接線の方程式でみられる式の形に似ている。接線の方程式は共通因子として微分係数が利用されていると考えられる?(微分係数という単位)

指数計算をしてみる

対数定規のスタイルを変えると様々な計算ルールを持つ計算機が作成できる。例えば以下の様な計算機が簡単に作れる
以下の二つはスライドさせるタイプの計算尺でなく上下の値で値を算出するタイプ

二乗計算尺
f:id:cqbosinko:20180311155117p:plain
例:上の定規のD尺が3位置の真下は{3}^{2}=9になっている。{6}^{2}=36、35の二乗は1225で桁上がりを考慮して考えるとその値の位置であっていることが見てわかる。このように指数計算の結果が計算尺を利用すると一瞬で近似値が分かるようになる。下段の定規はイラストレーターで「log10の定規」(D尺)を横方向に50%に縮小して二つ並べる事で作成している。一般にこれは計算尺でA尺と呼ばれるものに相当する。数学的にxをD尺の値、yをA尺の値にして式で表すと…

\log _{ 10 }{ y } =\log _{ 10 }{ { x }^{ 2 } } \quad \Leftrightarrow \quad \log _{ 10 }{ y } =2\log _{ 10 }{ x } \quad \Leftrightarrow \quad \frac { 1 }{ 2 } \log _{ 10 }{ y } =\log _{ 10 }{ x }  を意味している
従って \log _{ 10 }{ y } =2\log _{ 10 }{ x } より  y={ 10 }^{ 2\log _{ 10 }{ x }  } と言える。例えば x=3 としてみると y={ 10 }^{ 2\log _{ 10 }{ 3 }  }\quad \Leftrightarrow \quad y={ 10 }^{ 2\times 0.4771... }\quad \Leftrightarrow \quad y={ 10 }^{ 0.9542... }\quad \Leftrightarrow \quad y=9 となる

この計算尺は逆の見方をするとA尺が2位置から\sqrt { 2 } =1.4142...なども読み取れる

三乗計算尺
f:id:cqbosinko:20180311162846p:plain
例:上の定規の3位置の真下は{3}^{3}=27になっている。8の三乗は512。二乗と同様、イラストレータで上のD尺を横方向に33.33333...%に縮小し3つ並べて作成している。ポストスクリプトの高精度が発揮されるテーマである。このように「x^{ n }=a」のようなn乗の指数関数、もしくはn乗根は全て計算尺として表せる。例えば6乗の値、6乗根を調べたいなら以下のような尺を作ればよい
f:id:cqbosinko:20180311163301p:plain
D尺7位置で下尺が{ 7 }^{ 6 }=117649の近似であることが確認できる

メモ:
折り畳まれたスケールはどうもオイラーの公式を利用しているらしい。πに対しての対数?

ネイピア数を利用した指数計算

自然対数の底、2.718281828...をネイピア数と呼び数学では「e」と表す。この数を底とした指数関数のグラフは積分微分の計算をしても形が変わらず合同な指数関数グラフになる
f:id:cqbosinko:20180314142943p:plain

そのため計算上の利便性が高く、また自然科学の現象を観察し数式で表そうとすると、あらゆる場面で顔を出す不思議な性質を持つ。それらは多岐に及び確率や統計などにも及ぶ。プログラムで自然界を模倣しようとすると「\pi」と対となって利用する機会が多い。計算尺ではLL3尺などがこの値を利用している。この尺の作製に関して以下の原理を利用している(ここより\log _{ 10 }{ x }\log { x }と表記しています。\log _{ e }{ x } \ln { x } の意味になります )

\log { \left( x \right)  } =\log { \left( \ln { \left( y \right)  }  \right)  } \quad \Leftrightarrow \quad \overbrace { x=\ln { \left( y \right)  }  }^{ 対数の性質:\log { p } =\log { q } \Leftrightarrow p=qより }

この式は非常に興味深い構造をしている。両辺は対数関数「\log {  } 」のゲタを履いている状態であり、それでいて式の入出力は「x=\ln { \left( y \right)  } 」となっている。これは計算尺を作る場合に置いて意味を持つ。とにかくデーターを見てもらって実際に定規を作成して貰ったほうが話は早い。LL3尺の作成に関して以下のようなスプレッドシートを作成した

docs.google.com

「LL3尺=y」に対し「C尺=x」として、以下の計算尺の状態を追いかけてみる

f:id:cqbosinko:20180315141656p:plain

 y=10とすると方程式は「\log { \left( x \right)  } =\log { \left( \ln { \left( 10 \right)  }  \right)  } 」となる。未知数xを求めるとする

右辺の内括弧のなから計算していくと \\ \ln { 10 } =2.3025 となる。従って右辺は  \log { 2.3025 } =0.3622 となり、方程式は  \log { x } =0.3622 となる
これを対数関数から逆関数の性質を利用して指数関数に直すと  x={ 10 }^{ 0.3622 }=2.3025 となる

もう一例。LL3尺を y=100とすると\log { \left( x \right)  } =\log { \left( \ln { \left( 100 \right)  }  \right)  } \quad \Leftrightarrow \quad x=\ln { 100 } \quad \Leftrightarrow \quad x=4.6051...となる

通常の指数計算もできる
例えば {7}^{2} や {7}^{3} をこの計算尺を利用して計算してみる。この場合、上側のC尺を横方向にスライドさせて1の部分をLL3尺の7に合わせる。そのままC尺の2の位置の真下のLL3尺の値を読む

f:id:cqbosinko:20180315143628p:plain

他にも {45}^{2} や {45}^{3} を求めてみる。この場合は桁上がりを考えながら尺を利用する。C尺の1をLL3尺の4.5の位置に合わせる。後はC尺の2や3の位置のLL3尺を読み桁上がりを計算する

f:id:cqbosinko:20180315145145p:plain

このように計算尺を利用して複雑な指数計算の近似値を求めることが可能となる。尺なので大雑把な値の位置を掴む事になるが非常に短時間で一発で値がわかるので便利といえる。昔の天文学者や航海士たちはこのような計算尺を利用して様々な値を算出し計算していたと考えられる。この計算尺の指数計算の動作原理は以下のように数式化出来ると考えられる…

<TODO>