: Maxima数学II自習教材開発
教材の概要
1 式と証明 1)式と計算
 1.2次式の展開と因数分解
 2.二項定理
 3.整式の割り算
 4.分数式とその計算
 5.恒等式
 101.補充問題

Maxima数学II自習教材試行報告用紙(Word)
Maxima数学II自習教材試行報告用紙(PDF)

: 教材の概要

活動時間 
 自宅での予習か授業初めの5分程度
活動概要
 1 タブレット等を用いてトライ
  1) 教科書の該当ページを開く
  2) このWebページを開く
  3) Maxima on lineのWebページを開く
  4) 該当コマンドをMaximaOnLineにコピペして、実行
 2 自分なりの感触、着想
  1) 自分なりに、実行結果を見て、気づいたり感じたりすることがないか、考えてみる。
  2) ワークシートに、考えてみたこと(意見・質問・感じたこと)を書く
  3) ワークシートを、事前に提出する場合は、課題提出フォームを使うこと。
 3 問題の雰囲気を2で感じてから、授業へ
  1) 班活動などで自分の考えを仲間に伝える
  2) 仲間の考えを受け止める
  3) 筋が通って、見通しのよい解法、数学的な論点をうまく処理した解法をまとめる


http://www.ac.cyberhome.ne.jp/~konoha/KNOPPIX/MaximaBook.pdf
参照テキスト
 数研出版新編数学A

:   1.3次式の展開と因数分解
   A. 3次式の展開の公式
◆コマンド番号101
●展開の公式
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* "できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で" */;powerdisp:false /* "降べきの順にして" */$
MONDAI:"展開の公式 101 (a+b)^3は展開すると"/*(◆修正部分1)*/$
KOUSATU:"aの次数ごとの係数を求めて、・・・"/**/;

KANSUU:"";
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$

TEJUN:""
(e0:(a +b)^3 /* "この式の展開(◆修正部分2)" */,
moji:a /* "この文字に着目し" */,
e1:a +b /* "第1因子(◆修正部分3)" */,
e2:e1 /* "第2因子として" */,
e3:e1 /* "第3因子として" */);
e:expand(e1*e2*e3) /**/$
(jem:hipow(e,moji) /**/,
print(e1) /**/,
print(e2) /**/,
print(e3) /* 縦にして */,
print("----------各次数の係数に注目して") ,
bL:["","...","......",".........","............",
"...............","..................","....................."] /**/,
for k:0 thru jem do(
/**/if jem>k then print(bL[k+1],coeff(e,moji,(jem-k))*moji^(jem-k))
/*....*/else print(bL[k+2],coeff(e,moji,(jem-k))*moji^(jem-k))
/**/) /* "xの各次数の項を求めて(◆直前の3式から求め◆)" */,
em:rat(e,moji) /**/,print("---------------------------------したがって") ,print(em))$

KAITOU:[em,"(展開結果)"]/*解答*//**/$
SUJIMITI:"aの3次の係数は(  )、2次は(  )、・・・"/**/$
FURIKAERI:"(例:具体的な数値で、3での整除を現認など、実行者の振り返りを書きこむこと)"$

KAKUNIN:"確認"/**/$
e0:expand(e0) /**/$
kknn:[e0,"展開結果"]$
print(kknn)/*確認*/$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"展開の公式 101 (a -b)^3は展開すると"/*(◆修正部分1)*/$
(e0:(a -b)^3 /* "この式の展開(◆修正部分2)" */,
e1:a -b /* "第1因子(◆修正部分3)" */,


◆コマンド番号102
●展開の公式
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* "できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で" */;powerdisp:false /* "降べきの順にして" */$
MONDAI:"例1・練習1 101 (x+1)^3は展開すると"/*(◆修正部分1)*/$
KOUSATU:"展開公式にあてはめて、・・・"/**/;

KANSUU:"";
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$

e3j:(A+B)^3=A^3+3*A^2*B+3*A*B^2+B^3/**/;
el:[x,1]/*(◆修正部分2)*/;
sl:[A=el[1],B=el[2]];se3j:subst(sl,e3j);
print(se3j);
kknn:[expand(subst(sl,lhs(e3j)))];

KAITOU:[se3j,"(展開結果)"]/*解答*//**/$
SUJIMITI:"公式のaは(  )、bは(  )なので、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、3での整除を現認など、実行者の振り返りを書きこむこと)"$

KAKUNIN:"確認"/**/$
(e:(x +1)^3 /* "この式の展開(◆修正部分3)" */,
moji:x /* "この文字に着目し(◆修正部分3)" */,
e1:x +1 /* "第1因子(◆修正部分3)" */,
e2:e1 /* "第2因子として" */,
e3:e1 /* "第3因子として" */);
e:expand(e) /**/$
(jem:hipow(e,moji) /**/,
print(e1) /**/,
print(e2) /**/,
print(e3) /* 縦にして */,
print("----------各次数の係数に注目して") ,
bL:["","...","......",".........","............",
"...............","..................","....................."] /**/,
for k:0 thru jem do(
/**/if jem>k then print(bL[k+1],coeff(e,moji,(jem-k))*moji^(jem-k))
/*....*/else print(bL[k+2],coeff(e,moji,(jem-k))*moji^(jem-k))
/**/) /* "xの各次数の項を求めて(◆直前の3式から求め◆)" */,
em:rat(e,moji) /**/,
kknn:[em,"展開結果"],
print(kknn)/*確認*/)$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"例1・練習1 102 (x-2*y)^3は展開すると"/*(◆修正部分1)*/$
el:[x,-2*y]/*(◆修正部分2)*/;
(e:(x -2*y)^3 /* "この式の展開(◆修正部分3)" */,
moji:x /* "この文字に着目し(◆修正部分3)" */,
e1:x -2*y /* "第1因子(◆修正部分3)" */,


◆コマンド番号103
●展開の公式
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"練習2 103 (a+b)*(a^2-a*b+b^2)は展開すると"/*(◆修正部分1)*/$
KOUSATU:"aの次数ごとの係数を求めて、・・・"/**/;

KANSUU:"";
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$

TEJUN:""
(e0:(a+b)*(a^2-a*b+b^2) /* この式の展開(◆修正部分2) */,
moji:a /* この文字に着目し */,
e1:a +b /* 第1因子(◆修正部分3) */,
e2:(a^2-a*b+b^2) /* 第2因子として(◆修正部分3) */)$
e:expand(e1*e2) /**/$
(jem:hipow(e,moji) /**/,
print(e1) /**/,
print(e2) /* 縦にして */,
print("----------各次数の係数に注目して") ,
bL:["","...","......",".........","............",
"...............","..................","....................."] /**/,
for k:0 thru jem do(
/**/if jem>k then print(bL[k+1],coeff(e,moji,(jem-k))*moji^(jem-k))
/*....*/else print(bL[k+2],coeff(e,moji,(jem-k))*moji^(jem-k))
/**/) /* xの各次数の項を求めて(◆直前の3式から求め◆) */,
em:rat(e,moji) /**/,print("---------------------------------したがって") ,print(em))$

KAITOU:[em,"(展開結果)"]/*解答*//**/$
SUJIMITI:"aの3次の係数は(  )、2次は(  )、・・・"/**/$
FURIKAERI:"(例:具体的な数値で、3での整除を現認など、実行者の振り返りを書きこむこと)"$

KAKUNIN:"確認"/**/$
e0:expand(e0) /**/$
kknn:[e0,"展開結果"]$
print(kknn)/*確認*/$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"展開の公式 103 (a-b)*(a^2+a*b+b^2)は展開すると"/*(◆修正部分1)*/$
(e0:(a-b)*(a^2+a*b+b^2) /* この式の展開(◆修正部分2) */,
e1:a -b /* 第1因子(◆修正部分3) */,
e2:(a^2+a*b+b^2) /* 第2因子として(◆修正部分3) */)$


◆コマンド番号104
●展開の公式
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"例2・練習3 104 (x+4)*(x^2-4*x+16)は展開すると"/*(◆修正部分1)*/$
KOUSATU:"展開公式にあてはめて、・・・"/**/;

KANSUU:"";
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$

e3j:(A+B)*(A^2-A*B+B^2)=A^3+B^3/**/;
el:[x,4]/*[A,B]A,Bに代入するもの(◆修正部分2)*/;
sl:[A=el[1],B=el[2]];se3j:subst(sl,e3j);
print(se3j);
kknn:[expand(subst(sl,lhs(e3j)))];

KAITOU:[se3j,"(展開結果)"]/*解答*//**/$
SUJIMITI:"公式のaは(  )、bは(  )なので、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、3での整除を現認など、実行者の振り返りを書きこむこと)"$

KAKUNIN:"確認"/**/$
(e0:(x +4)*(x^2-4*x+16) /* この式の展開(◆修正部分3) */,
moji:x /* この文字に着目し(◆修正部分3) */,
e1:x +4 /* 第1因子(◆修正部分3) */,
e2:x^2-4*x+16 /* 第2因子として(◆修正部分3) */,
e:expand(e1*e2) /**/)$
(jem:hipow(e,moji) /**/,
print(e1) /**/,
print(e2) /* 縦にして */,
print("----------各次数の係数に注目して") ,
bL:["","...","......",".........","............",
"...............","..................","....................."] /**/,
for k:0 thru jem do(
/**/if jem>k then print(bL[k+1],coeff(e,moji,(jem-k))*moji^(jem-k))
/*....*/else print(bL[k+2],coeff(e,moji,(jem-k))*moji^(jem-k))
/**/) /* "xの各次数の項を求めて(◆直前の3式から求め◆)" */,
em:rat(e,moji) /**/,
kknn:[em,"展開結果"],
print(kknn)/*確認*/)$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"例2・練習3 104 (2*x-a)*(4*x^2+2*a*x+a^2)は展開すると"/*(◆修正部分1)*/$
el:[2*x,-a]/*(◆修正部分2)*/;
(e0:(2*x -a)*(4*x^2+2*a*x+a^2) /* この式の展開(◆修正部分3) */,
moji:x /* この文字に着目し(◆修正部分3) */,
e1:2*x -a /* 第1因子(◆修正部分3) */,
e2:4*x^2+2*a*x+a^2 /* 第2因子として(◆修正部分3) */,


   B. 3次式の因数分解
◆コマンド番号105
●因数分解の公式
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"例3・練習4 105 x^3+8は因数分解すると"/*(◆修正部分1)*/$
KOUSATU:"因数分解の公式にあてはめて、・・・"/**/;

KANSUU:"";
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$

e3j:A^3+B^3=(A+B)*(A^2-A*B+B^2)/**/;
el:[x,2]/*[A,B]A,Bに代入するもの(◆修正部分2)*/;
sl:[A=el[1],B=el[2]];se3j:subst(sl,e3j);
print(se3j);
kknn:[expand(subst(sl,rhs(e3j)))];

KAITOU:[se3j,"(因数分解結果)"]/*解答*//**/$
SUJIMITI:"公式のaは(  )、bは(  )なので、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、3での整除を現認など、実行者の振り返りを書きこむこと)"$

KAKUNIN:"確認"/**/$
(e0:x^3 +8 /* この式の因数分解(◆修正部分3) */,
moji:x /* この文字に着目し(◆修正部分3) */,
e1:x +2 /* 第1因子(◆修正部分3) */,
e2:x^2-2*x+4 /* 第2因子として(◆修正部分3) */,
e:expand(e1*e2) /**/)$
(jem:hipow(e,moji) /**/,
print(e1) /**/,
print(e2) /* 縦にして */,
print("----------各次数の係数に注目して") ,
bL:["","...","......",".........","............",
"...............","..................","....................."] /**/,
for k:0 thru jem do(
/**/if jem>k then print(bL[k+1],coeff(e,moji,(jem-k))*moji^(jem-k))
/*....*/else print(bL[k+2],coeff(e,moji,(jem-k))*moji^(jem-k))
/**/) /* "xの各次数の項を求めて(◆直前の3式から求め◆)" */,
em:rat(e,moji) /**/,
kknn:[em,"展開結果"],
print(kknn)/*確認*/)$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"例3・練習4 105 125*x^3-y^3は因数分解すると"/*(◆修正部分1)*/$
el:[5*x,-y]/*[A,B]A,Bに代入するもの(◆修正部分2)*/;
(e0:125*x^3 -y^3 /* この式の因数分解(◆修正部分3) */,
moji:x /* この文字に着目し(◆修正部分3) */,
e1:5*x -y /* 第1因子(◆修正部分3) */,
e2:25*x^2+5*x*y+y^2 /* 第2因子として(◆修正部分3) */,


:   2.二項定理
   A. (a+b)^nの展開式
◆コマンド番号201
●(a+b)^4の展開式
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・練習6 201 (a+b)^4は展開すると"/*(◆修正部分1)*/$
KOUSATU:"n乗の係数を使って、n+1乗の係数を求めると、・・・"/**/;

KANSUU:"";
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................","....................."] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(◆直前の3式から求め◆)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$

TEJUN:""$
n2ks:[[1,1]];n2k:endcons(0,n2ks[1]);n2k2:cons(0,n2ks[1]);n2k3=n2k+n2k2;
nF:3;for i:1 thru nF-1 do(n2ks:endcons(endcons(0,n2ks[i])+cons(0,n2ks[i]),n2ks))/*(◆修正部分2)*/;
(print(endcons(0,n2ks[nF])),print(cons(0,n2ks[nF])),print("---------------------------------"),
an2ks:endcons(0,n2ks[nF])+cons(0,n2ks[nF]),
print(an2ks))$

KAKUNIN:"確認"/**/$
(e0:(a+b)^4 /* この式の展開(◆修正部分3) */,
moji:a /* この文字に着目し */,
e1:(a+b)^3 /* 第1因子(◆修正部分4) */,
e2:a+b /* 第1因子 */)$
em:exd(e1,e2,moji)$
kknn:[em,"展開結果"]$
print(kknn)/*確認*/$

KAITOU:[an2ks,em,"(展開結果)"]/*解答*//**/$
SUJIMITI:"n+1乗の第3項の係数は、n乗の第(  )項と(  )項の係数の・・・"/**/;
FURIKAERI:"(例:具体的な数値で、3での整除を現認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・練習6 201 (a+b)^5は展開すると"/*(◆修正部分1)*/$
nF:4;for i:1 thru nF-1 do(n2ks:endcons(endcons(0,n2ks[i])+cons(0,n2ks[i]),n2ks))/*(◆修正部分2)*/;
(e0:(a+b)^5 /* この式の展開(◆修正部分3) */,
e1:(a+b)^4 /* 第1因子(◆修正部分4) */,


   B. パスカルの三角形
◆コマンド番号202
●(a+b)^4の展開式
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・練習7 202 パスカルの三角形の6行目を求め、(a+b)^6の展開は"/*(◆修正部分1)*/$
KOUSATU:"n乗の係数を使って、n+1乗の係数を求めると、・・・"/**/;

KANSUU:"";
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$

TEJUN:""$
n2ks:[[1,1]];n2k:endcons(0,n2ks[1]);n2k2:cons(0,n2ks[1]);n2k3=n2k+n2k2;
nF:6;for i:1 thru nF-1 do(n2ks:endcons(endcons(0,n2ks[i])+cons(0,n2ks[i]),n2ks))/*(◆修正部分2)*/;
(print(n2ks[1]),print(n2ks[2]),print(n2ks[3]),print(n2ks[4]),print(n2ks[5]),print(n2ks[6]),
an2ks:n2ks[nF])$

KAKUNIN:"確認"/**/$
(e0:(a+b)^6 /* この式の展開(◆修正部分3) */,
moji:a /* この文字に着目し */,
e1:(a+b)^5 /* 第1因子(◆修正部分4) */,
e2:a+b /* 第1因子 */)$
em:exd(e1,e2,moji)$
kknn:[em,"展開結果"]$
print(kknn)/*確認*/$

KAITOU:[an2ks,em,"(展開結果)"]/*解答*//**/$
SUJIMITI:"n+1乗の第3項の係数は、n乗の第(  )項と(  )項の係数の・・・"/**/;
FURIKAERI:"(例:具体的な数値で、3での整除を現認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・練習7 202 パスカルの三角形の7行目を求め、(a+b)^7の展開は"/*(◆修正部分1)*/$
nF:7;for i:1 thru nF-1 do(n2ks:endcons(endcons(0,n2ks[i])+cons(0,n2ks[i]),n2ks))/*(◆修正部分2)*/;
(e0:(a+b)^7 /* この式の展開(◆修正部分3) */,
e1:(a+b)^6 /* 第1因子(◆修正部分4) */,


   C. 二項定理
◆コマンド番号203
●(x-2)^5の展開式
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・例4・練習8 203 (x-2)^5の展開は"/*(◆修正部分1)*/$
KOUSATU:"二項定理により、n乗のr番目の係数は、・・・"/**/;

KANSUU:"";
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$

TEJUN:""$
el:[x,-2,5]/*((a+b)^n-->[a,b,n](◆修正部分2)*/;
(nJ:el[3],nTl:[],for i:0 thru nJ do(nTl:endcons([nJ,"C",i,el[1],"^",nJ-i,el[2],"^",i],nTl)),
anTl:[(el[1]+el[2])^nJ,"=",nTl],nT:0,for i:0 thru nJ do(nT:nT+nCr(nJ,i)*el[1]^(nJ-i)*el[2]^i),
anT:[(el[1]+el[2])^nJ,"=",nT],print(anTl),print(anT))$

KAKUNIN:"確認"/**/$
(e0:(el[1]+el[2])^nJ /* この式の展開*/,
moji:el[1] /* この文字に着目し */,
e1:(el[1]+el[2])^(nJ-1) /* 第1因子*/,
e2:el[1]+el[2] /* 第2因子 */)$
em:exd(e1,e2,moji)$
kknn:[em,"展開結果"]$
print(kknn)/*確認*/$

KAITOU:[anTl,em,"(展開結果)"]/*解答*//**/$
SUJIMITI:"二項定理により、n乗のr番目の係数は、(  )C(  )で、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、3での整除を現認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例4・練習8 203 (x+1)^4の展開は"/*(◆修正部分1)*/$
el:[x,1,4]/*((a+b)^n-->[a,b,n](◆修正部分2)*/;


◆コマンド番号204
●(1+x)^nを使って
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・例題2・練習9 204 (2*x-1)^6のx^3の係数は"/*(◆修正部分1)*/$
KOUSATU:"二項定理により、n乗のr番目の係数は、・・・"/**/;

KANSUU:"";
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$

TEJUN:""$
el:[2*x,-1,6]/*((a+b)^n-->[a,b,n](◆修正部分2)*/;
nj:3/*(◆修正部分2)*/$
(nJ:el[3],nTl:[],for i:0 thru nJ do(nTl:endcons([nJ,"C",i,el[1],"^",nJ-i,el[2],"^",i],nTl)),
anTl:[(el[1]+el[2])^nJ,"=",nTl],nT:0,for i:0 thru nJ do(nT:nT+nCr(nJ,i)*el[1]^(nJ-i)*el[2]^i),
anT:[(el[1]+el[2])^nJ,"=",nT],print(anTl),print(anT))$

KAKUNIN:"確認"/**/$
(e0:(el[1]+el[2])^nJ /* この式の展開*/,
moji:x /* この文字に着目し */,
e1:(el[1]+el[2])^(nJ-1) /* 第1因子*/,
e2:el[1]+el[2] /* 第2因子 */)$
em:exd(e1,e2,moji)$
kknn:[em,"展開結果"]$
print(kknn)/*確認*/$

KAITOU:[anTl[3][nJ-nj+1],coeff(nCr(nJ,nJ-nj)*el[1]^nj*el[2]^(nJ-nj),moji,nj),"(展開結果)"]/*解答*//*(◆修正部分3)*/$
SUJIMITI:"二項定理により、6乗展開での3乗の係数は、前から(  )番目で、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、3での整除を現認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例題2・練習9 204 (x-2*y)^5のx^2*y^3の係数は"/*(◆修正部分1)*/$
el:[x,-2*y,5]/*((a+b)^n-->[a,b,n](◆修正部分2)*/;
nj:2/*(◆修正部分2)*/$
KAITOU:[anTl[3][nJ-nj+1],coeff(coeff(nCr(nJ,nJ-nj)*el[1]^nj*el[2]^(nJ-nj),moji,nj),y,nJ-nj),"(展開結果)"]/*解答*//*(◆修正部分3)*/$


   D. 二項定理の応用
◆コマンド番号205
●(2*x-1)^6のx^3の係数
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・例題5・練習10 205 nC0+nC1+...+nCnは"/*(◆修正部分1)*/$
KOUSATU:"(1+x)^nを二項定理により展開して、・・・"/**/;

KANSUU:"";
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$

TEJUN:""$
n:8;el:[1,x,n]/*((a+b)^n-->[a,b,n](◆修正部分2)*/;
(nJ:el[3],nTl:[],for i:0 thru nJ do(nTl:endcons(["+",el[2]^i,nJ,"C",i],nTl)),
anTl:[el[1]+el[2],"^",nJ,"=",(el[1]+el[2])^nJ,"=",nTl],nT:0,for i:0 thru nJ do(nT:nT+nCr(nJ,i)*el[1]^(nJ-i)*el[2]^i),
anT:[el[1]+el[2],"^",nJ,"=",(el[1]+el[2])^nJ,"=",nT],print(anTl),print(anT))$
(sxl:[x=1],aanT:subst(sxl,anT),print(aanT),aanTl:subst(sxl,anTl),print(aanTl))$

KAKUNIN:"n=1~20で確認"/**/$
aakTl:[];for k:1 thru 20 do(
/**/(kTl:[],for i:0 thru k do(kTl:endcons(["+",el[2]^i,[k,"C",i]],kTl)),
/**/akTl:[el[1]+el[2],"^",k,"=",(el[1]+el[2])^k,"=",kTl],kT:0/*,print(akTl)*/),
/**/(sxl:[x=1],akTl:subst(sxl,akTl),aakTl:endcons(akTl,aakTl)/*,print(aakTl)*/))$
kknn:[aakTl,"展開結果"]$
print(kknn)/*確認*/$

KAITOU:[aakTl[n],"(展開結果)"]/*解答*//*(◆修正部分3)*/$
SUJIMITI:"(1+x)^nを二項定理により展開して、前からr+1番目にx=1を代入すると(  )になり、・・・"/**/$
FURIKAERI:"(例:具体的な数値で、3での整除を現認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例題5・練習10 205 nC0-nC1+...+(-1)^n*nCnは"/*(◆修正部分1)*/$
n:9;el:[1,-x,n]/*((a+b)^n-->[a,b,n](◆修正部分2)*/;
nj:2/*(◆修正部分2)*/$
KAITOU:[anTl[3][nJ-nj+1],coeff(coeff(nCr(nJ,nJ-nj)*el[1]^nj*el[2]^(nJ-nj),moji,nj),y,nJ-nj),"(展開結果)"]/*解答*//*(◆修正部分3)*/$


◆コマンド番号206
●(a+b+c)^7の展開式でのa^3*b^2*c^2の係数
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・応用例題1・練習11 206 (a+b+c)^7の展開式でのa^3*b^2*c^2の係数"/*(◆修正部分1)*/$
KOUSATU:"二項定理により、(a+b)+cと考えて、c^2の係数は7C5*c^2*(a+b)^5となるので、・・・"/*(◆修正部分1)*/$

KANSUU:"";
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$

TEJUN:""$
ncj:2;el:[a,b,5]/*(c^ncj,(a+b)^n-->ncj,[a,b,n](◆修正部分2)*/;
nj:3/*a^nj*b^(n-nj)に注目(◆修正部分2)*/$
(nJ:el[3],nT:0,for i:0 thru nJ do(nT:nT+nCr(nJ,i)*el[1]^(nJ-i)*el[2]^i),
anT:[nCr(ncj+el[3],el[3])*c^(el[3]-nj)*(el[1]+el[2])^nJ,"=",nCr(ncj+el[3],el[3])*c^(el[3]-nj)*nT],print(anT))/**/$

KAKUNIN:"確認"/**/$
(e0:(nCr(ncj+el[3],el[3])*c^ncj*el[1]+el[2])^nJ /* この式の展開*/,
moji:a /* この文字に着目し */,
e1:nCr(ncj+el[3],el[3])*c^ncj*(el[1]+el[2])^(nJ-1) /* 第1因子*/,
e2:el[1]+el[2] /* 第2因子 */)$
em:exd(e1,e2,moji)$
kknn:[em,"展開結果"]$
print(kknn)/*確認*/$

KAITOU:[coeff(rat(subst([b=1,c=1],anT[3])),moji,nj),"(展開結果)"]/*解答*//**/$
SUJIMITI:"二項定理により、5乗展開での3乗の係数は、前から(  )番目で、・・・"/*(◆修正部分3)*/;
FURIKAERI:"(例:具体的な数値で、3での整除を現認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・応用例題1・練習11 206 (a+b+c)^6の展開式でのa^2*b^4の係数"/*(◆修正部分1)*/$
KOUSATU:"二項定理により、(a+b)+cと考えて、c^0の係数は6C6*c^0*(b+c)^4となるので、・・・"/*(◆修正部分1)*/$
ncj:0;el:[a,b,6]/*(c^ncj,(a+b)^n-->ncj,[a,b,n](◆修正部分2)*/;
nj:2/*a^nj*b^(n-nj)に注目(◆修正部分2)*/$
SUJIMITI:"二項定理により、6乗展開での2乗の係数は、前から(  )番目で、・・・"/*(◆修正部分3)*/;


   研究.
◆コマンド番号207
●(a+b+c)^nの展開式でのa^p*b^q*c^rの係数
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・研究・練習1 207 (a+b+c)^nの展開式でのa^p*b^q*c^rの係数"/*(◆修正部分1)*/$
KOUSATU:"((a+b)+c)^rと考えて、二項定理により、cのr乗の係数は、・・・"/**/;

KANSUU:"";
ni(n):=n!/**/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$

TEJUN:""$
el:[a,b,c,n,p,q,r]/*(a+b)+c)^nでのa^p*b^q*c^rの係数*/;
cc:nCrl(el[4],el[7])*(el[1]+el[2])^(el[4]-el[7])/*((a+b)+c)^nでのc^rの係数*/;
cb:nCrl(el[4]-el[7],el[6])*el[1]^(el[4]-el[7]-el[6])/*(a+b)^(n-r)でのb^qの係数*/;
cabc:subst(el[1]=1,cb*subst(el[2]=0,cc))/*(a+b+c)^nでのa^p*b^q*c^rの係数*/;
cabc:num(cabc)/subst(el[4]=el[5]+el[6]+el[7],denom(cabc))/*分母のnをp,q,rで表す*/;

KAKUNIN:"確認"/**/$
nj:9/*(a+b)+c)^njでのa^p*b^q*c^rの係数(◆修正部分2)*/;
(e0:(el[1]+el[2]+el[3])^el[4] /* この式の展開*/,
em:expand(subst(el[4]=nj,e0)),
cem:coeff(coeff(coeff(em,el[3],2),el[2],3),el[1],4)/*(◆修正部分3)*/,
kknn:[em,cem,subst([el[4]=nj,el[5]=4,el[6]=3,el[7]=2],cabc*el[1]^el[5]*el[2]^el[6]*el[3]^el[7]),"9乗のときの展開結果と上記論証結果とから"]/*(◆修正部分3)*/,
print(kknn))/*確認*/$

KAITOU:[cabc,"(論証結果)"]/*解答*//*(◆修正部分4)*/$
SUJIMITI:"(a+b)+c)^nと考えて、二項定理により、cのr乗の係数は、(  )で、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・研究・練習1 207 (a+b+c)^7の展開式でのa^3*b^4の係数"/*(◆修正部分1)*/$
nj:7/*(a+b)+c)^njでのa^p*b^q*c^rの係数(◆修正部分2)*/;
cem:coeff(coeff(coeff(em,el[3],0),el[2],4),el[1],3)/*(◆修正部分3)*/,
kknn:[em,cem,subst([el[4]=nj,el[5]=3,el[6]=4,el[7]=0],cabc*el[1]^el[5]*el[2]^el[6]*el[3]^el[7]),"7乗のときの展開結果と上記論証結果とから"]/*(◆修正部分3)*/,
KAITOU:[subst([el[4]=nj,el[5]=3,el[6]=4,el[7]=0],cabc),"(論証結果)"]/*解答*//*(◆修正部分4)*/$

:   3.整式の割算
   A. 整式の割算
◆コマンド番号301
●商と余り
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・商と余り 301 x^2+5*x+8をx+2で割ると商と余りは"/*(◆修正部分1)*/$
KOUSATU:"数と同じように割算実行すると、商の第1項は、・・・"/**/;

KANSUU:"";
ni(n):=n!/**/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$
ed(e1,e2,x,bl,bdl):=block([hpe1,hpe2,hpe3,e1l,e2l,e3l,e4l,i],hpe1:hipow(e1,x),e1l:[],for i:0 thru hpe1 do e1l:cons(coeff(e1,x,i),e1l),print(e1l), /**/hpe2:hipow(e2,x),e2l:[],for i:0 thru hpe2 do e2l:cons(coeff(e2,x,i),e2l),print(e2l), /**/e20l:e2l,for i:1 thru hpe1-hpe2 do e20l:endcons(0,e20l), /**/e3:quotient(e1,e2,x),hpe3:hipow(e3,x),e3l:[],for i:0 thru hpe3 do e3l:cons(coeff(e3,x,i),e3l),print(e3l),print(" "), /**/print(bl,e3l),print(bdl),print(e2l,")",e1l),e4l:e20l*e3l[1],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l), /**/for i:1 thru hpe1-hpe2 do(e20l:cons(0,rest(e20l,-1)),e4l:e20l*e3l[1+i],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l)),e1l:[e3l,e1l])/*e1のe2による割り算実行、結果は係数リスト、着目文字引数x追加*/$
TEJUN:""$
(e1:x^2+5*x+8,e2:x+2,bl:". . . . ",bdl:". . . . ---------")/*(◆修正部分2)*/$
e3l:ed(e1,e2,x,bl,bdl);e3:elx(e3l[1],x);e4:elx(e3l[2],x);

KAKUNIN:"確認"/**/$
(e5:e2*e3+e4,e5:rat(e5),kknn:[e1,e5,"[e1,e2*e3+e4]"])$
print(kknn)/*確認*/$

KAITOU:[e3,e4,"[商、余り"]/*解答*//**/$
SUJIMITI:"割算実行すると、商の第1項は、(  )で、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・商と余り 301 x^2+5*x+8をx+3で割ると商と余りは"/*(◆修正部分1)*/$
(e1:x^2+5*x+8,e2:x+3,bl:". . . . ",bdl:". . . . ---------")/*(◆修正部分2)*/$


◆コマンド番号302
●商と余り
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・例題3・練習12 302 2*x^3-7*x^2+8をx^2-4*x+3で割ると商と余りは"/*(◆修正部分1)*/$
KOUSATU:"数と同じように割算実行すると、商の第1項は、・・・"/**/;

KANSUU:"";
ni(n):=n!/**/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$
ed(e1,e2,x,bl,bdl):=block([hpe1,hpe2,hpe3,e1l,e2l,e3l,e4l,i],hpe1:hipow(e1,x),e1l:[],for i:0 thru hpe1 do e1l:cons(coeff(e1,x,i),e1l),print(e1l), /**/hpe2:hipow(e2,x),e2l:[],for i:0 thru hpe2 do e2l:cons(coeff(e2,x,i),e2l),print(e2l), /**/e20l:e2l,for i:1 thru hpe1-hpe2 do e20l:endcons(0,e20l), /**/e3:quotient(e1,e2,x),hpe3:hipow(e3,x),e3l:[],for i:0 thru hpe3 do e3l:cons(coeff(e3,x,i),e3l),print(e3l),print(" "), /**/print(bl,e3l),print(bdl),print(e2l,")",e1l),e4l:e20l*e3l[1],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l), /**/for i:1 thru hpe1-hpe2 do(e20l:cons(0,rest(e20l,-1)),e4l:e20l*e3l[1+i],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l)),e1l:[e3l,e1l])/*e1のe2による割り算実行、結果は係数リスト、着目文字引数x追加*/$
TEJUN:""$
(e1:2*x^3-7*x^2+8,e2:x^2-4*x+3,bl:". . . . . . .",bdl:". . . . . . .---------")/*(◆修正部分2)*/$
e3l:ed(e1,e2,x,bl,bdl);e3:elx(e3l[1],x);e4:elx(e3l[2],x);

KAKUNIN:"確認"/**/$
(e5:e2*e3+e4,e5:rat(e5),kknn:[e1,e5,"[e1,e2*e3+e4]"])$
print(kknn)/*確認*/$

KAITOU:[e3,e4,"[商、余り"]/*解答*//**/$
SUJIMITI:"割算実行すると、商の第1項は、(  )で、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例題3・練習12 302 x^3-7*x+6をx^2-3+2*xで割ると商と余りは"/*(◆修正部分1)*/$
(e1:2*x^3-7*x+6,e2:x^2-3+2*x,bl:". . . . . . .",bdl:". . . . . . .---------")/*(◆修正部分2)*/$


   B. 整式の割算
◆コマンド番号303
●A=BQ+Rの利用
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・例題4・練習13 303 x^3+2*x^2+2*x-6を整式Bで割ると、商がx-1、余りが3*x-4。Bは"/*(◆修正部分1)*/$
KOUSATU:"A=B*Q+Rの式をつくって、両辺からRを引くと、・・・"/**/;

KANSUU:"";
ni(n):=n!/**/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$
ed(e1,e2,x,bl,bdl):=block([hpe1,hpe2,hpe3,e1l,e2l,e3l,e4l,i],hpe1:hipow(e1,x),e1l:[],for i:0 thru hpe1 do e1l:cons(coeff(e1,x,i),e1l),print(e1l), /**/hpe2:hipow(e2,x),e2l:[],for i:0 thru hpe2 do e2l:cons(coeff(e2,x,i),e2l),print(e2l), /**/e20l:e2l,for i:1 thru hpe1-hpe2 do e20l:endcons(0,e20l), /**/e3:quotient(e1,e2,x),hpe3:hipow(e3,x),e3l:[],for i:0 thru hpe3 do e3l:cons(coeff(e3,x,i),e3l),print(e3l),print(" "), /**/print(bl,e3l),print(bdl),print(e2l,")",e1l),e4l:e20l*e3l[1],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l), /**/for i:1 thru hpe1-hpe2 do(e20l:cons(0,rest(e20l,-1)),e4l:e20l*e3l[1+i],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l)),e1l:[e3l,e1l])/*e1のe2による割り算実行、結果は係数リスト、着目文字引数x追加*/$
TEJUN:""$
(e1:x^3+2*x^2+2*x-6,e3:x-1,e4:3*x-4,bl:". . . . . .",bdl:". . . . . ---------")/*(◆修正部分2)*/$
e0:e1=e3*eB+e4;e0:e0-e4;print(e0);eBl:ed(lhs(e0),e3,x,bl,bdl);
eB:elx(eBl[1],x);

KAKUNIN:"確認"/**/$
(kknn:[ed(e1,eB,x,bl,bdl),"e1をeBで割算実行"])$
print(kknn)/*確認*/$

KAITOU:[eB,"[割る式B"]/*解答*//**/$
SUJIMITI:"A=B*Q+Rの式をつくって、両辺からRを引くと、(  )で、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例題4・練習13 303 x^3-2*x^2+3*x-3を整式Bで割ると、商がx-2、余りが-2*x+7。Bは"/*(◆修正部分1)*/$
(e1:x^3-2*x^2+3*x-3,e3:x-2,e4:-2*x+7,bl:". . . . . .",bdl:". . . . . ---------")/*(◆修正部分2)*/$


◆コマンド番号304
●A=BQ+Rの利用
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・練習14 304 整式Aをx+2で割ると、商がx+3、余りが-1。Aは"/*(◆修正部分1)*/$
KOUSATU:"A=B*Q+Rの式をつくって、右辺を計算すると、・・・"/**/;

KANSUU:"";
ni(n):=n!/**/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$
ed(e1,e2,x,bl,bdl):=block([hpe1,hpe2,hpe3,e1l,e2l,e3l,e4l,i],hpe1:hipow(e1,x),e1l:[],for i:0 thru hpe1 do e1l:cons(coeff(e1,x,i),e1l),print(e1l), /**/hpe2:hipow(e2,x),e2l:[],for i:0 thru hpe2 do e2l:cons(coeff(e2,x,i),e2l),print(e2l), /**/e20l:e2l,for i:1 thru hpe1-hpe2 do e20l:endcons(0,e20l), /**/e3:quotient(e1,e2,x),hpe3:hipow(e3,x),e3l:[],for i:0 thru hpe3 do e3l:cons(coeff(e3,x,i),e3l),print(e3l),print(" "), /**/print(bl,e3l),print(bdl),print(e2l,")",e1l),e4l:e20l*e3l[1],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l), /**/for i:1 thru hpe1-hpe2 do(e20l:cons(0,rest(e20l,-1)),e4l:e20l*e3l[1+i],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l)),e1l:[e3l,e1l])/*e1のe2による割り算実行、結果は係数リスト、着目文字引数x追加*/$
TEJUN:""$
(e2:x+2,e3:x+3,e4:-1,bl:". . . . ",bdl:". . . .---------")/*(◆修正部分2)*/$
e0:eA=e3*e2+e4;eA:rat(rhs(e0));print(eA);eA3l:ed(eA,e2,x,bl,bdl)$

KAKUNIN:"確認"/**/$
(kknn:[elx(eA3l[1],x),elx(eA3l[2],x),"rhs(e0)をe2で割算実行"])$
print(kknn)/*確認*/$

KAITOU:[eA,"[割られる式A"]/*解答*//**/$
SUJIMITI:"A=B*Q+Rの式をつくって、右辺を計算すると、(  )で、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・練習14 304 整式Aをx+2で割ると、商がx+3、余りが-1。Aは"/*(◆修正部分1)*/$
(e2:x^2+2*x+3,e3:x-1,e4:2*x+3,bl:". . . . . .",bdl:". . . . . .---------")/*(◆修正部分2)*/$


:   4.分数式とその計算
   A. 分数式の約分
◆コマンド番号401
●約分
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・例6・練習15 401 6*a*b^4/(4*a^2*b^3)を約分すると、"/*(◆修正部分1)*/$
KOUSATU:"分母と分子を共通因数で割って、・・・"/**/;

KANSUU:"";
ni(n):=n!/**/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$
ed(e1,e2,x,bl,bdl):=block([hpe1,hpe2,hpe3,e1l,e2l,e3l,e4l,i],hpe1:hipow(e1,x),e1l:[],for i:0 thru hpe1 do e1l:cons(coeff(e1,x,i),e1l),print(e1l), /**/hpe2:hipow(e2,x),e2l:[],for i:0 thru hpe2 do e2l:cons(coeff(e2,x,i),e2l),print(e2l), /**/e20l:e2l,for i:1 thru hpe1-hpe2 do e20l:endcons(0,e20l), /**/e3:quotient(e1,e2,x),hpe3:hipow(e3,x),e3l:[],for i:0 thru hpe3 do e3l:cons(coeff(e3,x,i),e3l),print(e3l),print(" "), /**/print(bl,e3l),print(bdl),print(e2l,")",e1l),e4l:e20l*e3l[1],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l), /**/for i:1 thru hpe1-hpe2 do(e20l:cons(0,rest(e20l,-1)),e4l:e20l*e3l[1+i],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l)),e1l:[e3l,e1l])/*e1のe2による割り算実行、結果は係数リスト、着目文字引数x追加*/$
TEJUN:""$
(en:6*a*b^4,ed:4*a^2*b^3)/*(◆修正部分2)*/$
el:[en,"/",ed];egcm:gcm(factor(en),factor(ed));el:rat([el[1]/egcm,"/",el[3]/egcm]);e:el[1]/el[3];print(e);

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(kknnl:endcons(subst([a=i,b=j],[el[1]/el[3],e]),kknnl)))/*(◆修正部分3)*/$
(kknn:[kknnl,"a:1->10,b1->10で[el[1]/el[3],e]を確認"])/*(◆修正部分3)*/$
print(kknn)/*確認*/$

KAITOU:[e,"[約分結果"]/*解答*//**/$
SUJIMITI:"分母と分子を共通因数(  )で割って、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例6・練習15 401 (x^2-2*x-3)/(2*x^2-7*x+3)を約分すると、"/*(◆修正部分1)*/$
(en:(x^2-2*x-3),ed:(2*x^2-7*x+3))/*(◆修正部分2)*/$
kknnl:[];for i:1 thru 50 do(kknnl:endcons(subst([x=i],[el[1]/el[3],e]),kknnl))/*(◆修正部分3)*/$
(kknn:[kknnl,"x:1->50で[el[1]/el[3],e]を確認"])/*(◆修正部分3)*/$


   B. 分数式の四則
◆コマンド番号402
●分数式の乗法・除法
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・例7・練習16 402 (x^2-x)/(x+1)*2/(x-1)を計算すると、"/*(◆修正部分1)*/$
KOUSATU:"分母どうし、分子どうしを掛けて、・・・"/*(◆修正部分1)*/$

KANSUU:"";
ni(n):=n!/**/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$
ed(e1,e2,x,bl,bdl):=block([hpe1,hpe2,hpe3,e1l,e2l,e3l,e4l,i],hpe1:hipow(e1,x),e1l:[],for i:0 thru hpe1 do e1l:cons(coeff(e1,x,i),e1l),print(e1l), /**/hpe2:hipow(e2,x),e2l:[],for i:0 thru hpe2 do e2l:cons(coeff(e2,x,i),e2l),print(e2l), /**/e20l:e2l,for i:1 thru hpe1-hpe2 do e20l:endcons(0,e20l), /**/e3:quotient(e1,e2,x),hpe3:hipow(e3,x),e3l:[],for i:0 thru hpe3 do e3l:cons(coeff(e3,x,i),e3l),print(e3l),print(" "), /**/print(bl,e3l),print(bdl),print(e2l,")",e1l),e4l:e20l*e3l[1],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l), /**/for i:1 thru hpe1-hpe2 do(e20l:cons(0,rest(e20l,-1)),e4l:e20l*e3l[1+i],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l)),e1l:[e3l,e1l])/*e1のe2による割り算実行、結果は係数リスト、着目文字引数x追加*/$
TEJUN:""$
(e1n:x^2-x,e1d:x+1,e2n:2,e2d:x-1)/*(◆修正部分2)*/$
e1l:[e1n,"/",e1d];e2l:[e2n,"/",e2d];egcm:gcm(factor(e1n*e2n),factor(e1d*e2d));el:rat([e1l[1]*e2l[1]/egcm,"/",e1l[3]*e2l[3]/egcm]);e:el[1]/el[3];print(e)/*(◆修正部分2)*/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 50 do(kknnl:endcons(subst([x=i],[el[1]/el[3],e]),kknnl))/*(◆修正部分3)*/$
(kknn:[kknnl,"x:1->50で[el[1]/el[3],e]を確認"])/*(◆修正部分3)*/$
print(kknn)/*確認*/$

KAITOU:[e,"[乗除の結果"]/*解答*//**/$
SUJIMITI:"分母どうし、分子どうしを掛けて、分母と分子を共通因数(  )で割って、・・・"/*(◆修正部分4)*/$
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例7・練習16 402 ((x^2-x)/(x-3))/((x^2+5*x)/(x^2+2*x-15))を計算すると、"/*(◆修正部分1)*/$
KOUSATU:"分母どうし、分子どうしを掛けて、・・・"/*(◆修正部分1)*/$
(e1n:(x^2-x),e1d:(x-3),e2n:(x^2+5*x),e2d:(x^2+2*x-15))/*(◆修正部分2)*/$
e1l:[e1n,"/",e1d];e2l:[e2n,"/",e2d];egcm:gcm(factor(e1n*e2d),factor(e1d*e2n));el:rat([e1l[1]*e2l[3]/egcm,"/",e1l[3]*e2l[1]/egcm]);e:el[1]/el[3];print(e)/*(◆修正部分2)*/$
kknnl:[];for i:1 thru 50 do(kknnl:endcons(subst([x=i],[el[1]/el[3],e]),kknnl))/*(◆修正部分3)*/$
(kknn:[kknnl,"x:1->50で[el[1]/el[3],e]を確認"])/*(◆修正部分3)*/$
SUJIMITI:"割る方の分母、分子を入れ替え、分母どうし、分子どうしを掛けて、分母と分子を共通因数(  )で割って、・・・"/*(◆修正部分4)*/$


◆コマンド番号403
●分母が同じ分数式の加法・減法
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・例8・練習17 403 (3*x)/(x+2)+(x)/(x+2)を計算すると、"/*(◆修正部分1)*/$
KOUSATU:"分母が同じなら、分子どうしを加して、・・・"/**/;

KANSUU:"";
ni(n):=n!/**/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$
ed(e1,e2,x,bl,bdl):=block([hpe1,hpe2,hpe3,e1l,e2l,e3l,e4l,i],hpe1:hipow(e1,x),e1l:[],for i:0 thru hpe1 do e1l:cons(coeff(e1,x,i),e1l),print(e1l), /**/hpe2:hipow(e2,x),e2l:[],for i:0 thru hpe2 do e2l:cons(coeff(e2,x,i),e2l),print(e2l), /**/e20l:e2l,for i:1 thru hpe1-hpe2 do e20l:endcons(0,e20l), /**/e3:quotient(e1,e2,x),hpe3:hipow(e3,x),e3l:[],for i:0 thru hpe3 do e3l:cons(coeff(e3,x,i),e3l),print(e3l),print(" "), /**/print(bl,e3l),print(bdl),print(e2l,")",e1l),e4l:e20l*e3l[1],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l), /**/for i:1 thru hpe1-hpe2 do(e20l:cons(0,rest(e20l,-1)),e4l:e20l*e3l[1+i],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l)),e1l:[e3l,e1l])/*e1のe2による割り算実行、結果は係数リスト、着目文字引数x追加*/$
TEJUN:""$
(e1n:(3*x),e1d:(x+2),e2n:(x),e2d:(x+2))/*(◆修正部分2)*/$
e1l:[e1n,"/",e1d];e2l:[e2n,"/",e2d];egcm:gcm(factor(e1n+e2n),factor(e1d));el:rat([(e1l[1]+e2l[1])/egcm,"/",e1l[3]/egcm]);e:el[1]/el[3];print(e)/*(◆修正部分2)*/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 50 do(if subst([x=i],el[3])#0 then kknnl:endcons(subst([x=i],[el[1]/el[3],e]),kknnl)else kknnl:endcons([1/0.000000001,1/0.000000001],kknnl))/**/$
(kknn:[kknnl,"x:1->50で[el[1]+el[3],e]を確認"])/**/$
print(kknn)/*確認*/$

KAITOU:[e,"[乗除の結果"]/*解答*//**/$
SUJIMITI:"分母が同じなら、分子どうしを加すと(  )、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例8・練習17 403 (2*x^2)/(x-1)+(x+1)/(x-1)を計算すると、"/*(◆修正部分1)*/$
(e1n:(2*x^2),e1d:(x-1),e2n:(x+1),e2d:(x-1))/*(◆修正部分2)*/$
e1l:[e1n,"/",e1d];e2l:[e2n,"/",e2d];egcm:gcm(factor(e1n-e2n),factor(e1d));el:rat([(e1l[1]-e2l[1])/egcm,"/",e1l[3]/egcm]);e:el[1]/el[3];print(e)/*(◆修正部分2)*/$


◆コマンド番号404
●分母が異なる分数式の加法・減法
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・例題5・練習18 404 (2)/(x+1)+(1)/(x-3)を計算すると、"/*(◆修正部分1)*/$
KOUSATU:"分母が同じなら、分子どうしを加減すると、・・・"/**/;

KANSUU:"";
ni(n):=n!/**/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$
ed(e1,e2,x,bl,bdl):=block([hpe1,hpe2,hpe3,e1l,e2l,e3l,e4l,i],hpe1:hipow(e1,x),e1l:[],for i:0 thru hpe1 do e1l:cons(coeff(e1,x,i),e1l),print(e1l), /**/hpe2:hipow(e2,x),e2l:[],for i:0 thru hpe2 do e2l:cons(coeff(e2,x,i),e2l),print(e2l), /**/e20l:e2l,for i:1 thru hpe1-hpe2 do e20l:endcons(0,e20l), /**/e3:quotient(e1,e2,x),hpe3:hipow(e3,x),e3l:[],for i:0 thru hpe3 do e3l:cons(coeff(e3,x,i),e3l),print(e3l),print(" "), /**/print(bl,e3l),print(bdl),print(e2l,")",e1l),e4l:e20l*e3l[1],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l), /**/for i:1 thru hpe1-hpe2 do(e20l:cons(0,rest(e20l,-1)),e4l:e20l*e3l[1+i],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l)),e1l:[e3l,e1l])/*e1のe2による割り算実行、結果は係数リスト、着目文字引数x追加*/$
TEJUN:""$
(e1n:(2),e1d:(x+1),e2n:(1),e2d:(x-3))/*(◆修正部分2)*/$
e1l:[e1n,"/",e1d];e2l:[e2n,"/",e2d];egcm:gcm(factor(e1n*e2d+e2n*e1d),factor(e1d*e2d));el:[factor(e1n*e2d+e2n*e1d)/egcm,"/",factor(e1d*e2d/egcm)];e:el[1]/el[3];print(e)/*(◆修正部分2)*/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 50 do(if subst([x=i],el[3])#0 then kknnl:endcons(subst([x=i],[el[1]/el[3],e]),kknnl)else kknnl:endcons([1/0.000000001,1/0.000000001],kknnl))/**/$
(kknn:[kknnl,"x:1->50で[el[1]+el[3],e]を確認"])/**/$
print(kknn)/*確認*/$

KAITOU:[e,"[乗除の結果"]/*解答*//**/$
SUJIMITI:"分母が同じなら、分子どうしを加減すると(  )、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例題5・練習18 404 (3*x+5)/(x^2-1)-(1)/(x^2+x)を計算すると、"/*(◆修正部分1)*/$
(e1n:(3*x+5),e1d:(x^2-1),e2n:(1),e2d:(x^2+x))/*(◆修正部分2)*/$
e1l:[e1n,"/",e1d];e2l:[e2n,"/",e2d];egcm:gcm(factor(e1n*e2d-e2n*e1d),factor(e1d*e2d));el:[factor(e1n*e2d-e2n*e1d)/egcm ,"/",factor(e1d*e2d)/egcm];e:el[1]/el[3];print(e)/*(◆修正部分2)*/$


:   5.恒等式
   A. 恒等式
◆コマンド番号405
●恒等式・方程式
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・例9・練習19 405 (x+1)*(x-1)=x^2-1は恒等式か"/*(◆修正部分1)*/$
KOUSATU:"等式変形を行うと、・・・"/**/;

KANSUU:"";
ni(n):=n!/**/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$
ed(e1,e2,x,bl,bdl):=block([hpe1,hpe2,hpe3,e1l,e2l,e3l,e4l,i],hpe1:hipow(e1,x),e1l:[],for i:0 thru hpe1 do e1l:cons(coeff(e1,x,i),e1l),print(e1l), /**/hpe2:hipow(e2,x),e2l:[],for i:0 thru hpe2 do e2l:cons(coeff(e2,x,i),e2l),print(e2l), /**/e20l:e2l,for i:1 thru hpe1-hpe2 do e20l:endcons(0,e20l), /**/e3:quotient(e1,e2,x),hpe3:hipow(e3,x),e3l:[],for i:0 thru hpe3 do e3l:cons(coeff(e3,x,i),e3l),print(e3l),print(" "), /**/print(bl,e3l),print(bdl),print(e2l,")",e1l),e4l:e20l*e3l[1],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l), /**/for i:1 thru hpe1-hpe2 do(e20l:cons(0,rest(e20l,-1)),e4l:e20l*e3l[1+i],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l)),e1l:[e3l,e1l])/*e1のe2による割り算実行、結果は係数リスト、着目文字引数x追加*/$
TEJUN:""$
(e1:(x+1)*(x-1),e2:x^2-1)/*(◆修正部分2)*/$
el:[e1,"=",e2];el:rat(el);ans:if el[1]=el[3] then "恒等式" else "方程式";print(ans)/**/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 50 do(if subst([x=i],el[3])#0 then kknnl:endcons(subst([x=i],[el[1],el[3]]),kknnl)else kknnl:endcons([1/0.000000001,1/0.000000001],kknnl))/**/$
(kknn:[kknnl,"x:1->50で[el[1]=el[3],e]を確認"])/**/$
print(kknn)/*確認*/$

KAITOU:[ans,"この等式は"]/*解答*//**/$
SUJIMITI:"等式変形を行うと、左辺は(  )、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例9・練習19 405 (1)/(x)-(1)/(x+2)=(2)/(x*(x+2))は恒等式か"/*(◆修正部分1)*/$
(e1:(1)/(x)-(1)/(x+2),e2:(2)/(x*(x+2)))/*(◆修正部分2)*/$


◆コマンド番号406
●恒等式の性質
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・例題6・練習20 406 3*x^2+8*x+1=(x+2)*(a*x+b)+cがxの恒等式となるa,b,cは"/*(◆修正部分1)*/$
KOUSATU:"展開して、係数比較を行うと、・・・"/*(◆修正部分1)*/;

KANSUU:"";
ni(n):=n!/*nの階乗*/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A",順列・組合せ*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)/*n1,n2の最大公倍数*/$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))/*n1のn2による整商*/$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)/*e1,e2の、mに着目した掛け算実行*/$
ed(e1,e2,x,bl,bdl):=block([hpe1,hpe2,hpe3,e1l,e2l,e3l,e4l,i],hpe1:hipow(e1,x),e1l:[],for i:0 thru hpe1 do e1l:cons(coeff(e1,x,i),e1l),print(e1l), /**/hpe2:hipow(e2,x),e2l:[],for i:0 thru hpe2 do e2l:cons(coeff(e2,x,i),e2l),print(e2l), /**/e20l:e2l,for i:1 thru hpe1-hpe2 do e20l:endcons(0,e20l), /**/e3:quotient(e1,e2,x),hpe3:hipow(e3,x),e3l:[],for i:0 thru hpe3 do e3l:cons(coeff(e3,x,i),e3l),print(e3l),print(" "), /**/print(bl,e3l),print(bdl),print(e2l,")",e1l),e4l:e20l*e3l[1],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l), /**/for i:1 thru hpe1-hpe2 do(e20l:cons(0,rest(e20l,-1)),e4l:e20l*e3l[1+i],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l)),e1l:[e3l,e1l])/*e1のe2による割り算実行、結果は係数リスト、着目文字引数x追加*/$ elx(el,x):=block([i,iM,e],iM:length(el),e:0,for i:1 thru iM do(e:e+el[i]*x^(iM-i)),e:e)/*係数リストをxの文字式へ*/$

TEJUN:""$
(e1:3*x^2+8*x+1,e2:(x+2)*(a*x+b)+c)/*(◆修正部分2)*/$
e0:e1=e2;e00:coeff(rat(e0),x,0);e01:coeff(rat(e0),x,1);e02:coeff(rat(e0),x,2)/*(◆修正部分2)*/$
ans:solve([e00,e01,e02],[a,b,c])/*(◆修正部分2)*/;

KAKUNIN:"確認"/**/$
(kknn:[subst(ans,e0),rat(subst(ans,e0)),"[解を代入,展開]して、e1=e2を確認"])/**/$
print(kknn)/*確認*/$

KAITOU:[ans,"このとき恒等式"]/*解答*//**/$
SUJIMITI:"展開して、係数比較を行うと、定数項は(  )=(  )、・・・"/*(◆修正部分3)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例題6・練習20 406 2*x^2-7*x+8=(x-3)*(a*x+b)+cがxの恒等式となるa,b,cは"/*(◆修正部分1)*/$
KOUSATU:"左辺を右辺の第1項第1因子で割算実行して、・・・"/*(◆修正部分1)*/$
(e1:3*x^2+8*x+1,e2:(x+2)*(a*x+b)+c)/*(◆修正部分2)*/$
(e0:e1=e2,e1:2*x^2-7*x+8,e3:(x-3),bl:". . . . . ",bdl:". . . . . ---------")/*(◆修正部分2)*/$
e4l:ed(e1,e3,x,bl,bdl);print(e4l);ans:[a=e4l[1][1],b=e4l[1][2],c=e4l[2][3]]/*(◆修正部分2)*/$
SUJIMITI:"左辺を右辺の第1項第1因子で割算実行して、商は(  )で、・・・"/*(◆修正部分3)*/;


◆コマンド番号407
●部分分数分解
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・応用例題2・練習21 407 (x+3)/((x+1)*(x+2))=a/(x+1)+b/(x+2)がxの恒等式となるa,bは"/*(◆修正部分1)*/$
KOUSATU:"分母をはらい、展開して、係数比較を行うと、・・・"/*(◆修正部分1)*/;

KANSUU:"";
ni(n):=n!/*nの階乗*/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A",順列・組合せ*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)/*n1,n2の最大公倍数*/$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))/*n1のn2による整商*/$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)/*e1,e2の、mに着目した掛け算実行*/$
ed(e1,e2,x,bl,bdl):=block([hpe1,hpe2,hpe3,e1l,e2l,e3l,e4l,i],hpe1:hipow(e1,x),e1l:[],for i:0 thru hpe1 do e1l:cons(coeff(e1,x,i),e1l),print(e1l), /**/hpe2:hipow(e2,x),e2l:[],for i:0 thru hpe2 do e2l:cons(coeff(e2,x,i),e2l),print(e2l), /**/e20l:e2l,for i:1 thru hpe1-hpe2 do e20l:endcons(0,e20l), /**/e3:quotient(e1,e2,x),hpe3:hipow(e3,x),e3l:[],for i:0 thru hpe3 do e3l:cons(coeff(e3,x,i),e3l),print(e3l),print(" "), /**/print(bl,e3l),print(bdl),print(e2l,")",e1l),e4l:e20l*e3l[1],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l), /**/for i:1 thru hpe1-hpe2 do(e20l:cons(0,rest(e20l,-1)),e4l:e20l*e3l[1+i],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l)),e1l:[e3l,e1l])/*e1のe2による割り算実行、結果は係数リスト、着目文字引数x追加*/$ elx(el,x):=block([i,iM,e],iM:length(el),e:0,for i:1 thru iM do(e:e+el[i]*x^(iM-i)),e:e)/*係数リストをxの文字式へ*/$

TEJUN:""$
(e1:(x+3)/((x+1)*(x+2)),e2:a/(x+1)+b/(x+2))/*(◆修正部分2)*/$ e:e1=e2;e0:rat(e*denom(e1));e00:coeff(rat(e0),x,0);e01:coeff(rat(e0),x,1)/*(◆修正部分2)*/$ ans:solve([e00,e01],[a,b])/*(◆修正部分2)*/;
KAKUNIN:"確認"/**/$
(kknn:[subst(ans,e),rat(subst(ans,e)),"[解を代入,展開]して、e1=e2を確認"])/**/$ print(kknn)/*確認*/$

KAITOU:[ans,"このとき恒等式"]/*解答*//**/$
SUJIMITI:"展開して、係数比較を行うと、定数項は(  )=(  )、・・・"/*(◆修正部分3)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・応用例題2・練習21 407 1/(x*(x+1))=a/x+b/(x+1)がxの恒等式となるa,bは"/*(◆修正部分1)*/$
KOUSATU:"分母をそれぞれはらい、はらった分母を0にするxを代入して、・・・"/*(◆修正部分1)*/;
(e1:1/(x*(x+1)),e2:a/x+b/(x+1))/*(◆修正部分2)*/$
e:e1=e2;ea:subst(x=0,rat(e*x));eb:subst(x=-1,rat(e*(x+1)))/*(◆修正部分2)*/;
ans:[[rhs(ea)=lhs(ea),rhs(eb)=lhs(eb)]]/*(◆修正部分2)*/;
SUJIMITI:"第1項の分母をはらうと、(  )=(  )となり、・・・"/*(◆修正部分3)*/;


:   101.補充問題
   .補充問題
◆コマンド番号10101
●商と余り
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・補充問題2 10101 4*x^2-5*a*x-6*a^2をxの式とみて、x-2*aで割った商と余りは"/*(◆修正部分1)*/$
KOUSATU:"割り算実行して、・・・"/**/;

KANSUU:"";
ni(n):=n!/*nの階乗*/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A",順列・組合せ*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)/*n1,n2の最大公倍数*/$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))/*n1のn2による整商*/$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)/*e1,e2の、mに着目した掛け算実行*/$
ed(e1,e2,x,bl,bdl):=block([hpe1,hpe2,hpe3,e1l,e2l,e3l,e4l,i],hpe1:hipow(e1,x),e1l:[],for i:0 thru hpe1 do e1l:cons(coeff(e1,x,i),e1l),print(e1l), /**/hpe2:hipow(e2,x),e2l:[],for i:0 thru hpe2 do e2l:cons(coeff(e2,x,i),e2l),print(e2l), /**/e20l:e2l,for i:1 thru hpe1-hpe2 do e20l:endcons(0,e20l), /**/e3:quotient(e1,e2,x),hpe3:hipow(e3,x),e3l:[],for i:0 thru hpe3 do e3l:cons(coeff(e3,x,i),e3l),print(e3l),print(" "), /**/print(bl,e3l),print(bdl),print(e2l,")",e1l),e4l:e20l*e3l[1],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l), /**/for i:1 thru hpe1-hpe2 do(e20l:cons(0,rest(e20l,-1)),e4l:e20l*e3l[1+i],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l)),e1l:[e3l,e1l])/*e1のe2による割り算実行、結果は係数リスト、着目文字引数x追加*/$ elx(el,x):=block([i,iM,e],iM:length(el),e:0,for i:1 thru iM do(e:e+el[i]*x^(iM-i)),e:e)/*係数リストをxの文字式へ*/$

TEJUN:""$
(e1:4*x^2-5*a*x-6*a^2,e2:x-2*a,moji:x,bl:". . . . . . ",bdl:". . . . . . ---------")/*(◆修正部分2)*/$
e3l:ed(e1,e2,moji,bl,bdl);e3:elx(e3l[1],moji);e4:elx(e3l[2],moji);

KAKUNIN:"確認"/**/$
(e5:e2*e3+e4,e5:rat(e5),kknn:[e1,e5,"[e1,e2*e3+e4]"])$
print(kknn)/*確認*/$

KAITOU:[e3,e4,"[商、余り"]/*解答*//**/$
SUJIMITI:"割算実行すると、商の第1項は、(  )で、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・補充問題1 10101 -6*a^2-5*a*x+4*x^2をaの式とみて-2*a+xで割った商と余りは"/*(◆修正部分1)*/$
(e1:-6*a^2-5*a*x+4*x^2,e2:-2*a+x,moji:a,bl:". . . . . ",bdl:". . . . . ---------")/*(◆修正部分2)*/$


◆コマンド番号10102
●分数式の除法
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・補充3 10102 A=1+1/x、B=x-1/xのとき、A/Bは、"/*(◆修正部分1)*/$
KOUSATU:"割る方の分母、分子を入れ替え、分母どうし、分子どうしを掛けて、・・・"/**/;

KANSUU:"";
ni(n):=n!/**/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$
ed(e1,e2,x,bl,bdl):=block([hpe1,hpe2,hpe3,e1l,e2l,e3l,e4l,i],hpe1:hipow(e1,x),e1l:[],for i:0 thru hpe1 do e1l:cons(coeff(e1,x,i),e1l),print(e1l), /**/hpe2:hipow(e2,x),e2l:[],for i:0 thru hpe2 do e2l:cons(coeff(e2,x,i),e2l),print(e2l), /**/e20l:e2l,for i:1 thru hpe1-hpe2 do e20l:endcons(0,e20l), /**/e3:quotient(e1,e2,x),hpe3:hipow(e3,x),e3l:[],for i:0 thru hpe3 do e3l:cons(coeff(e3,x,i),e3l),print(e3l),print(" "), /**/print(bl,e3l),print(bdl),print(e2l,")",e1l),e4l:e20l*e3l[1],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l), /**/for i:1 thru hpe1-hpe2 do(e20l:cons(0,rest(e20l,-1)),e4l:e20l*e3l[1+i],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l)),e1l:[e3l,e1l])/*e1のe2による割り算実行、結果は係数リスト、着目文字引数x追加*/$
TEJUN:""$
(e1:rat(1+1/x),e2:rat(x-1/x),e1n:num(e1),e1d:denom(e1),e2n:num(e2),e2d:denom(e2))/*(◆修正部分2)*/$
e1l:[e1n,"/",e1d];e2l:[e2n,"/",e2d];egcm:gcm(factor(e1n*e2d),factor(e1d*e2n));el:rat([e1l[1]*e2l[3]/egcm,"/",e1l[3]*e2l[1]/egcm]);e:el[1]/el[3];print(e)/*(◆修正部分2)*/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 50 do(if subst([x=i],el[3])#0 then kknnl:endcons(subst([x=i],[e1/e2,e]),kknnl)else kknnl:endcons([1/0.000000001,1/0.000000001],kknnl))/*(◆修正部分3)*/$
(kknn:[kknnl,"x:1->50で[e1/e2,e]を確認"])/*(◆修正部分3)*/$
print(kknn)/*確認*/$

KAITOU:[e,"[乗除の結果"]/*解答*//**/$
SUJIMITI:"割る方の分母、分子を入れ替え、分母どうし、分子どうしを掛けて、分母と分子を共通因数(  )で割って、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・補充3 10102 A=1+1/x、B=x-1/xのとき、B/Aは、"/*(◆修正部分1)*/$
(e1:rat(1+1/x),e2:rat(x-1/x),e1n:num(e1),e1d:denom(e1),e2n:num(e2),e2d:denom(e2))/*(◆修正部分2)*/$
e1l:[e1n,"/",e1d];e2l:[e2n,"/",e2d];egcm:gcm(factor(e1n*e2d),factor(e1d*e2n));el:rat([e1l[3]*e2l[1]/egcm,"/",e1l[1]*e2l[3]/egcm]);e:el[1]/el[3];print(e)/*(◆修正部分2)*/$
kknnl:[];for i:1 thru 50 do(if subst([x=i],el[3])#0 then kknnl:endcons(subst([x=i],[e2/e1,e]),kknnl)else kknnl:endcons([1/0.000000001,1/0.000000001],kknnl))/*(◆修正部分3)*/$
(kknn:[kknnl,"x:1->50で[e2/e1,e]を確認"])/*(◆修正部分3)*/$


◆コマンド番号10103
●分数式の加減
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・補充4 10103 1/(x*(x+1))+1/((x+1)*(x+2))+1/((x+2)*(x+3))は、"/*(◆修正部分1)*/$
KOUSATU:"各項を部分分数分解して加減すると、・・・"/**/;

KANSUU:"";
ni(n):=n!/**/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A"*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)$
ed(e1,e2,x,bl,bdl):=block([hpe1,hpe2,hpe3,e1l,e2l,e3l,e4l,i],hpe1:hipow(e1,x),e1l:[],for i:0 thru hpe1 do e1l:cons(coeff(e1,x,i),e1l),print(e1l), /**/hpe2:hipow(e2,x),e2l:[],for i:0 thru hpe2 do e2l:cons(coeff(e2,x,i),e2l),print(e2l), /**/e20l:e2l,for i:1 thru hpe1-hpe2 do e20l:endcons(0,e20l), /**/e3:quotient(e1,e2,x),hpe3:hipow(e3,x),e3l:[],for i:0 thru hpe3 do e3l:cons(coeff(e3,x,i),e3l),print(e3l),print(" "), /**/print(bl,e3l),print(bdl),print(e2l,")",e1l),e4l:e20l*e3l[1],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l), /**/for i:1 thru hpe1-hpe2 do(e20l:cons(0,rest(e20l,-1)),e4l:e20l*e3l[1+i],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l)),e1l:[e3l,e1l])/*e1のe2による割り算実行、結果は係数リスト、着目文字引数x追加*/$ elx(el,x):=block([i,iM,e],iM:length(el),e:0,for i:1 thru iM do(e:e+el[i]*x^(iM-i)),e:e)$
fpl(e1n,e1d,e2n,e2d):=block([e1l,e2l,egcm,el,e],e1l:[e1n,"/",e1d],e2l:[e2n,"/",e2d],egcm:gcm(factor(e1n*e2d+e2n*e1d),factor(e1d*e2d)), /**/el:[factor(e1n*e2d+e2n*e1d)/egcm,"/",factor(e1d*e2d/egcm)],e:el[1]/el[3],el:[el,e],print(el))/*分数式の加減*/$ fbl(en,ed,x):=block([xz,i,iM,j,el,fl],xz:solve(ed=0,x),iM:length(xz),el:[],
/**/(j:1,(while subst(xz[1],diff(ed,x))=0 and 5>j do j:j+1),print([1,j,xz[1],ed,(x-rhs(xz[1]))^j]),
/**/fl:subst(xz[1],rat(en*(x-rhs(xz[1]))^j/ed))/(x-rhs(xz[1]))^j,el:[en/ed,fl,rat(en/ed-fl)]))$
fBL(en,ed,x):=block([fBl,fl],fl:[],fBl:[0,0,en/ed],
/**/while fBl[3]#0 do(fBl:fbl(num(fBl[3]),denom(fBl[3]),x),fl:endcons(fBl[2],fl)),print(fl),fl:fl)$

TEJUN:""$
(e1n:1,e1d:(x*(x+1)),e2n:1,e2d:((x+1)*(x+2)),e3n:1,e3d:((x+2)*(x+3)))/*(◆修正部分2)*/$
f:lsum(i,i,fBL(e1n,e1d,x)+fBL(e2n,e2d,x)+fBL(e3n,e3d,x));f:rat(f);

KAKUNIN:"確認"/**/$
f0:e1n/e1d+e2n/e2d+e3n/e3d;
kknnl:[];for i:1 thru 50 do(if subst([x=i],e1d*e2d*e3d)#0 then kknnl:endcons(subst([x=i],[f0,f]),kknnl)else kknnl:endcons([1/0.000000001,1/0.000000001],kknnl))/**/$
(kknn:[kknnl,"x:1->50で[e1n/e1d+e2n/e2d+e3n/e3d,f]を確認"])/**/$
print(kknn)/*確認*/$

KAITOU:[f,"加減の結果"]/*解答*//**/$
SUJIMITI:"各項を部分分数分解して加減すると、第1項の部分分数分解は(  )となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・補充4 10103 1/(x*(x+1))+1/((x+1)*(x+2))+1/((x+2)*(x+3))-3/((x+3)*x)は、"/*(◆修正部分1)*/$
(e1n:1,e1d:(x*(x+1)),e2n:1,e2d:((x+1)*(x+2)),e3n:1,e3d:((x+2)*(x+3)),e4n:-3,e4d:((x+3)*x))/*(◆修正部分2)*/$
f:lsum(i,i,fBL(e1n,e1d,x)+fBL(e2n,e2d,x)+fBL(e3n,e3d,x)+fBL(e4n,e4d,x));f:rat(f)/*(◆修正部分2)*/;


◆コマンド番号10104
●恒等式
●●●●●●●●●●●●●●●●
kill(all) /**/$
ordergreat(X,Y,Z,x,y,z,A,B,C,a,b,c) /* できるだけ、X,Y,Z,x,y,z,A,B,C,a,b,cの順で */;powerdisp:false /* 降べきの順にして */$
MONDAI:"・補充5 10104 (a+b-4)*x+(a-b+2)=0がxの恒等式となるa,bは"/*(◆修正部分1)*/$
KOUSATU:"右辺を0*x+0と考え、係数比較を行うと、・・・"/*(◆修正部分1)*/;

KANSUU:"";
ni(n):=n!/*nの階乗*/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを文字変数で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrの数値表現(n,rは数値)*/$
lng(n,list,sw):=block([D,i,iM,V],D:true,iM:length(list),
/**/for i:1 thru iM do(if (sw="N"and n=list[i]) or (sw="G" and list[i]>=n ) or (sw="L"and n>=list[i]) then D:false),V:D)/*[スイッチごとにTF判定]*/$
Xr(list,sw):=block([r,i,j],/*print("nHr",lA,length(lA[1]),r),*/ /**/r:length(list),
/**/while r>length(lA[1]) do(/*print(length(lA[1]),r),*/
/**//**/iM:length(lA),lEA:[],/*print(iM),*/
/**//**/for i:1 thru iM do(
/**//**//**/lL:lA[i],/*print("listi",list[i]),*/
/**//**//**/for j:1 thru list[length(lA[iM])+1] do(/*print(iM,length(lA[iM])+1 ),*/
/**//**//**//**/if lng(j,lL,sw)=true then lEA:endcons(endcons(j,lL),lEA)/*,print("lEA0",lL,lEA)*/)),
/**//**/lA:lEA,print("lA",lA,length(lA))))/*listから順列作成、スイッチは、1324>>sw="N",1234>>sw="G",4321>>sw="L",1122>>sw="A",順列・組合せ*/$
load(fourier_elim)$
load ("functs")$
gcm(n1,n2):=n1*n2/lcm(n1,n2)/*n1,n2の最大公倍数*/$
quon(n1,n2):=block([qn,rn],rn:mod(n1,n2),qn:quotient(n1-rn,n2))/*n1のn2による整商*/$
exd(e1,e2,m):=block([k,kM,e11,e21,e,bL],e11:rat(e1,m),e21:rat(e2,m),e:rat(e11*e21,m),kM:hipow(e,m),
/**/print(e11),print(e21),print("----------各次数の係数に注目して") ,
/**/bL:["","...","......",".........","............",
/**/"...............","..................",".....................","........................"] /**/,
/**/for k:0 thru kM do(
/**//**/if kM>k then print(bL[k+1],coeff(e,m,(kM-k))*m^(kM-k))
/**//**//**/else print(bL[k+2],coeff(e,m,(kM-k))*moji^(kM-k))
/**//**/) /* "xの各次数の項を求めて(直前の3式から求め)" */,
/**/print("---------------------------------したがって") ,print(e),e:e)/*e1,e2の、mに着目した掛け算実行*/$
ed(e1,e2,x,bl,bdl):=block([hpe1,hpe2,hpe3,e1l,e2l,e3l,e4l,i],hpe1:hipow(e1,x),e1l:[],for i:0 thru hpe1 do e1l:cons(coeff(e1,x,i),e1l),print(e1l), /**/hpe2:hipow(e2,x),e2l:[],for i:0 thru hpe2 do e2l:cons(coeff(e2,x,i),e2l),print(e2l), /**/e20l:e2l,for i:1 thru hpe1-hpe2 do e20l:endcons(0,e20l), /**/e3:quotient(e1,e2,x),hpe3:hipow(e3,x),e3l:[],for i:0 thru hpe3 do e3l:cons(coeff(e3,x,i),e3l),print(e3l),print(" "), /**/print(bl,e3l),print(bdl),print(e2l,")",e1l),e4l:e20l*e3l[1],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l), /**/for i:1 thru hpe1-hpe2 do(e20l:cons(0,rest(e20l,-1)),e4l:e20l*e3l[1+i],print(bl,e4l),print(bdl),e1l:e1l-e4l,print(bl,e1l)),e1l:[e3l,e1l])/*e1のe2による割り算実行、結果は係数リスト、着目文字引数x追加*/$ elx(el,x):=block([i,iM,e],iM:length(el),e:0,for i:1 thru iM do(e:e+el[i]*x^(iM-i)),e:e)/*係数リストをxの文字式へ*/$

TEJUN:""$
(e1:(a+b-4)*x+(a-b+2),e2:0)/*(◆修正部分2)*/$
e:e1=e2;e00:coeff(rat(e),x,0);e01:coeff(rat(e),x,1)/*(◆修正部分2)*/$
ans:solve([e00,e01],[a,b])/*(◆修正部分2)*/;

KAKUNIN:"確認"/**/$
(kknn:[e,rat(subst(ans,e)),"[解を代入,展開]して、e1=e2を確認"])/**/$ print(kknn)/*確認*/$

KAITOU:[ans,"このときxの恒等式"]/*解答*//**/$
SUJIMITI:"右辺を0*x+0と考え、係数比較を行うと、定数項は(  )=(  )、・・・"/*(◆修正部分3)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・補充5 10104 (x+1)*a+(2*x-1)*b+2*x+5=0がxの恒等式となるa,bは"/*(◆修正部分1)*/$
KOUSATU:"左辺をxの式として整理し、係数比較を行うと、・・・"/*(◆修正部分1)*/;
(e1:rat((x+1)*a+(2*x-1)*b+2*x+5,x),e2:0)/*(◆修正部分2)*/$
e:e1=e2;e00:coeff(rat(e),x,0);e01:coeff(rat(e),x,1)/*(◆修正部分2)*/$
ans:solve([e00,e01],[a,b])/*(◆修正部分2)*/;
SUJIMITI:"左辺をxの式として整理し、係数比較を行うと、定数項は、(  )=(  )となり、・・・"/*(◆修正部分3)*/;