2022年10月28日金曜日

「やさしい時代」の計算

 先日、つぎのblog様をみまして、驚いちゃったのヨ。

ref. PEMDAS / BODMAS - 数学も英語も強くなる! 意外な数学英語 Unexpected Math English
http://math-eng.blogspot.com/2019/05/pemdas-bodmas.html


なんでも、2^3^2 の計算の結果が、Wolfram Alpha と TI-84 plusでちがーう値になるのだとか。ウーム。

いくつかの計算資源で試してみましたヨ。

  • fx-CG50

2^3^2 とキーを叩くと、数式表示モードでは「2の肩に3が、更に3の肩に2が乗る」表示になります。
これで計算すると、512 という値が返りました。うまく出来ております。
一方、1行表示モードで計算すると、驚いた事に 64 になるのですネ。
これは、TI-84 plusの計算式に寄せているということなのか ?
 

  • Numworks電卓

Numworksでは、数式表示モードしかないので、512 という値が返る様です。
シミュレータで試した範囲では、こうなりましたネ。
 

  • HP50G

HP50GのRPNモードでは、'2^3^2' と打ち込んでやります。すると、2の肩に3が... という数式表示になって、更にEVALキーで評価すると、512 が得られました。

当方が高校生の時分、こうした累乗の累乗の計算について、先生から、こんな風に教わりました。

例えば「a^b^c」という式は「aのbのc乗乗」と読むのだと。これは、括弧を補えば「aの(bのc乗)乗」という具合です。式の上では「a^(b^c)」で、累乗のバヤイ、結合規則は「右から左」という事のようです。

高校の当時は、こんな計算をするとは思えなかったのですが、今はプロ電一丁で気軽に計算できる御時世。昔の数学の勉強、やさしい時代だったなぁ、などと。

これは、Wolfram alphaで適用されている規則の様ですが、TI-84 plusではそうなっていないと言います。

関数電卓では、括弧の計算で、途中の結果を保留するのに内部でスタックを用いておりますが、昔の関数電卓では、かっこの段数=スタックが6段程度しか用意できないものでした。メモリ資源が十分ではなかったのですネ。そりゃそうです、昔の関数電卓では、プロ電でも38 stepで定数メモリ7個とかでしたヨ。
TI-84 plusになると、プロセッサもZ80互換でメモリも十分になってきましたが、式解釈部分は省メモリの構成だったのか ? などと夢想するのであります。そこで、累乗の演算子結合処理も、右から左結合ではなく、左から右結合でおこなっていたのだろうか、と。

ちなみに、HPのRPNは、こうした「メモリ資源の少ない」ハードウェアでも、スタックを明示的に利用する事で、式解釈の部分を省力化できたのだろうか ? などと夢想するものです。
同時に、演算子の優先順位を考慮する式解釈を人間にやらせる事で、式解釈の曖昧さ回避にもつながる「功徳」が得られたのではないか ?
上記のblog様では、PEMDAS / BODMAS ちうモンをご紹介されておりますが、こうした話題には、1行数式記述による演算子の優先順位の曖昧さに関わる問題を孕んでいる様に思われます。

TI-84 plusで、「2の肩に3が、更に3の肩に2が乗る」計算をする場合にはどうしたらいいのか ? 答えは簡単で、括弧を明示使用すればよろしい。「2^(3^2)」という具合ですネ、恐らく。(持っていないので、お持ちの方はお試し戴き度)

プログラミング言語では、数式記述部分で演算子の優先順位などを仕様として規定する様です。
グラフ電卓では、数式表示機能を充実させる事で、曖昧さ回避をしたのか ?

久しぶりに面白い話題に触れた格好ですが、こうした事も抑えておかないとならないので、今の学生さんのご苦労には頭が下がる思いであります。

0 件のコメント: