qepmax

以前,mathlibre の wiki に書いたものです(wiki はサーバーのトラブルで最近の記事が消えています)

*maxima からの利用
「qepmax」パッケージをロードすると,maxima 上から QEPCAD B が利用できます.

 論理記号 %implies %replies %eq %or %and %neg A E
 0項述語(命題)記号 true false

*インストール例

 cd ~
 mkdir ./.maxima
 echo -e "file_search_maxima:append([\"/usr/local/CAS/qepmax/###.{mac,mc}\"],file_search_maxima);
 file_search_lisp:append([\"/usr/local/CAS/qepmax/###.{lisp,lsp}\"],file_search_lisp);
 qepcad_installed_dir:\"/usr/local/CAS/qesource\";" > ./.maxima/maxima-init.mac
 svn co https://github.com/YasuakiHonda/qepmax.git
 cd /usr/local/CAS
 sudo mkdir ./qepmax
 cd ./qepmax
 sudo cp /home/user/qepmax.git/trunk/* ./
 rm -rf /home/user/qepmax.git
 sudo cp ./qepmax.mac ./qepmax-orig.mac
 sudo sed -i -E "s/load\(to_poly_solve\);//g" ./qepmax.mac
 sudo sed -i -E "s/infix\(\"\%implies\"\,60\,60\);/infix\(\"\%implies\"\,60\,60\);\ninfix\(\"\%or\"\,60\,60\);\ninfix\(\"\%and\"\,60\,60\);\ntexput\(\"\%implies\",\" \\\\\\\\rightarrow \",infix\);\ntexput\(\"\%or\",\" \\\\\\\\lor \",infix\);\ntexput\(\"\%and\",\" \\\\\\\\land \",infix\); /g" ./qepmax.mac
 sudo sed -i -e "s/\?\%and/\"\%and\"/g" ./qepmax.mac
 sudo sed -i -e "s/\?\%or/\"\%or\"/g" ./qepmax.mac
 cd ~

*利用例

wxmaxima の起動

 wxmaxima &

パッケージのロード

 load(qepmax)$

qepcad へのオプション

 qepcad_option;

変更方法

 qepcad_option:" +N20000000 +L200000 ";

有理式を項とする論理式の簡約

 qe([],x<=2/(x-1));

デフォルトではmaximaの簡約が先行する

 qe([],y=x/x);

正しい簡約

 (Strict(),qe([],y=x/x));

全称記号の消去

 qe([[A,x]],a*x^2+b*x+c>0);

特称記号の消去

 qe([[E,x],[E,y]],(x^2+y^2=r^2)%and(a*x+b*y=c));

ネスト

 qe([[A,x]],(%neg(x=a)) %implies (qe([[E,y]],x*y=b)));

拡張された量化記号F,G,C,X kの利用

 (F x)[p(x)] ⇔ R-{x|p(x)}が有限集合

 qe([[F,x]],((a<x) %and (x<b)) %and (1<x^2));

 (G x)[p(x)] ⇔ {x|~p(x)}が有限集合

 qe([[G,x]],((x<=a) %or (b<=x)) %or (x^2<=1));

 (C x)[p(x)] ⇔ {x|p(x)}がRの区間

 qe([[C,x]],((a<=x) %and (x<=b)) %and (1<=x^2));

 (Xk x)[p(x)] ⇔ {x|p(x)}の元の個数がk (k=1,2,...)

 qe([[X2,x]],((a<=x) %and (x<=b)) %and (1<=x^2));

拡張タルスキー論理式の利用

 xが方程式x^3-3*x-1=0の2番目に小さい根と等しい

 qe([],x=_root_2(x^3-3*x-1));

 xが方程式x^3-3*x-1=0の2番目に小さい根より小さい

 qe([],x<_root_2(x^3-3*x-1));

 xが方程式x^3-3*x-1=0の2番目に小さい根より大きい

 qe([],%neg(x<=_root_2(x^3-3*x-1)));

応用例

3次方程式 (x-4)^2*x-a*(x+2)=0 が異なる3実根を持つように実数 a を与えるとき,この方程式の小さい方から2番目の根 r の範囲は {r|-4<r<-2 または 1<r<4 } である

 tm:(x-4)^2*x-a*(x+2);
 f1:qe([[X3,x]],tm=0);
 f2:qe([[E,a],[E,x]],f1 %and x=_root_2(tm) %and x=r);
 qe([[A,r]],f2 %eq ( (-4<r %and r<-2) %or (1<r %and r<4)));

入出力の例は,インストール先の /usr/local/CAS/qepmax/rtest_qepmax.mac にもあります.