関数電卓コラム

09/03/26 ビミョーな優先順位

前回コラムで,「数式通り」関数電卓は掛け算記号の省略が可能であることを述べた.しかし,これが別の問題を誘発することについて述べなくてはなるまい.それは,省略された掛け算記号と他の演算子記号の優先順位である.

省略された掛け算記号

まず,次のような例を考えてみる.

[4] [π] [÷] [2] [π] [=]

当然,答は「2」になる計算だが機種により答が異なるのだ.

 
19.7392088 TI 30XBCASIO fx-912ES
2 その他全機種

「Natural display」方式の2機種だけ答が違う.どうして違うかというと,これら2機種は上の計算を「4×π÷2×π」と解釈しているからだ.つまり,省略された掛け算記号を正直に補って計算している.他機種は「2π」を一つの数値として扱うように,省略された掛け算記号は掛け算より優先順位が一段高くなっているのだ.

どちらが直感的に正しい解釈か,というのは言うまでもない.つい先日モデルチェンジしたfx-913ESはこの点が改善され,上の計算の答は正しく「2」になるようになった.

上記2機種のために弁護しておくと,これらはいずれも入力方式の特長を生かせば,上の計算は

[] [4] [π] [↓] [2] [π] [=]

と入力するべきで,上述の問題は発生しないのだ.逆に普通の「数式通り」電卓では,

[1] [÷] [2] [ln] [3] [=]

とやると,

と解釈されてしまう.一方の「Natural display」は

[] [1] [↓] [2] [→] [ln] [3] [=]

と,まさに「数式通り」に入力することが出来る.それ故,省略された掛け算記号の優先順位に思いが至らなかったのだろうか.

省略された掛け算の優先順位を把握する

続いて,省略された掛け算記号は他の演算子とどういう優先順位関係にあるのか,具体例で見ていこう.

1. 文字の後ろにかかる関数

あらかじめ,文字変数Aに「2」を入れておく.など,文字Aの直後に掛かる関数においては,優先順位は省略された掛け算より高い.従って答は「8」,「4」,「1」だ.これは私の持つ全機種で例外はない.

2. sin,lnなどの引数を後ろに取る関数

[rad]モードで計算する.

[sin] [2] [π] [=]

全機種で答は「0」である.省略された掛け算は,後ろに引数を持つ関数より優先順位が高い.これも,直観と一致する解釈だ.一方

[sin] [2] [×] [π] [=]

とやると答は「2.856642116」となる.これは,計算が「sin(2)×π」と解釈されるためだ.関数の引数は掛け算よりも優先順位が高い.この辺になってくると,直感的な優先順位と電卓の解釈が一致しているかどうか,怪しくなってくる.

この点,「Natural display」機は後ろに引数を取る関数は全て開き括弧を伴う.そして,閉じ括弧が現れるまで書かれた記号を全て引数と解釈する.全く同じ入力

[sin] [2] [×] [π] [=]

をCASIO fx-912ESでやってみると,

と答は「0」になる.しかし,この「関数に必ず開き括弧が付随する」という方式は多くの場合括弧を閉じてやらないと正しい解釈にならない.例えばの計算を「Natural display」で

[sin] [π] [+] [cos] [π] [=]

と入力すると,これはと解釈される.一方の「数式通り」では正しく解釈され,「-1」が返る.

「分数ブロック」の優先順位

「Natural display」方式は√,分数は一つのブロックとして解釈される.当然優先順位は最も高い.例えばの場合,「数式通り」では

[( ] [1] [÷] [2] [ )] [x2] [=]

と括弧を使う必要がある.一方の「Natural display」は,[x2]が分数ブロック全体にかかるので括弧は不要.

[] [1] [↓] [2] [→] [x2] [=]

ご覧の通り.

関数に開き括弧が付随するのは得か損か?

前回のコラムだけで判断すると現行の「Natural display」方式のように関数に自動的に開き括弧が付随するのは迂遠だと思われるかも知れない.しかし,次の例はどうだろうか.

この計算は任意の角度で成り立つが,例えばθにを入れてやって頂きたい.

「数式通り」

[( ] [sin] [( ] [π] [÷] [2] [ )] [ )] [x2] [+] [( ] [cos] [( ] [π] [÷] [2] [ )] [ )] [x2] [=]

20手必要.割り算の優先順位が関数より低いので括弧を使う必要があり,[x2]の優先順位は関数より高いので,関数に括弧を使う必要がある.括弧のネストが深くかなりわかりにくい.

「Natural display」

[sin] [] [π] [↓] [2] [→] [ )] [x2] [+] [cos] [] [π] [↓] [2] [→] [ )] [x2] [=]

18手.更に,fx-913ESなら

[sin] [π] [] [2] [→] [ )] [x2] [+] [cos] [π] [] [2] [→] [ )] [x2] [=]

と16手で完成.見た目にも非常にわかりやすい.「Natural display」特有の「関数が一つのブロックと解釈される」ルールのための自乗に括弧を使う必要はないのだ.ただしsin,cosを閉じるため明示的に閉じ括弧を入力する必要はあるが.