Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

-数学- より厳密なqe()

 

f:id:jurupapa:20140504174347j:plain

ハゴロモジャスミン

 

ehitoさんのブログ

maximaのロジックシステム(6) - ATPとCASのこと

で「分母≠0の付帯」を考慮した処理の仕方をMaxima上で実現する方法が示されました。シンタックスシュガーが工夫されていて面白いです。今、ratsimpx2.mac及びqepmax.macに取り込んで、動作するようにしてみました。

まず、普通にQ.E.する場合です。(%i1)のように入力しても(%o1)の様に簡約化されてしまい、それをQ.E.してもy#0という条件は出てきません。

(%i1) f=1/(x/(y/z));

$$ \tag{%o1} f=\frac{y}{x\,z} $$

(%i2) qe([ ],f=1/(x/(y/z)));

$$ \tag{%o2} \left(x\neq 0\right) \wedge \left(z\neq 0\right) \wedge \left(f\,x\,z-y=0\right) $$

そこでStrict()$を付けてみます。これはsimp:falseを実行して簡約化を抑制するためです。

(%i3) Strict()$f=1/(x/(y/z));

$$ \tag{%o4} f=\frac{1}{\frac{x}{\frac{y}{z}}} $$

この簡約化抑制を行って入力した式でQ.E.するとy#0という条件もしっかり出てきます。

(%i5) Strict()$qe([ ],f=1/(x/(y/z)));

$$ \tag{%o6} \left(x\neq 0\right) \wedge \left(y\neq 0\right) \wedge \left(z\neq 0\right) \wedge \left(f\,x\,z-y=0\right) $$

 

SF()はStrict()に名前を変更しました。またnzdenqe()の機能を直接qe()に取り込みました。qe()はsimpの値を見てオリジナル動作をするか、nzdenqe()と同じように動作するかを変えています。