== フリ−ソフトmaximaの初歩的な操作2・・・展開,因数分解 ==
○以下で共通の操作
[1] Xmaxima においては,
画面に
Maxima 5.34.1 http://maxima.sourceforge.net using Lisp GNU Common Lisp (GCL) GCL 2.6.11 (a.k.a. GCL) Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1)
と表示されているので,
□(%i1) (%i2) などと表示される入力行番号の右側にあるカーソル位置に式を入力
□セミコロン ; を付ける
□Enterキーを押す
 (%i1) (%i2) などの行番号は,入力(input)の整理番号となっている.結果は出力(output)として (%o1)などの行番号が自動的に付けられる.
 Xmaximaでは入力したコマンドの行末に,セミコロンを付けなければならない.
[2]  wxMaxima においては
行おうとする操作に応じたコマンドを上端のメニュー画面から選ぶ.
例えば,簡単な四則計算を行うには,[数値処理]→[自動的に数値で出力]を選ぶと
(%i1) if numer#false then numer:false else numer:true;
(%o1) true
などと表示されるので,
□青字で書かれている(%i1) (%i2) などの右に書かれたコマンドを,backSpaceキーやDelキーを使って消す(このとき(%i1) (%i2) などの行番号が自動的に矢印( -->)に書き替えられる)
□式を入力する
□Shift+Enterを押す
 wxMaximaでは,行末のセミコロンは自動的に付けられるが,単にEnterキーを押すだけでなく,Shift+Enterを押す必要がある.
 結果は,各々の入力番号に対応した出力番号として行番号が付けられて(%o1) (%o2)の形で書かれる.


【多項式の展開,因数分解】
(1) (x+2)3を展開するには
(2) x2−4x+3を因数分解するには
○上記の[1]の操作を前提として,Xmaximaでは
 入力結果
(出力)
(1)expand( (x+2)^3 );x3 + 6 x2 + 12 x + 8
(2)factor(x^2-4*x+3);
※ factor(x^2-4x+3);ではないことに注意.掛け算にはアスタリスク * を使う
(x - 3) (x - 1)
 展開する:expand() を単なる数字に使った場合は,expand( (3+2)^3 );125のように1つの数になります.
 因数分解する:factor() を整数に使った場合は,素因数分解された結果が得られます.factor(360);23325

○上記の[2]の操作を前提として,wxMaximaでは「分からない関数は,アシストとして書かれるので,関数を覚えていなくても使える」
 入力結果
(出力)
(1)とりあえず(x+2)^3;と書くと(x+2)^3;と出力されるが,入力行にマウスをポイントしてメニュー欄から[式の変形]→[式の整理]を選ぶと自動的にratsimp((x+2)^3);に書き変わって結果が示されるx3 + 6 x2 + 12 x + 8
(2)とりあえずx^2−4*x+3;と書くとx^2−4*x+3;と出力されるが,入力行にマウスをポイントしてメニュー欄から[式の変形]→[因数分解]を選ぶと自動的に
factor(x^2−4*x+3);に書き変わって結果が示される
(x - 3) (x - 1)
 この問題では,有理的に(多項式や分数式で)簡単にする(rationally simplify):ratsimp()という関数を使っても,expand()を使っても同じ結果が得られる.
 高校では,係数に複素数まで使うことを許して因数分解する(複素数の範囲で因数分解)ことがあり,虚数単位iを使ってx2+1=(x+i)(x−i)のように変形する.
 gfactor(x^2+1);により(x-%i)*(x+%i)に因数分解される.・・・Maximaでは虚数単位は %i で示される.
 この関数のgfactor()はガウスの整数(the Gaussian integers)でa+bia , bは整数)の形の数まで使って因数分解することを表すので,高校数学でいう,無理数や複素数を使った因数分解の全部には対応していない.a+bia , bは整数)の形までを表す.必要なら,後で述べるように「方程式として解いてしまう」とよい.


【多項式の割り算】
(1) (43−5x−15)÷(2x−3)の割り算をして,商と余りを求めるには
(2) (x2+3xy+2y2+y+4)÷(x+2y+3)
A) xの式として割り算をして,商と余りを求めるには
B) yの式として割り算をして,商と余りを求めるには
 多項式の割り算で「割り切れる場合」「1文字しか含まれていない場合」には,割り算の商と余りはただ1通りに決まりますが,「2文字以上が含まれる式でかつ余りが0でないとき」はどの文字で割ったかによって結果が変わります.(1)は1文字の割り算なので単に割り算を指定すれば,商と余りが決まります.(2)はA)とB)で異なる結果になりますので,割られる式,割る式にさらに第3引数としてどの文字について割り算を行うのかを指定します.
○Xmaxima,wxMaximaいずれも下記の通り
 入力結果
(出力)
(1)divide(4*x^3-5*x-15 , 2*x-3);
※ 各々の係数の掛け算にはアスタリスク * を使うことに注意.以下の問題も同様
[2 x2 + 3 x + 2, - 9]
[商,余り]
の順に出力される
(2)
A)
divide(x^2+3*x*y+2*y^2+y+4,x+2*y+3,x);[y + x - 3, 4 y + 13]
(2)
B)
divide(x^2+3*x*y+2*y^2+y+4,x+2*y+3,y);[y + x - 1, 7 - 2 x]


【部分分数分解】・・・部分分数展開ともいう
(1) のような部分分数分解
(2) のような部分分数分解
○Xmaximaでは下記の通り
 入力結果
(出力)
(1)partfrac(1/(4*x^2-1),x);
(2)partfrac(1/(x^3-1),x);
○wxMaximaでは,[微積分]→[部分分数分解]を選択すると,対話型メニューが出てくるので,上の欄に関数 1/(4*x^2-1) などと分解したい分数式を記入し,下の欄にどの変数に関する式として分解するのか(この場合は当然 x )を指定します.
wxMaximaでは 1/(4*x^2-1) などの式を書いた入力行をマウスでポイントしておいて,後から[微積分]→[部分分数分解]としてもよい.
ここで使用する関数 partfrac() は第1引数に分数式,第2引数に変数を指定する必要があります.(2つ以上の変数がある場合に分解の仕方が変わるので,優先する変数を指定する)
← x についての式と見た場合は,分母は2次式になり,因数分解できる
← y についての式と見た場合は,分母は1次式になり,係数でくくる変形があるだけ


【最大公約数と最小公倍数を求めるには】
(1) 整数について
72=23×3260=22×3×5
の最大公約数22×3=12,最小公倍数23×32×5=360を求めるには.

(2) 単項式,多項式について
A) a2b2ca3b
の最大公約数a2b,最小公倍数a3b2cを求めるには.

B) x3+x2−x−1=(x+1)2(x−1)x4−x3−x2+x=x(x+1)(x−1)2
の最大公約数(x+1)(x−1),最小公倍数x(x+1)2(x−1)2を求めるには.
.
○wxMaximaの方は gcd(), lcm() とも正常に作動するが,Xmaximaの方はgcd()はデフォルトで作動,lcm()の方は load("functs");により予めこの関数が含まれるパッケージをロードしておく必要がある.
 入力結果
(出力)
(1) gcd(72,60);
lcm(72,60);
12
360
(2)
A)
gcd(a^2*b^2*c,a^3*b);
lcm(a^2*b^2*c,a^3*b);
a2b
a3b2c
(2)
B)
gcd(x^3+x^2-x-1,x^4-x^3-x^2+x);
lcm(x^3+x^2-x-1,x^4-x^3-x^2+x);
x2−1
(x-1)2x(x+1)2

...メニューに戻る ..maximaのメニューに戻る