機械のギア比の計算                       戻る

 元日の朝(元旦?)、当ホームページの掲示板に、東京在住の方から、次のような書き込み
があった。

 4つのギアの歯の枚数を、a、b、c、d とする。 任意のギア比 m (0<m<1) に対して、
                   
となる自然数 a、b、c、d の値を、数表を用いず、計算で求めたい。どうしたらよいか?
 但し、a、b、c、d は、20以上120以下の値で、m との誤差は、0.0001以下としたい。

 聞く所によると、数表は小数点以下6桁までの数値(m)に対応した4つの整数(a、b、c、d)
が並んだもので、数十ページあり、B5サイズ位の単行本ほどあるそうだ。今までは、この数
表を使っていたが、これを計算でできないものかと、ずっと考えられていたとのことである。

 この問題に対して、私は、次のように考えた。 問題を整理して、

    1.0と1の間の任意の数 m を与える。
    2.m−0.0001<b/a<m+0.0001となる自然数 a、b を求める。
       ただし、a、b は400以上14400以下の数で、それぞれ
          P×Q (但し、P、Q は、20以上120以下の自然数)
       の形に素因数分解されるものとする。


 数学的な計算公式が思い浮かばなかったので、表計算ソフト Excel の助けを借りること
にした。
 以下で、例えば、m=0.4329 に対する計算方法を示す。他の m の値に対しても同様
である。



 各セルには、関数が組み込まれている。例えば、3201行については、次のような関数が
定義されている。

  B3201=FA(A3201,2) ・・・・・VBAにより作成された関数(下記参照)
  D3201=A3201*$D$1−INT(A3201*$D$1)
  E3201=IF(D3201<0.01,INT(A3201*$D$1),””)
  F3201=IF(E3201=””,””,FA(E3201,2))
  G3201=IF(E3201=””,””,E3201/A3201−$D$1)

また、条件にあっているかどうかを判断するために、D列、G列には、条件付き書式が、次の
ように設定されている。
   D列では、a の値の order が、102以上なので、0.01以下の場合に赤字を返す。
   G列では、問題の条件通り、−0.0001以上で0.0001以下の場合に赤字を返す。

(注) 各自然数に対して、その素因数分解(1つの数を、素数の積で表すこと)を返す関数
    FAは、VBAを用いて次のように記述される。

 Function  FA(n,d)
  If n<d*d  Then
   FA=n
  Else
  If n−Int(n/d)*d=0 Then
   FA=d & ”X” & FA(n/d,d)
  Else
  If d=2 Then
   d=3
  Else
  If d=3 Then
   d=5
  Else
  If d Mod 6 =1 Then d=d+4 Else If d Mod 6 =5 Then d=d+2
  End If
  End If
   FA=FA(n,d)
  End If
  End If
 End Function

    Excel を起動し、[ツール]−[マクロ]−[Visual Basic Editor] とクリックして
   Editor を起動し、[挿入]−[標準モジュール] を選択して、上記を記述すればよい。
   後は、Excelの任意のセルに、例えば、 =FA(8614,2) と打ち込むと、瞬時に、
   2×59×73 という、8614 の素因数分解が得られる。

以上の方法で、m=0.4329 の場合に適する自然数は、8組発見された。

  aの値 bの値 誤差 b/a−m の絶対値
2×13×47 23×23 0.00000310966
4×5×19 2×7×47 0.00000526316
2×13×47 2×232 0.00000310966
59×61 2×19×41 0.00000197278
2×132 31×59 0.00000059172
2×59×73 3×11×113 0.00000006966
3×3×13×31 53×79 0.00000090985
4×54 2×13×37

 上の表によれば、題意を満たす4つの自然数の組 (a,b,c,d) として、例えば、次のよう
なものが考えられる。
     

 質問者の方に伺うところによれば、m に要求されている誤差の範囲を考えれば、どうして
も4枚の組合せでないと、大抵の場合うまくいかないとのことである。
 しかしながら、上の計算方法でも分かるように、基本的には、素因数分解可能な2つの自
然数について、まず精査し、その中で、いろいろな歯車の組合せを考えた方が考えやすい
のではないかと思う。
 以上の計算を見ると、多くの方は、「数表を使った方がはやいのでは?」と多分思われる
だろう。それが、数表そのものが持つ価値だと私は思うが、その数表に載っている数の組
を独自に発見することも、数表を使いこなす以上に大切なことと私は考える。
 今回上に述べたことが、質問者の意図を100%理解しきって述べているとは、到底考え
られない。このページを見て、「こう考えたらいいのでは?」という方が現れることを期待す
るのみである。