Maxima/多項式・有理式
多項式・有理式
編集多項式[1]とは、変数の整数次の多数の項で表される式のことである。有理式とは、分数形式で表される式で分母と分子が多項式で表現されるものである。ゆえに多項式は、分母が1の時の有理式であると言うこともできる。ここでは、多項式の形式変換、分解、係数分離などを扱う。
多項式・有理式の表現
編集多項式の表現は普通に四則演算で表現できる。指数は ^ 記号でも、** 表現でも表す事ができる。
(%i1) (x+3)*(2*x-1); (%o1) (x + 3) (2 x - 1) (%i2) 2*x^3-x**2-2*x+3; 3 2 (%o2) 2 x - x - 2 x + 3
有理式は、除算記号 / で分数同様に表現する。/ は除算記号で四則演算順序にしたがうので、有理式の場合分母をカッコで囲う必要がある。
(%i3) (x-3)*(x+3)/((2*x-6)*(-x+1)); (x - 3) (x + 3) (%o3) ----------------- (1 - x) (2 x - 6)
式変形
編集Maximaに入力した数式は、上記の様に入力しただけでは、同類項の加算ぐらいしか簡略化は行われない。最終型を得るためには、式変形する必要がある。
展開(expand)
編集expand(多項式)は、多項式の積の展開を実行し、標準的な多項式表現にすることである。有理式に対しては分母・分子ともに展開を実行し、分子成分の項で有理式が多項分数式に展開される。約分は一切行われない。
(%i1) (x+3)*(2*x-1)-3*x+3; (%o1) (x + 3) (2 x - 1) - 3 x + 3 (%i2) expand(%); 2 (%o2) 2 x + 2 x (%i3) expand((x-3)*(x+3)/((2*x-6)*(-x+1))); 2 x 9 (%o3) ---------------- - ---------------- 2 2 - 2 x + 8 x - 6 - 2 x + 8 x - 6
因数分解(factor)
編集factor(多項式)は、多項式をできるだけ一次式の積の表現に分解[2]する。gfactor(多項式)は、多項式を複素数の領域まで因数分解する。有理式に対しては分母・分子ともに因数分解を実行し、約分も行う。多項式化している有理式も一度通分され、1つの分数式になる。
(%i1) x^4+2*x^2+1; 4 2 (%o1) x + 2 x + 1 (%i2) factor(%); 2 2 (%o2) (x + 1) (%i3) gfactor(%o1); 2 2 (%o3) (x - %i) (x + %i) (%i4) (x^2+2*x-3)/(x^2-3*x+2); 2 x + 2 x - 3 (%o4) ------------ 2 x - 3 x + 2 (%i5) factor(%); x + 3 (%o5) ----- x - 2 (%i6) (2*x^2-4*x+6)/(x-3)-2*x; 2 2 x - 4 x + 6 (%o6) -------------- - 2 x x - 3 (%i7) factor(%); 2 (x + 3) (%o7) --------- x - 3
正則有理化(rat)
編集rat(式)は有理式・多項式を正則有理化する。正則有理形式(CER)とは
- 一つの分数式であること。
- 分子と分母に公約多項式が無いこと。
- 分母の最大次数項の係数が正の数であること。
- 係数はすべて有理数であること。(小数も有理数に丸められる)
である。rat..(式)の式変形の関数はそのほか多数あるが、それらはすべて結果がCERになっている。
(%i1) (3/2*x^2-1/3*x-1/4)/(-1/3*x-4)-1*x; 2 3 x x 1 ---- - - - - 2 3 4 (%o1) ------------ - x x - - - 4 3 (%i2) rat(%); 2 22 x + 44 x - 3 (%o2)/R/ - ---------------- 4 x + 48
rat...()を実行するとCER形式であることを示す符号/R/がつく。これが付いていると以後の正則有理化し続けようとする。符合を忘却するには、ratdisrep(式)を用いる。
(%i3) %o2-1/(4*x+48); 2 11 x + 22 x - 1 (%o3)/R/ - ---------------- 2 x + 24 (%i4) ratdisrep(%o2); 2 22 x + 44 x - 3 (%o4) - ---------------- 4 x + 48 (%i5) %o4-1/(4*x+48); 2 22 x + 44 x - 3 1 (%o5) - ---------------- - -------- 4 x + 48 4 x + 48
またCRE形式にfactor(式),expand(式) を実行すると/R/符号を忘却してから、それらの式変形をする。(因数分解形式や展開形式はCRE形式になり得ないので。)
部分分数展開(partfrac)
編集partfrac(式,変数)は部分分数展開[3]を行う。
代入・置き換え
編集subst(代入する式,変数名,式)は(式)中の(変数)に(代入する式)を代入する。ratsubst(置き換える式,置き換えられる式,式)は(式)中の(置き換えられる式)に(置き換える式)を代入する。
分解
編集分子・分母を取り出す
編集num(有理式)は分子を返す。denom(有理式)は分母を返す。
各項をばらす・因子を分ける
編集pickapart(式,深さ)は(式)を(深さ)ので分解し、それぞれに(%tn)のラベルを付ける。展開多項式の場合、深さ1で各項ごとに分けることができる。
係数
編集coeff(有理式,変数名,次数)は、(有理式)から、(変数)の(次数)次項の係数を返す。(次数)は省略でき、その場合は1とされる。定数項を拾うのには、(次数)に0を入れる。
(%i1) ex:3*x^2+4*x-3; 2 (%o1) 3 x + 4 x - 3 (%i2) coeff(ex,x,2); (%o2) 3 (%i3) coeff(ex,x); (%o3) 4 (%i4) coeff(ex,x,0); (%o4) -3
ただし、多変数の多項式の係数は、正しいが期待した通りにはならないことがある。
(%i5) ex:2*x^2+3*x*y-y^2-5*x+3; 2 2 (%o5) - y + 3 x y + 2 x - 5 x + 3 (%i6) coeff(ex,y); (%o6) 3 x (%i7) coeff(ex,x); (%o7) 3 y - 5 (%i8) coeff(ex,x*y); (%o8) 0 (%i9) coeff(coeff(ex,x),y); (%o9) 3
多変数の場合は式(%i9)の様に、coeff(coeff(と繰り替えして、すべての変数に対して次数を指定するのが正しい。同様に定数項を拾うのにも、coeff(coeff(ex,x,0),y,0)が使える。また、これはdeclear(x,mainvar,y,constant)[4]などの宣言をしていても同様である。
DISPLAY2D:FALSE; ex:2*x+3*y+z+4=0; coeff(expand(rhs(solve(ex,z)[1])),x); coeff(expand(rhs(solve(ex,z)[1])),y); coeff(coeff(expand(rhs(solve(ex,z)[1])),x,0),y,0);
性質を特徴づける
編集次数
編集hipow(多項式,変数) lopow(多項式,変数)
変数のリスト
編集listofvars(式)
演習問題
編集関連項目
編集マニュアル該当箇所
編集- Maxima Manual: 12. Polynomials (英文の公式マニュアル)
- 日本語に翻訳中のマニュアル:4. 多項式