指数と対数 | rpn入門(初級編) [講座] | 逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓rpnの実践ウェブ   
rpn hacks! アールピーエヌ・ハックスサイトマップ

rpn | 講座 | rpn入門 | rpnの使い方を基本から応用まできちんと学習。

HOME > 講座 > rpn入門 > 初級編 > 指数と対数 hatena yahoo buzzurl livedoor del.icio.us nifty newsing twitter facebook rss ソーシャルブックマーク

指数と対数

計算を簡単にする野望

 三角関数の研究が成熟していく時期の少し前、スコットランド人のジョン・ネピアが計算を簡単にしようと対数のアイデアを考えつきます。彼はどんな数でも必ずある数の何乗かで表わされることを尽き止めました。

例えば、30は10の1.477乗で表わされ、60は10の1.778乗で表わされます。

    1.477            1.778
  10      ≒ 30    10      ≒ 60


これをrpnで表現すると、以下のようになります。

  >rpn 10 1.477 p
  29.9916
  >rpn 10 1.778 p
  59.9791


驚くことに、これらの指数である1.477と1.778を足した数の3.255を指数とする10の3.255乗は「30 * 60」の答えに等しいことが分かります。更に驚くことに、1.477から1.778を引いた数の-0.301を指数とする10の-0.301乗は「30 / 60」に等しいのです。式で表すと次のとおりです。

    1.477 + 1.778                   1.477 - 1.778     30
  10              = 30 * 60      10              = ----
                                                      60


さて、上の説明の指数同士の和は、rpnだと以下のように表現できます。

  >rpn 10 1.477 1.778 + p
  1798.87


本来の答えは「30 * 60 = 1800」ですが、計算誤差が発生するから、ピッタリとはいきません(指数の精度を高めると限りなく1800に近づきます)。

指数の逆は対数

 ところで、逆に30は10の何乗かをどのようにして求めるのでしょうか。それが「Log 30」です。式で表すと以下のとおりです。

                         1.47712
  Log 30 = 1.47712    10       = Log 30


この式はrpnでは、以下のように表現します。

  >rpn 30 j         ...... a)
  1.47712


「j」は30が10の何乗かを求める関数です。前述の1.477はこのようにして求めた数の小数点4位以下を切り捨てた値でした。

ここまでで、Logと冪乗の関係が分かりましたが、もう一度、両者の関係を具体的な数字で示してみましょう。つまり、以下の数式が成り立つはずです。

    Log 30
  10      = 30


rpnで、この等式の左辺を計算してみましょう。

  >rpn 30 j 10 x p  ...... b)
  30


この逆ポーランド式は「30のLogを出して10に冪乗する」と言い換えられます。

値の入れ替え

 さて、b)の式で見慣れない記号「x」がありますが、これは「x」の1つ前と2つ前の計算結果を交換する操作記号で、「30 j」の計算値と「10」を交換することを示しています。

         交換
        +----+
        |    |
        v    v
       ----  --
  >rpn 30 j  10 x p


つまり、b)の式は「rpn 10 30 j p」と等価です。

  rpn 30 j 10 x p    ← 同じ →   rpn 10 30 j p


「30のLogを出して10に冪乗する」という表現に、数式を合わせたかったので「x」を使いましたが、この「x」はrpnの逆ポーランド計算では多用するので、この機会に是非覚えておくといいでしょう。分かりやすいようにもっと簡単な例を示しておきますね。

  >rpn 1 2 /
  0.5
  >rpn 1 2 x /
  2


「1 2 x」で1と2を交換していますから、結局「2 1 /」を計算していることになるのです。

注釈学校では歴史的な背景を学ばずに「対数ありき」でLogを学びますが、そうすると対数の驚異を感じることができません。当時は大航海時代でしたが、天文学を使った膨大な計算が位置測量のために不可欠でした。ネピアは実に20年間もかけて対数表を完成させて、そのような計算に忙殺されることから解放してくれたのです。努力の賜物である対数は、人の耳で感じる音の大きさの変化が対数で表せたり、地震のエネルギーの大きさを対数で表したマグニチュードなど、何故か自然現象の説明に適しています。


『今回の問題』………………………………………………………………………
  以下を逆ポーランド記法式に変換せよ。
  (1)  計算結果が3.14となる10の冪乗値を求める式。
  (2)  3.14の自乗を対数の計算で求める式((1)の冪乗値を利用のこと)。
  (3)  数値の1から3までをスタックに積む式。
  (4)  1から3までをスタックに積んで、最後に積んだ値とその前に積んだ
       値を交換する式。
…………………………………………………………………………………………

答えはこちらLinkIcon

警告文字で作られた図表や式が崩れることがあります。ブラウザによっては固定幅フォントをMSゴシックにするときれいに表示されます。それでも崩れる場合は図表や式をメモ帳にコピー後、閲覧下さい。

警告rpn試用版と標準版(2kリビジョン)はダブルクォートで囲ってください。

rpn 1 2 + ⇒ rpn "1 2 +"
rpn 1 -c foo ⇒ rpn "1" -c "foo"

ダブルクォートは省略できることが多いのですが、慣れない間は囲んだほうが無難です。なお、本ウェブサイトの記事ではrpn標準版(98リビジョン)を使用しているため囲っていません。詳しくは技術サポートの「rpn TIPS参照ください。

注意rpnの障害情報はこちら

警告rpn試用版の場合、複雑なプログラムや処理時間のかかるプログラムの一部には動作しないものがあるかもしれません。あくまで無料提供であることを勘案・了承ください。rpn標準版は、すべてのプログラムが動作します。