: Maxima数学II自習教材開発
教材の概要
1 式と証明 2)等式・不等式の証明
 6.等式の証明
 7.不等式の証明
 102.補充問題

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
参照テキスト
 数研出版新編数学II

:   6.等式の証明
   A. 恒等式の証明
◆コマンド番号601
●A=Bの証明
●●●●●●●●●●●●●●●●
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・練習22 601 a^3+b^3=(a+b)^3-3*a*b*(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:[[1,d],[d+1,d+j]],1つ目1~d,2つ目d+1~d+jで作成、スイッチsw、1324>>"N",1234>>"G",4321>>"L",1122>>"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,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),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による割り算実行、結果はリスト*/$
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^3+b^3,e2:(a+b)^3-3*a*b*(a+b))/*(◆修正部分2)*/$
e3:rat(e2);if e1=e3 then ans:"左辺=右辺" else ans:"左辺≠右辺"/*(◆修正部分2)*/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(kknnl:endcons(subst([a=i,b=j],[a,b,e1,e2]),kknnl)))/*(◆修正部分3)*/;
kknn:[kknnl,"[a,b,e1,e2]のa,bに1~10を代入して、e1=e2を確認"]/*(◆修正部分3)*/$
print(kknn)/*確認*/$

KAITOU:["lhs=",e1,"rhs=",e3,ans,"よって証明された"]/*解答*//**/$
SUJIMITI:"より複雑な右辺を変形して、単純にすると、a^3の項は(  )、・・・"/*(◆修正部分4)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例題7・練習22 601 (1+x)^3=1+x+x*(1+x)+x(1+x)^2の証明は"/*(◆修正部分1)*/$
KOUSATU:"左辺、右辺をそれぞれ展開、整理して、単純にすると、・・・"/*(◆修正部分1)*/;
(e1:(1+x)^3,e2:1+x+x*(1+x)+x*(1+x)^2)/*(◆修正部分2)*/$
e3:rat(e1,x);e4:rat(e2,x);if e3=e4 then ans:"左辺=右辺" else ans:"左辺≠右辺"/*(◆修正部分2)*/$
kknnl:[];for i:1 thru 50 do(kknnl:endcons(subst([x=i],[x,e1,e2]),kknnl))/*(◆修正部分3)*/;
kknn:[kknnl,"[x,e1,e2]のxに1~50を代入して、e1=e2を確認"]/*(◆修正部分3)*/$
SUJIMITI:"左辺、右辺をそれぞれ展開、整理して、単純にすると、右辺のa^2の項は(  )、・・・"/*(◆修正部分4)*/;


   B. 条件付きの等式の証明
◆コマンド番号602
●条件付きの等式の証明
●●●●●●●●●●●●●●●●
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・練習23 602 a+b=cのとき、b^2+c^2=a^2+2*b*cの証明は"/*(◆修正部分1)*/$
KOUSATU:"条件式をa=と変形して、右辺のaを消去すると、・・・"/*(◆修正部分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,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),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による割り算実行、結果はリスト*/$
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:""$
(jk:a+b=c,e1:b^2+c^2,e2:a^2+2*b*c)/*(◆修正部分2)*/$
jk:jk-b;e21:rat(subst(jk,e2));if e1=e21 then ans:"左辺=右辺" else ans:"左辺≠右辺"/*(◆修正部分2)*/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(kknnl:endcons(subst([subst([b=i,c=j],jk),b=i,c=j],[a,b,c,e1,e2]),kknnl)))/*(◆修正部分3)*/;
kknn:[kknnl,"[jk,b,c,e1,e2]のb,cに1~10を代入して、e1=e2を確認"]/*(◆修正部分3)*/$
print(kknn)/*確認*/$

KAITOU:["lhs=",e1,"rhs=",e3,ans,"よって証明された"]/*解答*//*(◆修正部分4)*/$
SUJIMITI:"条件式を変形してa=(  )として、右辺のaを消去すると、・・・"/*(◆修正部分4)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例題8・練習23 602 a+b=cのとき、a^2+b*c=b^2+c*aの証明は"/*(◆修正部分1)*/$
KOUSATU:"条件式を両辺に代入して、cを消去すると、・・・"/*(◆修正部分1)*/;
(jk:a+b=c,e1:a^2+b*c,e2:b^2+c*a)/*(◆修正部分2)*/$
jk:rhs(jk)=lhs(jk);e11:rat(subst(jk,e1));e21:rat(subst(jk,e2));if e11=e21 then ans:"左辺=右辺" else ans:"左辺≠右辺"/*(◆修正部分2)*/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(kknnl:endcons(subst([a=i,b=j,subst([a=i,b=j],jk)],[a,b,c,e1,e2]),kknnl)))/*(◆修正部分3)*/;
kknn:[kknnl,"[a,b,jk,e1,e2]のa,bに1~10を代入して、e1=e2を確認"]/*(◆修正部分3)*/$
KAITOU:["lhs=",e1,"rhs=",e2,ans,"よって証明された"]/*解答*//*(◆修正部分4)*/$
SUJIMITI:"条件式をc=と変形して、cを消去すると、右辺のa^2の項は(  )、・・・"/*(◆修正部分4)*/;


◆コマンド番号603
●条件付きの等式の証明
●●●●●●●●●●●●●●●●
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:"・練習24 603 a+b+c=0のとき、a^2+c*a=b^2+b*cの証明は"/*(◆修正部分1)*/$
KOUSATU:"条件式をc=と変形して、両辺のcを消去すると、・・・"/*(◆修正部分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,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),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による割り算実行、結果はリスト*/$
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:""$
(jk:a+b+c=0,e1:a^2+c*a,e2:b^2+b*c)/*(◆修正部分2)*/$
jk:jk-a-b;e11:rat(subst(jk,e1));e21:rat(subst(jk,e2));if e11=e21 then ans:"左辺=右辺" else ans:"左辺≠右辺"/*(◆修正部分2)*/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(kknnl:endcons(subst([a=i,b=j,subst([a=i,b=j],jk)],[a,b,c,e1,e2]),kknnl)))/*(◆修正部分3)*/;
kknn:[kknnl,"[a,b,jk,e1,e2]のa,bに1~10を代入して、e1=e2を確認"]/*(◆修正部分3)*/$
print(kknn)/*確認*/$

KAITOU:["lhs=",e1,"rhs=",e2,ans,"よって証明された"]/*解答*//*(◆修正部分4)*/$
SUJIMITI:"条件式を変形してa=(  )として、右辺のaを消去すると、・・・"/*(◆修正部分4)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・練習24 603 a+b+c=0のとき、a*b*(a+b)+b*c*(b+c)+c*a*(c+a)+3*a*b*c=0の証明は"/*(◆修正部分1)*/$
KOUSATU:"条件式をc=と変形して、両辺のcを消去すると、・・・"/*(◆修正部分1)*/;
(jk:a+b+c=0,e1:a*b*(a+b)+b*c*(b+c)+c*a*(c+a)+3*a*b*c,e2:0)/*(◆修正部分2)*/$
jk:jk-a-b;e11:rat(subst(jk,e1));if e11=e2 then ans:"左辺=右辺" else ans:"左辺≠右辺"/*(◆修正部分2)*/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(kknnl:endcons(subst([a=i,b=j,subst([a=i,b=j],jk)],[a,b,c,e1,e2]),kknnl)))/*(◆修正部分3)*/;
kknn:[kknnl,"[a,b,jk,e1,e2]のa,bに1~10を代入して、e1=e2を確認"]/*(◆修正部分3)*/$
KAITOU:["lhs=",e1,"rhs=",e2,ans,"よって証明された"]/*解答*//*(◆修正部分4)*/$
SUJIMITI:"条件式をc=と変形して、cを消去すると、右辺のa^2の項は(  )、・・・"/*(◆修正部分4)*/;


◆コマンド番号604
●分数式を含む等式
●●●●●●●●●●●●●●●●
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:"・例10・練習25 604 a/b=c/d=2のとき、(a+c)/(b+d)の値は"/*(◆修正部分1)*/$
KOUSATU:"条件式(比例式)は比の値を利用してa=,c=と変形し、与式のa,cを消去すると、・・・"/**/;

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,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),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による割り算実行、結果はリスト*/$
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:""$
(jk1:a/b=2,jk2:c/d=2,e:(a+c)/(b+d))/*(◆修正部分2)*/$
jk1:jk1*b;jk2:jk2*d;e1:rat(subst([jk1,jk2],e))/**/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(if i#-j then kknnl:endcons(subst([b=i,d=j,subst([b=i,d=j],jk1),subst([b=i,d=j],jk2)],[a,b,c,d,e]),kknnl) else kknnl:endcons(subst([b=i,d=j,subst([b=i,d=j],jk1),subst([b=i,d=j],jk2)],[a,b,c,d,9999999]),kknnl)))/*(◆修正部分3)*/;
kknn:[kknnl,"[jk1,b,jk2,d,e]のb,dに1~10を代入して、eの値を確認"]/**/$
print(kknn)/*確認*/$

KAITOU:[e,e1,"解答"]/*解答*//**/$
SUJIMITI:"条件式(比例式)は比の値を利用して、a=(  )、c=(  )として、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例10・練習25 604 a/b=c/d=3のとき、(a-c)/(b-d)の値は"/*(◆修正部分1)*/$
(jk1:a/b=3,jk2:c/d=3,e:(a-c)/(b-d))/*(◆修正部分2)*/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(if i#j then kknnl:endcons(subst([b=i,d=j,subst([b=i,d=j],jk1),subst([b=i,d=j],jk2)],[a,b,c,d,e]),kknnl) else kknnl:endcons(subst([b=i,d=j,subst([b=i,d=j],jk1),subst([b=i,d=j],jk2)],[a,b,c,d,9999999]),kknnl)))/*(◆修正部分3)*/;


◆コマンド番号605
●分数式を含む等式
●●●●●●●●●●●●●●●●
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・練習26 605 a/b=c/dのとき、(a+c)/(b+d)=(a-c)/(b-d)"/*(◆修正部分1)*/$
KOUSATU:"条件式(比例式)は比の値をkとおいてa=,c=と変形し、与式のa,cを消去すると、・・・"/**/;

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,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),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による割り算実行、結果はリスト*/$
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:""$
(jk1:a/b=k,jk2:c/d=k,e1:(a+c)/(b+d),e2:(a-c)/(b-d))/*(◆修正部分2)*/$
jk1:jk1*b;jk2:jk2*d;e11:rat(subst([jk1,jk2],e1));e21:rat(subst([jk1,jk2],e2))/**/$
if e11=e21 then ans:"左辺=右辺" else ans:"左辺≠右辺"/**/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(if i#-j and i#j then kknnl:endcons(subst([b=i,d=j,subst([b=i,d=j],jk1),subst([b=i,d=j],jk2)],[a,b,c,d,e1,e2]),kknnl) else kknnl:endcons(subst([b=i,d=j,subst([b=i,d=j],jk1),subst([b=i,d=j],jk2)],[a,b,c,d,9999999,9999999]),kknnl)))/*(◆修正部分3)*/;
kknn:[kknnl,"[jk1,b,jk2,d,e1,e2]のb,dに1~10を代入して、e1,e2の値を確認"]/**/$
print(kknn)/*確認*/$

KAITOU:[e1,e2,ans,"解答"]/*解答*//*(◆修正部分4)*/$
SUJIMITI:"条件式(比例式)は比の値をkとし、a=(  )、c=(  )として、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・応用例題3・練習26 605 a/b=c/dのとき、(a^2+c^2)/(b^2+d^2)=a^2/b^2"/*(◆修正部分1)*/$
(jk1:a/b=k,jk2:c/d=k,e1:(a^2+c^2)/(b^2+d^2),e2:a^2/b^2)/*(◆修正部分2)*/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(if i#0 and j#0 then kknnl:endcons(subst([b=i,d=j,subst([b=i,d=j],jk1),subst([b=i,d=j],jk2)],[a,b,c,d,e]),kknnl) else kknnl:endcons(subst([b=i,d=j,subst([b=i,d=j],jk1),subst([b=i,d=j],jk2)],[a,b,c,d,9999999]),kknnl)))/*(◆修正部分3)*/;


:   7.不等式の証明
   A. 実数の大小関係
◆コマンド番号701
●実数の大小関係の性質
●●●●●●●●●●●●●●●●
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:"・例11 701 a>bかつc>dのとき、a+c>b+d"/*(◆修正部分1)*/$
KOUSATU:"条件の不等式をa=b+p1 (p1>0)と等式にして、左辺―右辺として、その正負を判断し、・・・"/**/;

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,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),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による割り算実行、結果はリスト*/$
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:""$
(jk1:a>b,jk2:c>d,e1:a+c,e2:b+d)/*(◆修正部分2)*/$
assume(p1>0,p2>0);jk1:a=b+p1;jk2:c=d+p2;e:e1-e2;e:subst([jk1,jk2],e);print(rat(e))/*(◆修正部分2)*/$
if rat(e)>0 then ans:"左辺>右辺" else ans:"左辺≦右辺";print(ans)/**/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(kknnl:endcons(subst([b=i,d=j,subst([b=i,d=j],jk1),subst([b=i,d=j],jk2)],[a,b,c,d,e1,e2,e1-e2]),kknnl)))/*(◆修正部分3)*/;
kknn:[kknnl,"[jk1,b,jk2,d,e1,e2,e1-e2]のb,dに1~10を代入して、e1-e2の正負を確認"]/**/$
print(kknn)/*確認*/$

KAITOU:[e1,e2,ans,"解答"]/*解答*//*(◆修正部分4)*/$
SUJIMITI:"条件の不等式をa=b+p1 (p1>0)、c=(    (  ))として、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例11 701 a>b>0かつc>d>0のとき、a*c>b*d"/*(◆修正部分1)*/$
(jk1:a>b,jk2:c>d,e1:a*c,e2:b*d)/*(◆修正部分2)*/$
assume(p1>0,p2>0,a>0,b>0,c>0,d>0);jk1:a=b+p1;jk2:c=d+p2;e:e1-e2;e:subst([jk1,jk2],e);print(rat(e))/*(◆修正部分2)*/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(kknnl:endcons(subst([b=i,d=j,subst([b=i,d=j],jk1),subst([b=i,d=j],jk2)],[a,b,c,d,e]),kknnl)))/*(◆修正部分3)*/;


◆コマンド番号702
●実数の大小関係の性質
●●●●●●●●●●●●●●●●
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・練習27 702 x>yのとき、2*x+y>x+2*y"/*(◆修正部分1)*/$
KOUSATU:"条件の不等式をx=y+p1 (p1>0)と等式にして、左辺―右辺として、その正負を判断し、・・・"/**/;

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,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),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による割り算実行、結果はリスト*/$
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の文字式へ*/$
hhksl(e,x):=block([a,b,c,p,q,el],a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:subst(x=p,e),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$
Absa(e,lal,a):=block([r],r:subst(a^2,lal^2,e),r:subst(abs(a),lal,e))/*絶対値記号復元*/$

TEJUN:""$
(jk1:x>y,e1:2*x+y,e2:x+2*y)/*(◆修正部分2)*/$
assume(p1>0);jk1:x=y+p1;e:e1-e2;e:subst([jk1],e);print(rat(e))/**/$
if rat(e)>0 then ans:"左辺>右辺" else ans:"左辺≦右辺";print(ans)/**/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:2 thru 10 do(for j:1 thru i-1 do(kknnl:endcons(subst([x=i,y=j],[x,y,e1,e2,e1-e2]),kknnl)))/**/;
kknn:[kknnl,"[x,y,e1,e2,e1-e2]のxに2~10,yに1~x-1を代入して、e1-e2の正負を確認"]/**/$
print(kknn)/*確認*/$

KAITOU:[e1,e2,ans,"解答"]/*解答*//**/$
SUJIMITI:"条件の不等式をx=y+p1 (p1>0)とすると、2*x+y=(    )となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例題9・練習27 702 x>yのとき、3*x-4*y>2*x-3*y"/*(◆修正部分1)*/$
(jk1:x>y,e1:3*x-4*y,e2:2*x-3*y)/*(◆修正部分2)*/$


◆コマンド番号703
●実数の大小関係の性質
●●●●●●●●●●●●●●●●
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・練習28 703 x>1,y>1のとき、x*y+1>x+y"/*(◆修正部分1)*/$
KOUSATU:"条件の不等式をx=1+p1 (p1>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,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),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による割り算実行、結果はリスト*/$
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:""$
(jk1:x>1,jk2:y>1,e1:x*y+1,e2:x+y)/*(◆修正部分2)*/$
assume(p1>0,p2>0);jk1:x=1+p1;jk2:y=1+p2;e:e1-e2;e:subst([jk1,jk2],e);print(rat(e))/*(◆修正部分2)*/$
if rat(e)>0 then ans:"左辺>右辺" else ans:"左辺≦右辺";print(ans)/**/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(kknnl:endcons(subst([x=i,y=j],[x,y,e1,e2,e]),kknnl)))/*(◆修正部分3)*/;
kknn:[kknnl,"[x,y,e1,e2,e1-e2]のx,yに1~10を代入して、e1-e2の正負を確認"]/**/$
print(kknn)/*確認*/$

KAITOU:[e1,e2,ans,"解答"]/*解答*//*(◆修正部分4)*/$
SUJIMITI:"条件の不等式をx=1+p1 (p1>0),y=( ( ))と等式にして、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・応用例題4・練習28 703 x>2,y>3のとき、x*y+6>3*x+2*y"/*(◆修正部分1)*/$
KOUSATU:"条件の不等式をx=2+p1 (p1>0)と等式にして、左辺―右辺として、その正負を判断し、・・・"/*(◆修正部分1)*/;
(jk1:x>2,jk2:y>3,e1:x*y+6,e2:3*x+2*y)/*(◆修正部分2)*/$
assume(p1>0,p2>0);jk1:x=2+p1;jk2:y=3+p2;e:e1-e2;e:subst([jk1,jk2],e);print(rat(e))/*(◆修正部分2)*/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(kknnl:endcons(subst([x=i,y=j],[x,y,e1,e2,rat(e)]),kknnl)))/*(◆修正部分3)*/;


   B. 実数の平方
◆コマンド番号704
●実数の平方
●●●●●●●●●●●●●●●●
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:"・例12・練習29 704 x^2+y^2>=2*x*yの証明と等号成立条件"/*(◆修正部分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,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),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による割り算実行、結果はリスト*/$
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の文字式へ*/$
hhksl(e,x):=block([a,b,c,p,q,el],a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:subst(x=p,e),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$
TEJUN:""$
(e1:x^2+y^2,e2:2*x*y)/*(◆修正部分2)*/$
e:e1-e2;el:hhksl(rat(e),x);print(el)/**/;
if el[3]=0 then ans:["x=",el[2],"で等号成立、左辺≧右辺"] elseif el[3]>0 then ans:["左辺>右辺"];print(ans)/**/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:-5 thru 5 do(for j:-5 thru 5 do(kknnl:endcons(subst([x=i,y=j],[x,y,e1,e2,e]),kknnl)))/**/;
kknn:[kknnl,"[x,y,e1,e2,e1-e2]のx,yに-5~5を代入して、e1-e2の正負を確認"]/**/$
print(kknn)/*確認*/$

KAITOU:[e1,e2,ans,"解答"]/*解答*//**/$
SUJIMITI:"左辺―右辺として、平方完成した式(    )から、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例12・練習29 704 (x+y)^2>=4*x*yの証明と等号成立条件"/*(◆修正部分1)*/$
(e1:(x+y)^2,e2:4*x*y)/*(◆修正部分2)*/$


◆コマンド番号705
●実数の平方
●●●●●●●●●●●●●●●●
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:"・例題10・練習30 705 a^2+5*b^2>=4*a*bの証明と等号成立条件"/*(◆修正部分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,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),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による割り算実行、結果はリスト*/$
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の文字式へ*/$
hhksl(e,x):=block([a,b,c,p,q,el],a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:subst(x=p,e),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$

TEJUN:""$
(e1:a^2+5*b^2,e2:4*a*b)/*(◆修正部分2)*/$
e:e1-e2;el:hhksl(rat(e),a);print(el)/**/;
bk:solve(el[3]=0,b);bk1:fourier_elim( [0>el[3]], [b]);
if bk1=emptyset then ans:["a=",subst(bk,el[2]),bk[1],"で等号成立、左辺≧右辺"] else ans:["左辺>!右辺"];print(ans)/**/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:-5 thru 5 do(for j:-5 thru 5 do(kknnl:endcons(subst([A=i,B=j,a=A^2,b=B^2],[a,b,e1,e2,e]),kknnl)))/**/;
kknn:[kknnl,"[a,b,e1,e2,e1-e2]のa,bに(-5~5)^2を代入して、e1-e2の正負を確認"]/**/$
print(kknn)/*確認*/$

KAITOU:[e1,e2,ans,"解答"]/*解答*//**/$
SUJIMITI:"左辺―右辺として、平方完成した式(    )から、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例題10・練習30 705 a^2-a*b+b^2>=0の証明と等号成立条件"/*(◆修正部分1)*/$
(e1:a^2-a*b+b^2,e2:0)/*(◆修正部分2)*/$


   C. 平方の大小関係
◆コマンド番号706
●平方の大小関係
●●●●●●●●●●●●●●●●
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:"・例題11・練習31 706 a>0,b>0のときsqrt(a)+sqrt(b)>sqrt(a+b)"/*(◆修正部分1)*/$
KOUSATU:"sqrt(a)=A,A>0などとし、両辺≧0だから、左辺^2―右辺^2として、・・・"/*(◆修正部分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,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),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による割り算実行、結果はリスト*/$
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の文字式へ*/$
hhksl(e,x):=block([a,b,c,p,q,el],a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:subst(x=p,e),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$

TEJUN:""$
(assume(A>0,B>0,a>0,b>0),e1:sqrt(a)+sqrt(b),e2:sqrt(a+b))/*(◆修正部分2)*/$
e01:A=sqrt(a);e02:B=sqrt(b);As:solve(e01,a);Bs:solve(e02,b);e1:subst([As[1],Bs[1]],e1);e2:subst([As[1],Bs[1]],e2)/*(◆修正部分2)*/;
e:e1^2-e2^2;e:rat(e);if hipow(e,A)=2 then el:hhksl(rat(e),A) else el:[e];print(el)/**//*(◆修正部分2)*/$
if el[1]>0 then ans:["左辺>右辺"] else ans:["左辺>!右辺"];print(ans)/**/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(kknnl:endcons(subst([A=i,B=j],[A,B,e1,e2,e]),kknnl)))/*(◆修正部分3)*/;
kknn:[kknnl,"[A,B,e1,e2,e1-e2]のA,Bに1~10を代入して、e1-e2の正負を確認"]/*(◆修正部分3)*/$
print(kknn)/*確認*/$

KAITOU:[e1,e2,ans,"解答"]/*解答*//**/$
SUJIMITI:"左辺^2―右辺^2=(    )として、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例題11・練習31 706 x>0のとき1+x>sqrt(1+2*x)"/*(◆修正部分1)*/$
KOUSATU:"両辺≧0だから、左辺^2―右辺^2として、・・・"/*(◆修正部分1)*/;
(assume(x>0),e1:1+x,e2:sqrt(1+2*x))/*(◆修正部分2)*/$
e:e1^2-e2^2;e:rat(e);if hipow(e,x)=2 then el:hhksl(rat(e),x) else el:[e];print(el)/*(◆修正部分2)*/$
kknnl:[];for i:1 thru 50 do(kknnl:endcons(subst([x=i],[x,e1,e2,e]),kknnl))/*(◆修正部分3)*/;
kknn:[kknnl,"[x,e1,e2,e1-e2]のxに1~10を代入して、e1-e2の正負を確認"]/*(◆修正部分3)*/$


   D. 絶対値を含む不等式の証明
◆コマンド番号707
●絶対値を含む不等式
●●●●●●●●●●●●●●●●
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・練習32 707 abs(a)+abs(b)>=abs(a+b)の証明と等号成立条件"/*(◆修正部分1)*/$
KOUSATU:"両辺≧0だから、左辺^2―右辺^2として、・・・"/**/;

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,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),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による割り算実行、結果はリスト*/$
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の文字式へ*/$
hhksl(e,x):=block([a,b,c,p,q,el],a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:subst(x=p,e),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$
Absa(e,lal,a):=block([r],r:subst(a^2,lal^2,e),r:subst(abs(a),lal,e))/*絶対値記号復元*/$

TEJUN:""$
(declare(a,real,b,real,c,real),e1:abs(a)+abs(b),e2:abs(a+b))/*(◆修正部分2)*/$
e:e1^2-e2^2;e:expand(e);e:subst(b=c/a,e);ckl:solve(e=0,c);ckl:[c>=0];ckl:subst(c=a*b,ckl);
if e>=0 then ans:[ckl[1],"のとき、等号成立で、左辺≧右辺"] elseif 0>=e then ans:[ckl[1],"のとき、等号成立で、左辺≧右辺"] else ans:["左辺??右辺"];

KAKUNIN:"確認"/**/$
kknnl:[];for i:-5 thru 5 do(for j:-5 thru 5 do(kknnl:endcons(subst([a=i,b=j,c=i*j],[a,b,e1,e2,e]),kknnl)))/**/;
kknn:[kknnl,"[a,b,e1,e2,e1-e2]のa,bに-5~5を代入して、e1-e2の正負を確認"]/**/$
print(kknn)/*確認*/$

KAITOU:[e1,e2,ans,"解答"]/*解答*//**/$
SUJIMITI:"左辺^2―右辺^2=(    )として、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・応用例題5・練習32 707 abs(a)+2*abs(b)>=abs(a+2*b)"/*(◆修正部分1)*/$
(declare(a,real,b,real,c,real),e1:abs(a)+2*abs(b),e2:abs(a+2*b))/*(◆修正部分2)*/$


   E. 相加平均と相乗平均
◆コマンド番号708
●相加平均と相乗平均
●●●●●●●●●●●●●●●●
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:"・ 708 a>0,b>0のとき、(a+b)/2>=sqrt(a*b)の証明と等号成立条件"/*(◆修正部分1)*/$
KOUSATU:"両辺≧0だから、左辺^2―右辺^2として、・・・"/**/;

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,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),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による割り算実行、結果はリスト*/$
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の文字式へ*/$
hhksl(e,x):=block([a,b,c,p,q,el],a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:subst(x=p,e),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$
Absa(e,lal,a):=block([r],r:subst(a^2,lal^2,e),r:subst(abs(a),lal,e))/*絶対値記号復元*/$

TEJUN:""$
(assume(A>0,B>0,a>0,b>0),e1:(a+b)/2,e2:sqrt(a*b))/*(◆修正部分2)*/$
e01:A=sqrt(a);e02:B=sqrt(b);As:solve(e01,a);Bs:solve(e02,b);e11:subst([As[1],Bs[1]],e1);e21:subst([As[1],Bs[1]],e2)/**/;
e:e11-e21;e:expand(e);if hipow(e,A)=2 then el:hhksl(e,A) else el:[e];print(el)/**/$
if el[3]=0 then(kA:solve(subst([e01,e02],A=el[2]),a));
if el[3]=0 then ans:[kA,"のとき、等号成立で、左辺≧右辺"] elseif 0>=e then ans:[el[2],"のとき、等号成立で、左辺≧右辺"] else ans:["左辺??右辺"];

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(kknnl:endcons(float(subst([a=i,b=j],[a,b,e1,e2,e1-e2])),kknnl)))/**/;
kknn:[kknnl,"[a,b,e1,e2,e1-e2]のa,bに1~10を代入して、e1-e2の正負を確認"]/**/$
print(kknn)/*確認*/$

KAITOU:[e1,e2,ans,"解答"]/*解答*//**/$
SUJIMITI:"左辺^2―右辺^2=(    )として、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・ 708 a>0,b>0のとき、a+4*b>=4*sqrt(a*b)の証明と等号成立条件"/*(◆修正部分1)*/$
(assume(A>0,B>0,a>0,b>0),e1:a+4*b,e2:4*sqrt(a*b))/*(◆修正部分2)*/$


◆コマンド番号709
●相加平均と相乗平均
●●●●●●●●●●●●●●●●
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:"・例題12・練習33 709 a>0のとき、a+1/a>=2の証明と等号成立条件"/*(◆修正部分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,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),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による割り算実行、結果はリスト*/$
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の文字式へ*/$
hhksl(e,x):=block([a,b,c,p,q,el],a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:subst(x=p,e),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$
Absa(e,lal,a):=block([r],r:subst(a^2,lal^2,e),r:subst(abs(a),lal,e))/*絶対値記号復元*/$

TEJUN:""$
jkl0:[A>0,B>0];e0:A+B>=2*sqrt(A*B);tj0:A=B/*(◆修正部分2)*/$
(e1:A=a,e2:B=1/a,e3:2)/*(◆修正部分2)*/$
jkl01:subst([e1,e2],jkl0);e01:subst([e1,e2],e0);tjl01:solve(subst([e1,e2],tj0),a)/*(◆修正部分2)*/$
if rhs(e01)=e3 then ans:["左辺≧右辺"] else ans:["左辺??右辺"];
iM:length(tjl01);jM:length(jkl0);tjl:[];
for i:1 thru iM do(tF:true,for j:1 thru jM do(print(subst(tjl01[i],jkl01[j])),if subst(tjl01[i],jkl01[j]) then tF:tF else tF:false),
/**/if tF=true then tjl:endcons(tjl01[i],tjl));
ans:cons([tjl,"が等号条件で"],ans);

KAKUNIN:"確認"/**/$
kknnl:[];for i:0.1 thru 5 step 0.1 do(kknnl:endcons(float(subst([a=i],[a,1/a,rhs(e1),rhs(e2),rhs(e1)+rhs(e2)-e3])),kknnl))/*(◆修正部分3)*/;
kknn:[kknnl,"[a,1/a,rhs(e1),rhs(e2),rhs(e1)+rhs(e2)-e3]のaに0.1~5.0を代入して、rhs(e1)+rhs(e2)-e3の正負を確認"]/*(◆修正部分3)*/$
print(kknn)/*確認*/$

KAITOU:[rhs(e1)+rhs(e2),e3,ans,"解答"]/*解答*//**/$
SUJIMITI:"相加平均と相乗平均の不等式に当てはめて、B=(   )として、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例題12・練習33 709 a>0,b>0のとき、a/b+b/a>=2の証明と等号成立条件"/*(◆修正部分1)*/$
jkl0:[A>0,B>0];e0:A+B>=2*sqrt(A*B);tj0:A=B/*(◆修正部分2)*/$
(e1:A=a/b,e2:B=b/a,e3:2)/*(◆修正部分2)*/$
jkl01:subst([e1,e2],jkl0);e01:subst([e1,e2],e0);tjl01:solve(subst([e1,e2],tj0),a)/*(◆修正部分2)*/$
kknnl:[];for i:0.1 thru 2 step 0.2 do(for j:0.1 thru 2 step 0.2 do(kknnl:endcons(float(subst([a=i,b=j],[a,b,rhs(e1),rhs(e2),rhs(e1)+rhs(e2)-e3])),kknnl)))/*(◆修正部分3)*/; kknn:[kknnl,"[a,b,rhs(e1),rhs(e2),rhs(e1)+rhs(e2)-e3]のa,bに0.1~1.9を代入して、rhs(e1)+rhs(e2)-e3の正負を確認"]/*(◆修正部分3)*/$

:   102.補充問題・章末問題
   . 補充問題
◆コマンド番号10201
●条件付きの等式の証明
●●●●●●●●●●●●●●●●
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 10201 a+b+c=0のとき、a^3+b^3+c^3=3*a*b*cの証明は"/*(◆修正部分1)*/$
KOUSATU:"条件式をc=と変形して、両辺のcを消去すると、・・・"/*(◆修正部分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,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),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による割り算実行、結果はリスト*/$
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:""$
(jk:a+b+c=0,e1:a^3+b^3+c^3,e2:3*a*b*c)/*(◆修正部分2)*/$
jk:jk-a-b;e11:rat(subst(jk,e1));e21:rat(subst(jk,e2));if e11=e21 then ans:"左辺=右辺" else ans:"左辺≠右辺"/*(◆修正部分2)*/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(kknnl:endcons(subst([a=i,b=j,subst([a=i,b=j],jk)],[a,b,c,e1,e2]),kknnl)))/*(◆修正部分3)*/;
kknn:[kknnl,"[a,b,jk,e1,e2]のa,bに1~10を代入して、e1=e2を確認"]/*(◆修正部分3)*/$
print(kknn)/*確認*/$

KAITOU:["lhs=",e1,"rhs=",e2,ans,"よって証明された"]/*解答*//*(◆修正部分4)*/$
SUJIMITI:"条件式を変形してa=(  )として、右辺のaを消去すると、・・・"/*(◆修正部分4)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行し、結果を考察せよ。


◆コマンド番号10202
●実数の大小関係の性質
●●●●●●●●●●●●●●●●
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 10202 b>a,y>xのとき、a*x+b*yとb*x+a*yの大小は"/*(◆修正部分1)*/$
KOUSATU:"条件の不等式をa=b+p1 (p1>0)と等式にして、左辺―右辺として、その正負を判断し、・・・"/**/;

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,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),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による割り算実行、結果はリスト*/$
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:""$
(jk1:b>a,jk2:y>x,e1:a*x+b*y,e2:b*x+a*y)/*(◆修正部分2)*/$
assume(p1>0,p2>0);jk1:b=a+p1;jk2:y=x+p2;e:e1-e2;e:subst([jk1,jk2],e);print(rat(e))/*(◆修正部分2)*/$
if rat(e)>0 then ans:"左辺>右辺" else ans:"左辺≦右辺";print(ans)/**/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(kknnl:endcons(rat(subst([a=i,x=j,subst([a=i,x=j],jk1),subst([a=i,x=j],jk2)],[a,b,x,y,e1,e2,e1-e2])),kknnl)))/*(◆修正部分3)*/;
kknn:[kknnl,"rat([a,jk1,x,jk2,e1,e2,e1-e2])のa,cに1~10を代入して、e1-e2の正負を確認"]/**/$
print(kknn)/*確認*/$

KAITOU:[e1,e2,ans,"解答"]/*解答*//*(◆修正部分4)*/$
SUJIMITI:"条件の不等式をa=b+p1 (p1>0)、c=(    (  ))として、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行し、結果を考察せよ。


◆コマンド番号10203
●相加平均と相乗平均
●●●●●●●●●●●●●●●●
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 10203 a>0,b>0のとき、(a+b)*(1/a+1/b)>=4の証明と等号成立条件"/*(◆修正部分1)*/$
KOUSATU:"左辺の第1因子、第2因子のそれぞれを相加平均と相乗平均の不等式に当てはめて、・・・"/**/;

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,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),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による割り算実行、結果はリスト*/$
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の文字式へ*/$
hhksl(e,x):=block([a,b,c,p,q,el],a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:subst(x=p,e),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$
Absa(e,lal,a):=block([r],r:subst(a^2,lal^2,e),r:subst(abs(a),lal,e))/*絶対値記号復元*/$

TEJUN:""$
jkl0:[A>0,B>0];e0:A+B>=2*sqrt(A*B);tj0:A=B/*(◆修正部分2)*/$
(assume(a>0,b>0),e1:A=a,e2:B=b,e3:A=1/a,e4:B=1/b,e5:4)/*(◆修正部分2)*/$
jkl01:subst([e1,e2],jkl0);e01:subst([e1,e2],e0);tjl01:solve(subst([e1,e2],tj0),a)/*(◆修正部分2)*/;
jkl03:subst([e3,e4],jkl0);e03:subst([e3,e4],e0);tjl03:solve(subst([e3,e4],tj0),a)/*(◆修正部分2)*/;
j1M:length(tjl01);j3M:length(tjl03);tjl:[];
for j1:1 thru j1M do(for j3:1 thru j3M do(if tjl01[j1]=tjl03[j3]then tjl:endcons(tjl01[j1],tjl)));
jM:length(tjl);print(tjl);if jM=0 and rhs(e01)*rhs(e03)=e5 then ans:["等号条件成立なしで、左辺>右辺"]
/**/else(
/**//**/tJl:[],for j:1 thru jM do(if subst(tjl[j],rhs(e01)*rhs(e03))=e5 then tJl:endcons(tjl[j],tJl)),
/**//**/if length(tJl)>0 then ans:[tJl,"が等号成立条件で、左辺≧右辺"] else ans:["左辺??右辺"]);

KAKUNIN:"確認"/**/$
kknnl:[];for i:0.2 thru 2 step 0.2 do(for j:0.2 thru 2 step 0.2 do(kknnl:endcons(float(subst([a=i,b=j],[a,b,rhs(e1),rhs(e2),rhs(e3),rhs(e4),(rhs(e1)+rhs(e2))*(rhs(e3)+rhs(e4))-e5])),kknnl)))/*(◆修正部分3)*/;
kknn:[kknnl,"[a,b,rhs(e1),rhs(e2),rhs(e3),rhs(e4),(rhs(e1)+rhs(e2))*(rhs(e3)+rhs(e4))-e5]のa,bに0.2~2.0を代入して、rhs(e1)+rhs(e2)-e3の正負を確認"]/*(◆修正部分3)*/$
print(kknn)/*確認*/$

KAITOU:[(rhs(e1)+rhs(e2))*(rhs(e3)+rhs(e4)),e5,ans,"解答"]/*解答*//**/$
SUJIMITI:"左辺の第1因子、第2因子のそれぞれを相加平均と相乗平均の不等式に当てはめて、第2因子では、B=(   )として、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・補充問題8 10203 a>0,b>0のとき、(a+1/b)*(b+4/a)>=8は成立するか(等号成立条件はあるか)"/*(◆修正部分1)*/$
jkl0:[A>0,B>0];e0:A+B>=2*sqrt(A*B);tj0:A=B/*(◆修正部分2)*/$
(assume(a>0,b>0),e1:A=a,e2:B=1/b,e3:A=b,e4:B=4/a,e5:8)/*(◆修正部分2)*/$
jkl01:subst([e1,e2],jkl0);e01:subst([e1,e2],e0);tjl01:solve(subst([e1,e2],tj0),a)/*(◆修正部分2)*/;
jkl03:subst([e3,e4],jkl0);e03:subst([e3,e4],e0);tjl03:solve(subst([e3,e4],tj0),a)/*(◆修正部分2)*/;


   . 章末問題
◆コマンド番号10204
●分数式に加減
●●●●●●●●●●●●●●●●
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 10204 1/(x^2-x)-2/(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,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),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])$
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)],print(el)))$
fBL(en,ed,x):=block([fBl,fl],fl:[],fBl:[0,0,en/ed],
/**/while diff(denom(fBl[3]),x)#0 do(fBl:fbl(num(fBl[3]),denom(fBl[3]),x),fl:endcons(fBl[2],fl)),fl:endcons(fBl[3],fl),print(fl),fl:fl)$

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

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

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

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・章末例題3 10204 (x-y)/(x*y)+(y-z)/(y*z)+(z-x)/(z*x)を計算すると、"/*(◆修正部分1)*/$
(e1n:(x-y),e1d:(x*y),e2n:(y-z),e2d:(y*z),e3n:(z-x),e3d:(z*x))/*(◆修正部分2)*/$
f:lsum(i,i,fBL(e1n,e1d,x)+fBL(e2n,e2d,y)+fBL(e3n,e3d,z));f:rat(f)/*(◆修正部分2)*/;
f0:e1n/e1d+e2n/e2d+e3n/e3d/*(◆修正部分3)*/;
kknnl:[];for i:-3 thru 3 do(for j:-3 thru 3 do(for k:-3 thru 3 do(if subst([x=i,y=j,z=k],e1d*e2d*e3d)#0 then kknnl:endcons(subst([x=i,y=j,z=k],[f0,f]),kknnl)else kknnl:endcons([1/0.000000001,1/0.000000001],kknnl))))/*(◆修正部分3)*/$
(kknn:[kknnl,"x,y,z:-3->3で[e1n/e1d+e2n/e2d+e3n/e3d,f]を確認"])/*(◆修正部分3)*/$


◆コマンド番号10205
●恒等式の定数決定
●●●●●●●●●●●●●●●●
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 10205 x^3=(x-1)^3+a*(x-1)^2+b*(x-1)+cが恒等式となるa,b,cは、"/*(◆修正部分1)*/$
KOUSATU:"右辺がx-1の多項式だから、x-1=tとおいて、tの恒等式にすると、・・・"/*(◆修正部分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,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),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])$
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)],print(el)))$
fBL(en,ed,x):=block([fBl,fl],fl:[],fBl:[0,0,en/ed],
/**/while diff(denom(fBl[3]),x)#0 do(fBl:fbl(num(fBl[3]),denom(fBl[3]),x),fl:endcons(fBl[2],fl)),fl:endcons(fBl[3],fl),print(fl),fl:fl)$

TEJUN:""$
(e0:x-1=t,e1:x^3=(x-1)^3+a*(x-1)^2+b*(x-1)+c)/*(◆修正部分2)*/$
sx:solve(e0,x);e11:expand(lhs(subst(sx,e1)));e112:coeff(e11,t,2);e111:coeff(e11,t,1);e110:coeff(e11,t,0)/*(◆修正部分2)*/;
ans:[a=e112,b=e111,c=e110]/*(◆修正部分2)*/;

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

KAITOU:[ans,"このとき恒等式"]/*解答*//**/$
SUJIMITI:"右辺がx-1の多項式だから、x-1=tとおいて、左辺を展開すると(  )となり、・・・"/*(◆修正部分3)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・章末例題4 10205 3/(x^3+1)=a/(x+1)+(b*x+c)/(x^2-x+1)が恒等式となるa,b,cは、"/*(◆修正部分1)*/$
KOUSATU:"両辺に(x+1)を掛けてx=-1を代入すると、・・・"/*(◆修正部分1)*/;
(e0:x+1,e1:3/(x^3+1)=a/(x+1)+(b*x+c)/(x^2-x+1))/*(◆修正部分2)*/$
sx:solve(e0=0,x);e11:rat(lhs(e1*e0))=taylor((rhs(e1*e0)),a,0,1);sa:solve(subst(sx,rat(e11)),a);e11:subst(sa,e11-a)*(x^2-x+1)/*(◆修正部分2)*/;
sb:solve(coeff(e11,x,2),b);sc:solve(coeff(e11,x,0),c);ans:[sa[1],sb[1],sc[1]]/*(◆修正部分2)*/;
SUJIMITI:"両辺に(x+1)を掛けてx=-1を代入すると、右辺は(  )となり、・・・"/*(◆修正部分3)*/;



◆コマンド番号10206
●恒等式の証明
●●●●●●●●●●●●●●●●
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 10206 (a-b)^2+(b-c)^2+(c-a)^2=2*(a^2+b^2+c^2-a*b-b*c-c*a)の証明"/*(◆修正部分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,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),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])$
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)],print(el)))$
fBL(en,ed,x):=block([fBl,fl],fl:[],fBl:[0,0,en/ed],
/**/while diff(denom(fBl[3]),x)#0 do(fBl:fbl(num(fBl[3]),denom(fBl[3]),x),fl:endcons(fBl[2],fl)),fl:endcons(fBl[3],fl),print(fl),fl:fl)$
hhksl(e,x):=block([a,b,c,p,q,el],e:expand(e),a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:factor((-b^2+4*a*c)/(4*a)),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$

TEJUN:""$
(e1:(a-b)^2+(b-c)^2+(c-a)^2,e2:2*(a^2+b^2+c^2-a*b-b*c-c*a))/*(◆修正部分2)*/$
e11:rat(e1);e21:rat(e2)/*(◆修正部分2)*/;
if e11=e21 then ans:[e1,e2,"左辺=右辺"] else ans:[e1,e2,"左辺=!右辺"];print(ans)/*(◆修正部分2)*/$

KAKUNIN:"確認"/**/$
kknnl:[];for i:-3 thru 3 do(for j:-3 thru 3 do(for k:-3 thru 3 do(kknnl:endcons(subst([a=i,b=j,c=k],[a,b,c,e1,e2,rat(e1-e2)]),kknnl))))/**/;
kknn:[kknnl,"[a,b,c,e1,e2,rat(e1-e2)]のa,b,cに-3~3を代入して、e1-e2の0を確認"]/**/$
print(kknn)/*確認*/$

KAITOU:[e1,e2,ans,"解答"]/*解答*//**/$
SUJIMITI:"左辺―右辺として、平方完成した式(    )から、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・章末問題6 10206 a^2+b^2+c^2>=a*b+b*c+c*aの証明と等号成立条件"/*(◆修正部分1)*/$
KOUSATU:"左辺-右辺として、aについて平方完成して、・・・((1)の結果からも導けるが・・・)"/*(◆修正部分1)*/;
(declare(a,real,b,real,c,real),e1:a^2+b^2+c^2,e2:a*b+b*c+c*a)/*(◆修正部分2)*/$
e:e1-e2;el:hhksl(e,a);print(el);el2:hhksl(el[3],b);print(el2)/*(◆修正部分2)*/;
sabcl:solve([a=el[2],b=el2[2]],[a,b]);iM:length(sabcl)/*(◆修正部分2)*/;
if el[1]>=0 and subst(sabcl,e)=0 then ans:[sabcl,"で等号成立し、左辺≧右辺"] else ans:["左辺??右辺"]/*(◆修正部分2)*/;


◆コマンド番号10207
●相加平均と相乗平均
●●●●●●●●●●●●●●●●
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 10207 a>0,b>0のとき、a*b+9/(a*b)>=6の証明と等号成立条件"/*(◆修正部分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,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),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による割り算実行、結果はリスト*/$
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の文字式へ*/$
hhksl(e,x):=block([a,b,c,p,q,el],a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:subst(x=p,e),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$
Absa(e,lal,a):=block([r],r:subst(a^2,lal^2,e),r:subst(abs(a),lal,e))/*絶対値記号復元*/$

TEJUN:""$
jkl0:[A>0,B>0];e0:A+B>=2*sqrt(A*B);tj0:A=B/*(◆修正部分2)*/$
(assume(a>0,b>0),e1:A=a*b,e2:B=9/(a*b),re:6)/*(◆修正部分2)*/$
jkl01:subst([e1,e2],jkl0);e01:subst([e1,e2],e0);tjl01:solve(subst([e1,e2],tj0),a)/*(◆修正部分2)*/;
tjM:length(tjl01);jkM:length(jkl01);tjl:[];for tj:1 thru tjM do(tF:true,for jk:1 thru jkM do(if subst(tjl01[tj],jkl01[jk]) then tF:tF else tF:false),if tF=true then tjl:endcons(tjl01[tj],tjl));
jM:length(tjl);print(tjl);if jM=0 and rhs(e01)=re then ans:["等号条件成立なしで、左辺>右辺"]
/**/else(
/**//**/tJl:[],for j:1 thru jM do(if subst(tjl[j],rhs(e01)=re) then tJl:endcons(tjl[j],tJl)),
/**//**/if length(tJl)>0 then ans:[tJl,"が等号成立条件で、左辺≧右辺"] else ans:["左辺??右辺"]);

KAKUNIN:"確認"/**/$
kknnl:[];for i:0.2 thru 3.2 step 0.2 do(for j:0.2 thru 3.2 step 0.2 do(kknnl:endcons(float(subst([a=i,b=j],[a,b,rhs(e1),rhs(e2),re,(rhs(e1)+rhs(e2))-re])),kknnl)))/**/;
kknn:[kknnl,"[a,b,rhs(e1),rhs(e2),re,(rhs(e1)+rhs(e2))-re]のa,bに0.2~3.2を代入して、rhs(e1)+rhs(e2)-reの正負を確認"]/**/$
print(kknn)/*確認*/$

KAITOU:[(rhs(e1)+rhs(e2)),re,ans,"解答"]/*解答*//*(◆修正部分3)*/$
SUJIMITI:"相加平均と相乗平均の不等式に当てはめて、等号成立条件は、(   )となり、・・・"/*(◆修正部分3)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・章末7 10207 a>0,b>0のとき、(a+1/b)*(b+4/a)>=9の証明と等号成立条件"/*(◆修正部分1)*/$
KOUSATU:"左辺を展開してから、相加平均と相乗平均の不等式に当てはめて、・・・"/*(◆修正部分1)*/;
jkl0:[A>0,B>0];e0:A+B>=2*sqrt(A*B);tj0:A=B/*(◆修正部分2)*/$
assume(a>0,b>0);e:expand((a+1/b)*(b+4/a));(e1:A=a*b,e2:B=4/(a*b),e3:5,re:9)/*eの展開を見て、e1,e2,e3,reを決める(◆修正部分2)*/$
jkl01:subst([e1,e2],jkl0);e01:subst([e1,e2],e0);e01:lhs(e01)+e3>=rhs(e01)+e3;tjl01:solve(subst([e1,e2],tj0),a)/*(◆修正部分2)*/;
KAITOU:[(rhs(e1)+rhs(e2))+e3,re,ans,"解答"]/*解答*//*(◆修正部分3)*/$
SUJIMITI:"左辺を展開すると不等式は(       )となり、相加平均と相乗平均の不等式に当てはめて、・・・"/*(◆修正部分3)*/;

◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・章末7・コラム 10207 a>0,b>0のとき、sqrt(a*b)>=2/(1/a+1/b)の証明と等号成立条件"/*(◆修正部分1)*/$
KOUSATU:"両辺の逆数をとってから、相加平均と相乗平均の不等式に当てはめて、・・・"/*(◆修正部分1)*/;
jkl0:[A>0,B>0];e0:A+B>=2*sqrt(A*B);tj0:A=B/*(◆修正部分2)*/$
assume(a>0,b>0);/*e:sqrt(a*b)>=2/(1/a+1/b):e:1/lhs(e)>=1/rhs(e);*/(e1:A=1/(2*a),e2:B=1/(2*b),re:1/sqrt(a*b))/*eの逆数を見て、e1,e2,reを決める(◆修正部分2)*/$
jkl01:subst([e1,e2],jkl0);e01:subst([e1,e2],e0);e01:lhs(e01)>=rhs(e01);tjl01:solve(subst([e1,e2],tj0),a)/*(◆修正部分2)*/;
KAITOU:[(rhs(e1)+rhs(e2)),re,ans,"解答"]/*解答*//*(◆修正部分3)*/$
SUJIMITI:"両辺の逆数をとると不等式は(       )となって、相加平均と相乗平均の不等式に当てはめて、・・・"/*(◆修正部分3)*/;


◆コマンド番号10208
●公式による因数分解
●●●●●●●●●●●●●●●●
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 10208 8*x^3-12*x^2*y+6*x*y^2-y^3の因数分解は"/*(◆修正部分1)*/$
KOUSATU:"3乗の公式に当てはめて、・・・"/*(◆修正部分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,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),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による割り算実行、結果はリスト*/$
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の文字式へ*/$
hhksl(e,x):=block([a,b,c,p,q,el],a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:subst(x=p,e),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$
Absa(e,lal,a):=block([r],r:subst(a^2,lal^2,e),r:subst(abs(a),lal,e))/*絶対値記号復元*/$

TEJUN:""$
e0:A^3+3*A^2*B+3*A*B^2+B^3=(A+B)^3/*(◆修正部分2)*/$
(e1:A=2*x,e2:B=-y,e:8*x^3-12*x^2*y+6*x*y^2-y^3)/*(◆修正部分2)*/$
le0:subst([e1,e2],lhs(e0));if le0=e then ans:subst([e1,e2],rhs(e0))/*(◆修正部分2)*/;

KAKUNIN:"確認"/**/$
kknnl:[];for i:-3 thru 3 do(for j:-3 thru 3 do(kknnl:endcons(subst([x=i,y=j],[x,y,e,ans,e-ans]),kknnl)))/*(◆修正部分3)*/;
kknn:[kknnl,"[x,y,e,ans,e-ans]のx,yに-3~3を代入して、e-ansの正負を確認"]/*(◆修正部分3)*/$
print(kknn)/*確認*/$

KAITOU:[e,ans,"解答"]/*解答*//*(◆修正部分4)*/$
SUJIMITI:"3乗の公式に当てはめて、A=(   )として、・・・"/*(◆修正部分4)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・章末8 10208 x^3+y^3=(x+y)^3-3*x*y*(x+y)を利用して、x^3+y^3+z^3-3*x*y*zの因数分解は"/*(◆修正部分1)*/$
KOUSATU:"利用する式を当てはめて、・・・"/*(◆修正部分1)*/;
e0:A^3+B^3=(A+B)^3-3*A*B*(A+B)$(e1:A=x,e2:B=y,e:x^3+y^3+z^3-3*x*y*z)/*(◆修正部分2)*/$
e01:subst([e1,e2],e0);e01:e01-y^3;e1:subst(e01,e);e02:subst([A=x+y,B=z],e0);e02:e02-(x+y)^3;e2:subst(e02,e1)/*(◆修正部分2)*/;
e3:-3*x*y*(x+y)-3*x*y*z=-3*x*y*(x+y+z);e3:e3+3*x*y*(x+y);e2:subst(rhs(e3),lhs(e3),e2);q:expand(quotient(e2,x+y+z));ans:(x+y+z)*q/*(◆修正部分2)*/;
kknnl:[];for i:-3 thru 3 do(for j:-3 thru 3 do(for k:-3 thru 3 do(kknnl:endcons(subst([x=i,y=j,z=k],[x,y,z,e,ans,e-ans]),kknnl))))/*(◆修正部分3)*/;
kknn:[kknnl,"[x,y,z,e,ans,e-ans]のx,y,zに-3~3を代入して、e-ansの正負を確認"]/*(◆修正部分3)*/$
KAITOU:[e,ans,"解答"]/*解答*//*(◆修正部分4)*/$
SUJIMITI:"利用する式を当てはめて、2回目はA=(   )として、・・・"/*(◆修正部分4)*/;


◆コマンド番号10209
●二項定理
●●●●●●●●●●●●●●●●
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 10209 二項定理により、n>=2の自然数のとき、(1+1/n)^n>2 "/*(◆修正部分1)*/$
KOUSATU:"二項定理で第2項までとると、・・・"/*(◆修正部分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,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),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による割り算実行、結果はリスト*/$
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の文字式へ*/$
hhksl(e,x):=block([a,b,c,p,q,el],a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:subst(x=p,e),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$
Absa(e,lal,a):=block([r],r:subst(a^2,lal^2,e),r:subst(abs(a),lal,e))/*絶対値記号復元*/$

TEJUN:""$
assume(rn>0);e0:(A+B)^n=nCr(n,0)*A^n+nCr(n,1)*A^(n-1)*B+rn/*(◆修正部分2)*/$
(e1:A=1,e2:B=1/n,re:2)/*(◆修正部分2)*/$
e:subst([e1,e2],e0);if rhs(e)>re then ans:[lhs(e),re,"左辺>右辺"]/**/;

KAKUNIN:"確認"/**/$
kknnl:[];for i:2 thru 50 do(kknnl:endcons(float(subst([n=i],[n,lhs(e),re,lhs(e)-re])),kknnl))/*(◆修正部分3)*/;
kknn:[kknnl,"[n,lhs(e),re,lhs(e)-re]のnに2~50を代入して、lhs(e)-reの正負を確認"]/*(◆修正部分3)*/$
print(kknn)/*確認*/$

KAITOU:[e,ans,"解答"]/*解答*//**/$
SUJIMITI:"二項定理で第2項までとると、(1+1/n)^n=(     )として、・・・"/*(◆修正部分4)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・章末9 10209 二項定理により、n>=3の自然数のとき、(1+1/n)^n>9/4 "/*(◆修正部分1)*/$
KOUSATU:"二項定理で第3項までとると、・・・"/*(◆修正部分1)*/;
assume(rn>0,n>2);e0:(A+B)^n=nCr(n,0)*A^n+nCr(n,1)*A^(n-1)*B+nCr(n,2)*A^(n-2)*B^2+rn/*(◆修正部分2)*/$
(e1:A=1,e2:B=1/n,re:9/4)/*(◆修正部分2)*/$
kknnl:[];for i:3 thru 50 do(kknnl:endcons(float(subst([n=i],[n,lhs(e),re,lhs(e)-re])),kknnl))/*(◆修正部分3)*/;
kknn:[kknnl,"[n,lhs(e),re,lhs(e)-re]のnに3~50を代入して、lhs(e)-reの正負を確認"]/*(◆修正部分3)*/$
SUJIMITI:"二項定理で第3項までとると、(1+1/n)^n=(     )として、・・・"/*(◆修正部分4)*/;

e3:-3*x*y*(x+y)-3*x*y*z=-3*x*y*(x+y+z);e3:e3+3*x*y*(x+y);e2:subst(rhs(e3),lhs(e3),e2);q:expand(quotient(e2,x+y+z));ans:(x+y+z)*q/*(◆修正部分2)*/;
kknnl:[];for i:-3 thru 3 do(for j:-3 thru 3 do(for k:-3 thru 3 do(kknnl:endcons(subst([x=i,y=j,z=k],[x,y,z,e,ans,e-ans]),kknnl))))/*(◆修正部分3)*/;
kknn:[kknnl,"[x,y,z,e,ans,e-ans]のx,y,zに-3~3を代入して、e-ansの正負を確認"]/*(◆修正部分3)*/$
KAITOU:[e,ans,"解答"]/*解答*//*(◆修正部分4)*/$
SUJIMITI:"利用する式を当てはめて、2回目はA=(   )として、・・・"/*(◆修正部分4)*/;


◆コマンド番号10210
●商と余り
●●●●●●●●●●●●●●●●
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:"・章末11 10210 xについての整式A=x^3+a*x^2+2*x+1をx^2+x-2で割ると、余りが2*x+5となる。aと商は"/*(◆修正部分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,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),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による割り算実行、結果はリスト*/$
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の文字式へ*/$
hhksl(e,x):=block([a,b,c,p,q,el],a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:subst(x=p,e),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$
Absa(e,lal,a):=block([r],r:subst(a^2,lal^2,e),r:subst(abs(a),lal,e))/*絶対値記号復元*/$

TEJUN:""$
e0:A=Q*B+R/*(◆修正部分2)*/$
(e1:A=x^3+a*x^2+2*x+1,e2:B=x^2+x-2,e4:R=2*x+5)/*(◆修正部分2)*/$
e:subst([e1,e2,e4],e0);e01:e0-R;e02:subst([e1,e2,e4],e01);e02:factor(e02)/**/;
sxl:solve(rhs(e02)=0,x);sal:solve(subst(sxl[1],e02),a)/**/;
e03:factor(subst(sal,e02));sQl:solve(e03,Q);ans:[sal[1],sQl[1],"a、商"];

KAKUNIN:"確認"/**/$
kknnl:[];for i:-10 thru 10 do(kknnl:endcons(float(subst([x=i],[x,subst(sal,lhs(e)),subst(sQl,rhs(e))])),kknnl))/*(◆修正部分3)*/;
kknn:[kknnl,"[x,subst(sal,lhs(e)),subst(sQl,rhs(e))]のxに-10~10を代入して、確認"]/*(◆修正部分3)*/$
print(kknn)/*確認*/$

KAITOU:[e,ans,"解答"]/*解答*//**/$
SUJIMITI:"商と余りの式で表すと、(     )=(        )となり、・・・"/*(◆修正部分4)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行し、結果を考察せよ。


◆コマンド番号10211
●恒等式
●●●●●●●●●●●●●●●●
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:"・章末12 10211 (k+2)*x+(k+1)*y-3*k-4=0が、どのようなkについても成立するx,yは"/*(◆修正部分1)*/$
KOUSATU:"kについて整理し、kの恒等式と考えて、・・・"/**/;

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,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),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による割り算実行、結果はリスト*/$
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の文字式へ*/$
hhksl(e,x):=block([a,b,c,p,q,el],a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:subst(x=p,e),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$
Absa(e,lal,a):=block([r],r:subst(a^2,lal^2,e),r:subst(abs(a),lal,e))/*絶対値記号復元*/$

TEJUN:""$
(e:(k+2)*x+(k+1)*y-3*k-4=0,e0:rat(e,k),e1:coeff(e0,k,1),e2:coeff(e0,k,0),print([e1,e2]))/*(◆修正部分2)*/;
sxyl:solve([e1,e2],[x,y])/**/;ans:[sxyl[1],"x,y"];

KAKUNIN:"確認"/**/$
kknnl:[];for i:-10 thru 10 do(kknnl:endcons(subst([k=i],[k,subst(sxyl[1],lhs(e)),subst(sxyl[1],rhs(e))]),kknnl))/**/;
kknn:[kknnl,"[k,subst(sxyl[1],lhs(e)),subst(sxyl[1],rhs(e))]のkに-10~10を代入して、確認"]/**/$
print(kknn)/*確認*/$

KAITOU:[e,ans,"解答"]/*解答*//**/$
SUJIMITI:"kについて整理すると、(          )となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・章末12 10211 (k-1)*x+(k-2)*y-4*k+5=0が、どのようなkについても成立するx,yは"/*(◆修正部分1)*/$
(e:(k-1)*x+(k-2)*y-4*k+5=0,e0:rat(e,k),e1:coeff(e0,k,1),e2:coeff(e0,k,0),print([e1,e2]))/*(◆修正部分2)*/;


◆コマンド番号10212
●比例式
●●●●●●●●●●●●●●●●
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:"・章末13 10212 x/a=y/b=z/c=2のとき、(x+y+z)/(a+b+c)の値は"/*(◆修正部分1)*/$
KOUSATU:"条件式(比例式)は比の値をkとおいてx=,y=,z=と変形し、与式のx,y,zを消去すると、・・・"/**/;

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,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),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による割り算実行、結果はリスト*/$
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の文字式へ*/$
hhksl(e,x):=block([a,b,c,p,q,el],a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:subst(x=p,e),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$
Absa(e,lal,a):=block([r],r:subst(a^2,lal^2,e),r:subst(abs(a),lal,e))/*絶対値記号復元*/$

TEJUN:""$
(jk1:x/a=2,jk2:y/b=2,jk3:z/c=2,e1:(x+y+z)/(a+b+c))/*(◆修正部分2)*/$
jk1:jk1*a;jk2:jk2*b;jk3:jk3*c;ans:rat(subst([jk1,jk2,jk3],e1))/**/;

KAKUNIN:"確認"/**/$
kknnl:[];for i:1 thru 10 do(for j:1 thru 10 do(for k:1 thru 10 do(kknnl:endcons(subst([a=i,b=j,c=k,subst([a=i,b=j,c=k],jk1),subst([a=i,b=j,c=k],jk2),subst([a=i,b=j,c=k],jk3)],[x,a,y,b,z,c,e1]),kknnl) )))/**/;
kknn:[kknnl,"[jk1,a,jk2,b,jk3,c,e1]のa,b,cに1~10を代入して、e1の値を確認"]/**/$
print(kknn)/*確認*/$

KAITOU:[e1,ans,"解答"]/*解答*//**/$
SUJIMITI:"条件式(比例式)は比の値をkとし、x=(  )、y=(  )、z=(  )として、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・章末13 10212 x/a=y/b=z/c=2のとき、(x^2+y^2+z^2)/(a^2+b^2+c^2)の値は"/*(◆修正部分1)*/$
(jk1:x/a=2,jk2:y/b=2,jk3:z/c=2,e1:(x^2+y^2+z^2)/(a^2+b^2+c^2))/*(◆修正部分2)*/$


◆コマンド番号10213
●条件付き不等式
●●●●●●●●●●●●●●●●
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 10213 a>b>0,a+b=1のとき、1/2>2*a*bか"/*(◆修正部分1)*/$
KOUSATU:"相加平均、相乗平均でも示せるが、条件をb=として、・・・"/**/;

KANSUU:"";
ni(n):=n!/*nの階乗*/$
nCrl(n,r):=ni(n)/(ni(r)*ni(n-r))/*nCrを(n,r文字)で表現*/$
nCr(n,r):=block([N,i],N:1,for i:1 thru r do(N:N*(n-i+1)/(i)),N:N)/*nCrを(rは数値)で表現*/$
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],k:length(lA[iM])+1,
/**//**//**/for j:sN(list,k)[1] thru sN(list,k)[2] 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))))/*順列・組合せモデル作成、内部関数lng,sN、広域変数lA[[]]前提*/$
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="g" and list[i]>n ) or (sw="L"and n>=list[i]) or (sw="l"and n>list[i]) /**//**/then D:false),V:D)/*Xrの内部関数(スイッチ1324>>...sw="N",1234>>sw="G",1224>>sw="g",4321>>sw="L",4421>>sw="l",1221>>sw="A"に対処)*/$
sN(list,id):=block([V],if listp(list[1])=false then V:[1,list[id]]else V:[list[id][1],list[id][2]])/*Xrの内部関数(引数リスト[M,M]or[[m,M],[m,M]]に対処)*/$
load(fourier_elim)/*不等式ライブラリ読み込み*/$
load ("functs")/*最小公倍数ライブラリ読み込み*/$
gcm(n1,n2):=n1*n2/lcm(n1,n2)/*n1,n2の最大公倍数(ライブラリfuncts前提)*/$
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の文字式へ*/$
hhksl(e,x):=block([a,b,c,p,q,el],a:coeff(e,x,2),b:coeff(e,x,1),c:coeff(e,x,0),p:-b/(2*a),q:subst(x=p,e),el:[a*(x-p)^2+q,p,q])/*eをxについて平方完成*/$
Absa(e,lal,a):=block([r],r:subst(a^2,lal^2,e),r:subst(abs(a),lal,e))/*絶対値記号復元*/$

TEJUN:""$
(declare(a,real,b,real),jk1:a>b,jk2:b>0,jk3:a+b=1,e1:1/2,e2:2*a*b)/*(◆修正部分2)*/$
jk3:jk3-a;e21:expand(subst(jk3,e1-e2));e21l:hhksl(e21,a)/**/;
sal:[a=e21l[2]];sbl:solve(subst(sal,jk3),b);tF:true;if jk1 and jk2 and sal[1] and sbl[1] then tF:tF else tF:false;
if coeff(e21,a,2)>0 and e21l[3]=0 then(if tF=true then ans:["左辺≧右辺"] else ans:["左辺>右辺"])
elseif coeff(e21,a,2)>0 and e21l[3]>0 then ans:["左辺>右辺"]
elseif 0>coeff(e21,a,2) and e21l[3]=0 then(if tF=true then ans:["左辺≦右辺"] else ans:["左辺<右辺"])
elseif 0>coeff(e21,a,2) and 0>e21l[3] then ans:["左辺<右辺"] else ans:["左辺??右辺"];

KAKUNIN:"確認"/**/$
kknnl:[];for i:0.51 thru 0.99 step 0.01 do(kknnl:endcons(float(subst([a=i,subst([a=i],jk3)],[a,b,e1,e2,e1,e1-e2])),kknnl) )/**/;
kknn:[kknnl,"[a,jk3,e1,e2,e1-e2]のaに0.51~1.0を代入して、e1,e2の値を確認"]/**/$
print(kknn)/*確認*/$

KAITOU:[e1,e2,ans,"解答"]/*解答*//**/$
SUJIMITI:"条件をb=(  )として、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$

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

◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・章末14 10213 a>b>0,a+b=1のとき、a^2+b^2>1/2か"/*(◆修正部分1)*/$
(declare(a,real,b,real),jk1:a>b,jk2:b>0,jk3:a+b=1,e1:a^2+b^2,e2:1/2)/*(◆修正部分2)*/$