ガウス記号 | 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 ソーシャルブックマーク

ガウス記号

数を省略するには

 多少の誤差を了解した上で、計算を簡略化するものに省略算があります。計算の速い人は数値を省略してざっと計算するのが得意ですよね。その省略算ですぐに思い浮かぶのが四捨五入です。

例えば、5.5を小数点一位で四捨五入すると6になります。つまり、省略したい桁の数字が0~4なら切り捨てて、5~9なら切り上げて省略した桁の1つ上の桁を1増やす手続きのことです。

日常生活でもよく使う四捨五入は、ガウス(1777~1855)の記号を使って求めることができます。ガウス記号は数値を[]で囲った[x]で表現されます。

  [5.5] = 5


小数点以下がカットされているのが分かります。ガウス記号の正確な定義は「xを越えない最大の整数」となっています。例では、5.5を越えない最大の整数ということで5ということになります。rpnではガウス記号は「i」を使うので、以下のように表現します。

  >rpn 5.5 i
  5


なお、rpnにはガウス記号によく似た演算記号にfがあります。fを使うと小数点以下を無条件に切り落とすことができます。ガウス記号との違いは負の数の扱いです。

  >rpn 5.5 i -5.5 i 5.5 f -5.5 f
  5 -6 5 -5


正の数である限り、iとfに違いはありません。

四捨五入の計算方法

 では、ガウス記号を使うことで、四捨五入を計算してみましょう。四捨五入は、ある数値xに0.5を加え、その数を越えない最大の整数をとると、小数点以下を四捨五入することと同じになります。

つまり、rpnで小数点以下を四捨五入するには、四捨五入したい数字に0.5を加えてから、ガウス記号で計算すると出てきます。例えば、四捨五入したい数字が5.5の場合は以下のようになります。

  >rpn 5.5 .5 + i
  6


5.4の場合は四捨五入すると5になるはずですね。試してみましょう。

  >rpn 5.4 .5 + i
  5


きちんと四捨五入されていますよね。

ガウスの記号で曜日を計算

 次に、もう少し複雑なガウス記号を使った応用例を示します。ある日付の曜日を知りたい時に以下の公式が使えます(1582年10月15日以降に対応)。

              y          y           y          13 * m + 8
  w = (y + [ --- ] - [ ----- ] + [ ----- ] + [ ------------ ] + d) % 7
              4         100         400              5


ここで、yは西暦年(但し、月が1と2の場合は1を減じる)、mは月(但し、月が1と2の場合は12を加える)、dは日になります。ガウスの記号が多用されていますが、一つ例を挙げると

     1999
  [ ------ ] = 499
       4


ということになります(1999÷4=499.75)。

数式の最後に「% 7」という記号がありますが、これは7で割った余りを出す記号(剰余演算子)です。従って、上記の式を計算して出てくる数は結果的に0~6の数値のいずれかになります。そして、それら数値には以下の意味があります。

  0=日曜、1=月曜、2=火曜、3=水曜、4=木曜、5=金曜、6=土曜


さっそく、実際の日付を試してみましょう。2000年1月1日の曜日を計算してみると、上の条件から、y=1999、m=13、d=1となるので(月が1月なので年から1を引いて、月に12を足している)、rpnで書き直すと以下のようになります。

  >rpn 1999 1999 4 / i + 1999 100 / i - 1999 400 / i + 13 13 * 8 + 5 / i + 1 + 7 %
  6


答えは6なので、土曜日ということになりますね。正しいかどうかWindowsのカレンダーで確かめてみましょう。

この公式さえあれば、自由に曜日を計算することができます。自分の誕生日や身近な人の誕生日、記念日の曜日を思い起こせるでしょう。

『今回の問題』………………………………………………………………………
  以下を逆ポーランド記法式に変換せよ。
  (1)  1030円の商品に5%の消費税を加える式。
  (2)  1030円の商品に5%の消費税を加えて、小数点以下を四捨五入する式。
  (3)  280人から13分の1の人を選び出し、端数を六捨七入する式。
…………………………………………………………………………………………

答えはこちら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標準版は、すべてのプログラムが動作します。