読者です 読者をやめる 読者になる 読者になる

Maxima で綴る数学の旅

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

-数学- 高次多変数連立方程式をグレブナー基底を使って解く

 

f:id:jurupapa:20140706170631j:plain

ダブル チョコレート コーヒー ジェリー フラペチーノ®

にほんブログ村 科学ブログ 数学へ
にほんブログ村

 

コメントに頂いた連立2元2次方程式について、考えてみます。

(%i1) poly1:x^2+2*x*y-3*y^2-5;
$$ \tag{%o1} -3\,y^2+2\,x\,y+x^2-5 $$
(%i2) poly2:2*x^2-x*y+6*y^2-1;
$$ \tag{%o2} 6\,y^2-x\,y+2\,x^2-1 $$
(%i3) solve([poly1=0,poly2=0],[x,y]);
$$ \tag{%o3} \left[ \right] $$

 

単純にsolve()を使っても解けません。ちなみに[ ]が返るのはMaximaが解を見つけられないときであって、解が無いことを意味するとは限りません。(実際この方程式には解があります)。

 

状況を確認するためにグラフを描いてみます。
(%i4) load(draw)$
(%i5) draw2d(color="blue",implicit(poly1=0,x,-5,5,y,-5,5),
color="red", implicit(poly2=0,x,-5,5,y,-5,5));

f:id:jurupapa:20140710231634p:plain


$$ \tag{%o5} \left[ \mathrm{gr2d}\left(\mathrm{implicit} , \mathrm{implicit}\right) \right] $$

なるほど、双曲線の間に楕円があり、交点はありません。つまり実数解は無いようです。念のため、Quantifier Eliminationで実数解が無いことを証明しておきます。


(%i6) load(qepmax);
$$ \tag{%o6} \verb|/Users/yasube/Programming/qepmax/qepmax.mac| $$
(%i7) qe([[E,x],[E,y]], poly1=0 %and poly2=0);
$$ \tag{%o7} \mathbf{false} $$

つまり実数解はありません。

 

では複素数も含めて考えても解は無いのでしょうか。このような高次多変数連立方程式を考えるときの定番は、グレブナー基底です。

 

まずgrobnerパッケージを読み込みます。
(%i8) load(grobner);
Loading maxima-grobner $Revision: 1.6 $ $Date: 2009-06-02 07:49:49 $
$$ \tag{%o8} \verb|/Users/yasube/Programming/test-imaxima/Generic/5.33.0/share/maxima/5.33.0/share/contrib/Grobner/grobner.lisp| $$

 

次にgbとしてpoly1とpoly2のグレブナー基底を求めます。
(%i9) gb:poly_buchberger([poly1, poly2], [x,y]);
$$ \tag{%o9} \left[ -3\,y^2+2\,x\,y+x^2-5 , 6\,y^2-x\,y+2\,x^2-1 , -12\,y^2+5\,x\,y-9 , 189\,y^3+73\,y+45\,x , -189\,y^4-181\,y^2-81 \right] $$

 

この基底の5つ目の式はyだけに関する4次の多項式です。これをイコール0と置いた方程式を解けば無事にyが求まります。

(%i10) ysollist:solve(gb[5]);
$$ \tag{%o10} \left[ y=-\frac{\sqrt{5\,\sqrt{1139}\,i-181}}{3\,\sqrt{42}} , y=\frac{\sqrt{5\,\sqrt{1139}\,i-181}}{3\,\sqrt{42}} , y=-\frac{\sqrt{-5\,\sqrt{1139}\,i-181}}{3\,\sqrt{42}} , y=\frac{\sqrt{-5\,\sqrt{1139}\,i-181}}{3\,\sqrt{42}} \right] $$

4つのyが求まりました。

どれでも構いませんが、例えばこの中の最初のyについて対応するxの値を求めます。それには求めたグレブナー基底gbの4つめの式を使います。yが分かっていればこれはxの1次式ですから対応するxが求まります。

(%i11) xsol:solve(gb[4]), ysollist[1];
$$ \tag{%o11} \left[ x=\frac{7\,\left(5\,\sqrt{1139}\,i-181\right)^{\frac{3}{2}}+1022\,\sqrt{5\,\sqrt{1139}\,i-181}}{45\,42^{\frac{3}{2}}} \right] $$

 

念のため、最初の2つの多項式poly1, poly2に求めたy, xを代入してみます。

(%i12) [poly1, poly2], ysollist[1], xsol;
$$ \tag{%o12} \left[ \frac{\left(7\,\left(5\,\sqrt{1139}\,i-181\right)^{\frac{3}{2}}+1022\,\sqrt{5\,\sqrt{1139}\,i-181}\right)^2}{150028200}-\frac{\sqrt{5\,\sqrt{1139}\,i-181}\,\left(7\,\left(5\,\sqrt{1139}\,i-181\right)^{\frac{3}{2}}+1022\,\sqrt{5\,\sqrt{1139}\,i-181}\right)}{119070}-\frac{5\,\sqrt{1139}\,i-181}{126}-5 , \frac{\left(7\,\left(5\,\sqrt{1139}\,i-181\right)^{\frac{3}{2}}+1022\,\sqrt{5\,\sqrt{1139}\,i-181}\right)^2}{75014100}+\frac{\sqrt{5\,\sqrt{1139}\,i-181}\,\left(7\,\left(5\,\sqrt{1139}\,i-181\right)^{\frac{3}{2}}+1022\,\sqrt{5\,\sqrt{1139}\,i-181}\right)}{238140}+\frac{5\,\sqrt{1139}\,i-181}{63}-1 \right] $$

 

あまりに複雑ですが、ratsimp()で簡約すればこの通り。
(%i13) ratsimp(%);
$$ \tag{%o13} \left[ 0 , 0 \right] $$
(%i14)

This is a test.
天気