:
Maxima数学I自習教材開発
教材の概要
2次関数 2)2次関数の値の変化
3.2次関数の最大・最小
4.2次関数の決定
補充問題
Maxima数学I自習教材試行報告用紙(Word)
Maxima数学I自習教材試行報告用紙(PDF)
Maxima数学I自習教材試行報告用紙(html)
:
教材の概要
活動時間
自宅での予習か授業初めの5分程度
活動概要
1 タブレット等を用いてトライ
1) 教科書の該当ページを開く
2) このWebページを開く
3) Maxima on lineのWebページを開く
4) 該当コマンドをMaximaOnLineにコピペして、実行
2 自分なりの感触、着想
1) 自分なりに、実行結果を見て、気づいたり感じたりすることがないか、考えてみる。
2) ワークシートに、考えてみたこと(意見・質問・感じたこと)を書く
3) ワークシートを、事前に提出する場合は、課題提出フォームを使うこと。
3 問題の雰囲気を2で感じてから、授業へ
1) 班活動などで自分の考えを仲間に伝える
2) 仲間の考えを受け止める
3) 筋が通って、見通しのよい解法、数学的な論点をうまく処理した解法をまとめる
参照テキスト
数研出版新編数学I
:
第1章2次関数
第2節2次関数の値の変化
3.2次関数の最大・最小
A 2次関数の最大・最小
▼コマンド番号301
/*WORK:"301 2次関数の最大・最小●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●練習15 301 関数 y=2*(x -3)^2 +4 の最大・最小は" /*(◆変更部分)*/,
KOUSATU:"平方完成の式 y=2*(x -3)^2 +4、a=2,p=3,q=4で、最大・最小は?"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,Y,eA,pP,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*..*/color=red,line_width =3,explicit(Y,x,xm,xM) ,
/*..*/color=blue,line_width =3,implicit(eA,x,xm,xM,y,ym,yM),
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM),implicit(x=0,x,xm,xM,y,ym,yM) /* "x,y軸" */,
/*....*/color=red,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[1]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/point_size =2,points(pP)/* "太赤がグラフで、太青が軸・頂点" */,
/*....*/color=red,lab[2][1],lab[2][2],lab[2][3],lab[2][4],lab[2][5],lab[2][6],lab[2][7],
/*....*/lab[2][8],lab[2][9],lab[2][10] ) /* "文字書込" */),
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中文字 */,
ng2pl(p1l,p2l,m,n):=(p1l*n+p2l*m)/(m+n) /*2点と比から内外分点*/,
p2ngl(pl,p1l,p2l):=block([P,p1,p2,ans],
/**/p1:pl-p1l,p2:pl-p2l,P:rat(sqrt(p1.p1)/sqrt(p2.p2)),p1:num(P),p2:denom(P),
/**/print(ng2pl(p1l,p2l,p1,p2)),mes:"内分",
/**/if ng2pl(p1l,p2l,p1,p2)#pl then ((if p1>p2 then p2:-p2 else p1:-p1),mes:"外分"),
/**/ans:[p1,":",p2,mes] /*点を2点の内外分比で表示*/),
xtpl(p1l):=block([ansl],ansl:[p1l[1],-p1l[2]]) /*x軸対称*/,
ytpl(p1l):=block([ansl],ansl:[-p1l[1],p1l[2]]) /*y軸対称*/,
otpl(p1l):=block([ansl],ansl:[-p1l[1],-p1l[2]]) /*原点対称*/,
a12(p1l,p2l):=block([ans],if p2l[1]#p1l[1] then ans:(p2l[2]-p1l[2])/(p2l[1]-p1l[1])
/**/else ans:9999 /*傾き*/),
gl(p1l,p2l):=block([ansl],ansl:[p2l[1]-p1l[1],p2l[2]-p1l[2]]) /*傾き方向*/,
nl(p1l,p2l):=block([ansl],ansl:[p2l[2]-p1l[2],-(p2l[1]-p1l[1])],
/**/ansl:ansl/gcd(ansl[1],ansl[2]) /*垂直方向*/),
dis(p1l,p2l):=block([ans],ans:float(sqrt((p2l-p1l).(p2l-p1l)))) /*距離*/,
pppl(p1l,p2l,p3l):=block([ansl],ansl:((p1l-p2l).(p3l-p2l)/dis(p3l,p2l))*(p3l-p2l)/dis(p3l,p2l)),
sind(t):=sin(t/180*%pi),
cosd(t):=cos(t/180*%pi),
tand(t):=tan(t/180*%pi),
asind(sind):=asin(sind)/%pi*180,
acosd(cosd):=acos(cosd)/%pi*180,
atand(tand):=atan(tand)/%pi*180,
a(p1l,p2l,p3l):=
/**/float(acosd((dis(p1l,p2l)^2+dis(p2l,p3l)^2-dis(p1l,p3l)^2)/(2*dis(p1l,p2l)*dis(p2l,p3l)))),
/**/End:"Kansuu")$
(TEISUU:"",
Pi:%pi,
deg:25/180*Pi/**/,
End:"Teisuu")$
(TEJUN1: "1 解析的",
ex10:["ex10, y=2*(x -3)^2 +4、a=2,p=3,q=4で、最大・最小は?",
/*=*/float([KKK,["Y=",Y:2*(x -3)^2 +4,"a=",a:2,"p=",p:3,"q=",q:4,"最大・最小?" ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, a=2で下に凸,軸eA:x=p=3,頂点P(p,q)=(3,4) << 凸、軸・頂点の公式 >>",
/**/float([KKK,["eA:",eA:x=p,"=",3,"P=",P:[p,q],"=",[3,4] ] ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, 最小値Ymin=q=4,最大値Ymaxなし << 凸の下・上(aの正・負)で判断 >>",
/**/float([KKK,["Ymin=",q,"=",4,"Ymaxなし" ]] )] /*(◆修正)*/,
print(ex12),
ans:["ans, 最小値y=4 (x=3),最大値なし",
/**/float([KKK,["Ymin=",q,"(x=",p,") Ymaxなし" ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI2:"グラフ準備",print(["y=2*(x -3)^2 +4、a=2,p=3,q=4で、最大・最小は?"]) /*~(◆修正)*/,
ex21:["ex21, Yのグラフの軸とx軸の交点Px(p,0)=(3,0) << 頂点のx座標 >>",
/**/float([KKK,["Px=",Px:[p,0],"=",[3,0] ] ]) ] /*(◆修正)*/,
print(ex21),
ex22:["ex22, Y:x軸交点なし(a>0,q>0)、y軸交点Y0(0,a*p^2+q)=(0,22)、描画範囲r=22 << x軸、y軸の交点,描画範囲 >>",
/**/float([KKK,["x軸交点なし、y軸交点Y0=",Y0:[0,a*p^2+q],"=",[0,22],"r=",r:22 ] ]) ] /*(◆修正)*/,
print(ex22),
O:[0,0],A:[p,q],B:[p,0],C:[0,22],D:[0,0],E:[0,0] /*(◆修正)*/,
dO:[-0.1,-0.1]*r, dA:[0.1,-0.1]*r, dB:[0.1,-0.1]*r, dC:[0.1,0.1]*r, dD:[0.1,0.1]*r, dE:[0.1,0.1]*r /*(◆修正)*/,
labO:lab("O",O+dO),labA:lab("P",A+dA), labB:lab("Px",B+dB), labC:lab("Y0",C+dC),labD:lab("D",D+dD) ,labD:lab("D",D+dD) ,
print(float([labO.labA,labB,labC,labD,labE ]) ) ,
/**/End:"GJunbi")$
(GKAKUNIN3:"グラフを書いて、視覚的に確認",
yM:r*1.2,xM:yM/4.8*6.8,
Y:Y,eA:eA,
T:"For Max,Min" /**/,
lab:[10,[labO,labA,labB,labC,labO,labO,labO,labO,labO,labO ] ] ,
pCR:[[O],[B,C]] ,
pP:[A] /*(◆修正)*/,
print(float([T,Y,eA,pP,pCR,lab,-xM*0.1,xM,-yM*0.1,yM] ) ) /*(◆修正)*/,
gr(T,Y,eA,pP,pCR,lab,-xM*0.1,xM,-yM*0.1,yM) /* "グラフ出力すると" */ /*(◆修正)*/,
/**/End:"GKakunin")$
(TEJUN4: "4 図形的",print(["平方完成の式 y=2*(x -3)^2 +4、a=2,p=3,q=4で、最大・最小は?"]) /*~(◆修正)*/,
ex41:["ex41, グラフより、頂点のところが最小で、y=q=4 (x=p=3)、最大はなし << 頂点で判断 >>",
/**/float([KKK,["最小y=",q,"=",A[2],"(x=",p,"=",A[1],")、最大はなし" ] ]) ] /*(◆修正)*/,
/**/print(ex41),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI:"●練習15 301 関数 y=-2*(x +1)^2 -3 の最大・最小は?" /*(◆変更部分)*/,
KOUSATU:"平方完成の式 y=-2*(x +1)^2 -3、a=-2,p=-1,q=-3で、最大・最小は?"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号302
/*WORK:"302 2次関数の最大・最小●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●例題4 302 関数 y=x^2 -4*x +3 の最大・最小は" /*(◆変更部分)*/,
KOUSATU:"平方完成を、a=1,b=-4,c=3で実行し、最大・最小は?"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,Y,eA,pP,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*..*/color=red,line_width =3,explicit(Y,x,xm,xM) ,
/*..*/color=blue,line_width =3,implicit(eA,x,xm,xM,y,ym,yM),
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM),implicit(x=0,x,xm,xM,y,ym,yM) /* "x,y軸" */,
/*....*/color=red,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[1]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/point_size =2,points(pP)/* "太赤がグラフで、太青が軸・頂点" */,
/*....*/color=red,lab[2][1],lab[2][2],lab[2][3],lab[2][4],lab[2][5],lab[2][6],lab[2][7],
/*....*/lab[2][8],lab[2][9],lab[2][10] ) /* "文字書込" */),
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中文字 */,
ng2pl(p1l,p2l,m,n):=(p1l*n+p2l*m)/(m+n) /*2点と比から内外分点*/,
p2ngl(pl,p1l,p2l):=block([P,p1,p2,ans],
/**/p1:pl-p1l,p2:pl-p2l,P:rat(sqrt(p1.p1)/sqrt(p2.p2)),p1:num(P),p2:denom(P),
/**/print(ng2pl(p1l,p2l,p1,p2)),mes:"内分",
/**/if ng2pl(p1l,p2l,p1,p2)#pl then ((if p1>p2 then p2:-p2 else p1:-p1),mes:"外分"),
/**/ans:[p1,":",p2,mes] /*点を2点の内外分比で表示*/),
xtpl(p1l):=block([ansl],ansl:[p1l[1],-p1l[2]]) /*x軸対称*/,
ytpl(p1l):=block([ansl],ansl:[-p1l[1],p1l[2]]) /*y軸対称*/,
otpl(p1l):=block([ansl],ansl:[-p1l[1],-p1l[2]]) /*原点対称*/,
a12(p1l,p2l):=block([ans],if p2l[1]#p1l[1] then ans:(p2l[2]-p1l[2])/(p2l[1]-p1l[1])
/**/else ans:9999 /*傾き*/),
gl(p1l,p2l):=block([ansl],ansl:[p2l[1]-p1l[1],p2l[2]-p1l[2]]) /*傾き方向*/,
nl(p1l,p2l):=block([ansl],ansl:[p2l[2]-p1l[2],-(p2l[1]-p1l[1])],
/**/ansl:ansl/gcd(ansl[1],ansl[2]) /*垂直方向*/),
dis(p1l,p2l):=block([ans],ans:float(sqrt((p2l-p1l).(p2l-p1l)))) /*距離*/,
pppl(p1l,p2l,p3l):=block([ansl],ansl:((p1l-p2l).(p3l-p2l)/dis(p3l,p2l))*(p3l-p2l)/dis(p3l,p2l)),
sind(t):=sin(t/180*%pi),
cosd(t):=cos(t/180*%pi),
tand(t):=tan(t/180*%pi),
asind(sind):=asin(sind)/%pi*180,
acosd(cosd):=acos(cosd)/%pi*180,
atand(tand):=atan(tand)/%pi*180,
a(p1l,p2l,p3l):=
/**/float(acosd((dis(p1l,p2l)^2+dis(p2l,p3l)^2-dis(p1l,p3l)^2)/(2*dis(p1l,p2l)*dis(p2l,p3l)))),
/**/End:"Kansuu")$
(TEISUU:"",
Pi:%pi,
deg:25/180*Pi/**/,
End:"Teisuu")$
(TEJUN1: "1 解析的",
ex10:["ex10, y=x^2 -4*x +3 (a=1,b=-4,c=3)を平方完成し、最大・最小は?",
/*=*/float([KKK,["Y=",Y:x^2 -4*x +3,"a=",a:1,"b=",b:-4,"c=",c:3,"最大・最小?" ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, Y=a*x^2+b*x+c=a*(x+b/(2*a) )^2-b^2/(4*a)+c=(x-2)^2-4+3=(x-2)^2-1 << 平方完成の公式 >>",
/**/float([KKK,["Y=",Yh:a*(x+b/(2*a) )^2-b^2/(4*a)+c,"=",(x-2)^2-1 ] ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, a=1,p=2,q=-1、a=1で下に凸,軸eA:x=p=2,頂点P(p,q)=(2,-1) << 凸、軸・頂点の公式 >>",
/**/float([KKK,["a=",a,"p=",p:-b/(2*a),"q=",q:(-b^2+4*a*c)/(4*a),"eA:",eA:x=p,"P=",P:[p,q] ] ]) ] /*(◆修正)*/,
print(ex12),
ex13:["ex13, 最小値Ymin=q=-1,最大値Ymaxなし << 凸の下・上(aの正・負)で判断 >>",
/**/float([KKK,["Ymin=",q,"Ymaxなし" ]] )] /*(◆修正)*/,
print(ex13),
ans:["ans, 最小値y=-1 (x=2),最大値なし",
/**/float([KKK,["Ymin=",q,"(x=",p,") Ymaxなし" ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI2:"グラフ準備",print(["y=x^2 -4*x +3 (a=1,b=-4,c=3,p=2,q=-1)を平方完成し、最大・最小は?"]) /*~(◆修正)*/,
ex21:["ex21, Yのグラフの軸とx軸の交点Px(p,0)=(2,0) << 頂点のx座標 >>",
/**/float([KKK,["Px=",Px:[p,0] ] ]) ] /*(◆修正)*/,
print(ex21),
ex22:["ex22, Y:x軸交点X1(p-sqrt(-q/a),0)=(1,0),X2(p+sqrt(-q/a),0)=(3,0)、y軸交点Y0(0,c)=(0,3)、描画範囲r=3 << x軸、y軸の交点,描画範囲 >>",
/**/float([KKK,["x軸X1=",X1:[x1:p-sqrt(-q/a),0],"X2=",X2:[x2:p+sqrt(-q/a),0],"y軸交点Y0=",Y0:[0,c],"r=",r:3 ] ]) ] /*(◆修正)*/,
print(ex22),
O:[0,0],A:[p,q],B:[p,0],C:[0,c],D:[x1,0],E:[x2,0] /**/,
dO:[-0.1,-0.1]*r, dA:[0.1,-0.1]*r, dB:[0.1,-0.1]*r, dC:[0.1,0.1]*r, dD:[0.1,0.1]*r, dE:[0.1,0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("P",A+dA), labB:lab("Px",B+dB), labC:lab("Y0",C+dC),labD:lab("X1",D+dD) ,labE:lab("X2",E+dE) ,
print(float([labO.labA,labB,labC,labD,labE ]) ) ,
/**/End:"GJunbi")$
(GKAKUNIN3:"グラフを書いて、視覚的に確認",
yM:r*1.2,xM:yM/4.8*6.8,
Y:Y,eA:eA,
T:"For Max,Min" /**/,
lab:[10,[labO,labA,labB,labC,labD,labE,labO,labO,labO,labO ] ] ,
pCR:[[O],[B,C,D,E]] ,
pP:[A] /**/,
print(float([T,Y,eA,pP,pCR,lab,-xM,xM,-yM,yM] ) ) /**/,
gr(T,Y,eA,pP,pCR,lab,-xM,xM,-yM,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN4: "4 図形的",print(["y=x^2 -4*x +3 (a=1,b=-4,c=3,p=2,q=-1)を平方完成し、最大・最小は?"]) /*~(◆修正)*/,
ex41:["ex41, グラフより、頂点のところが最小で、y=q=-1 (x=p=2)、最大はなし << 頂点で判断 >>",
/**/float([KKK,["最小y=",q,"(x=",p,")、最大はなし" ] ]) ] /*(◆修正)*/,
/**/print(ex41),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI:"●例題4 302 関数 y=-2*x^2 -4*x の最大・最小は?" /*(◆変更部分)*/,
KOUSATU:"平方完成を、a=-2,b=-4,c=0で実行し、最大・最小は?"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号303
/*WORK:"303 2次関数の最大・最小●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●練習16 303 関数 y=x^2 -6*x +5 の最大・最小は" /*(◆変更部分)*/,
KOUSATU:"平方完成を、a=1,b=-6,c=5で実行し、最大・最小は?"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,Y,eA,pP,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*..*/color=red,line_width =3,explicit(Y,x,xm,xM) ,
/*..*/color=blue,line_width =3,implicit(eA,x,xm,xM,y,ym,yM),
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM),implicit(x=0,x,xm,xM,y,ym,yM) /* "x,y軸" */,
/*....*/color=red,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[1]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/point_size =2,points(pP)/* "太赤がグラフで、太青が軸・頂点" */,
/*....*/color=black,lab[2][1],lab[2][2],lab[2][3],lab[2][4],lab[2][5],lab[2][6],lab[2][7],
/*....*/lab[2][8],lab[2][9],lab[2][10] ) /* "文字書込" */),
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中文字 */,
ng2pl(p1l,p2l,m,n):=(p1l*n+p2l*m)/(m+n) /*2点と比から内外分点*/,
p2ngl(pl,p1l,p2l):=block([P,p1,p2,ans],
/**/p1:pl-p1l,p2:pl-p2l,P:rat(sqrt(p1.p1)/sqrt(p2.p2)),p1:num(P),p2:denom(P),
/**/print(ng2pl(p1l,p2l,p1,p2)),mes:"内分",
/**/if ng2pl(p1l,p2l,p1,p2)#pl then ((if p1>p2 then p2:-p2 else p1:-p1),mes:"外分"),
/**/ans:[p1,":",p2,mes] /*点を2点の内外分比で表示*/),
xtpl(p1l):=block([ansl],ansl:[p1l[1],-p1l[2]]) /*x軸対称*/,
ytpl(p1l):=block([ansl],ansl:[-p1l[1],p1l[2]]) /*y軸対称*/,
otpl(p1l):=block([ansl],ansl:[-p1l[1],-p1l[2]]) /*原点対称*/,
a12(p1l,p2l):=block([ans],if p2l[1]#p1l[1] then ans:(p2l[2]-p1l[2])/(p2l[1]-p1l[1])
/**/else ans:9999 /*傾き*/),
gl(p1l,p2l):=block([ansl],ansl:[p2l[1]-p1l[1],p2l[2]-p1l[2]]) /*傾き方向*/,
nl(p1l,p2l):=block([ansl],ansl:[p2l[2]-p1l[2],-(p2l[1]-p1l[1])],
/**/ansl:ansl/gcd(ansl[1],ansl[2]) /*垂直方向*/),
dis(p1l,p2l):=block([ans],ans:float(sqrt((p2l-p1l).(p2l-p1l)))) /*距離*/,
pppl(p1l,p2l,p3l):=block([ansl],ansl:((p1l-p2l).(p3l-p2l)/dis(p3l,p2l))*(p3l-p2l)/dis(p3l,p2l)),
sind(t):=sin(t/180*%pi),
cosd(t):=cos(t/180*%pi),
tand(t):=tan(t/180*%pi),
asind(sind):=asin(sind)/%pi*180,
acosd(cosd):=acos(cosd)/%pi*180,
atand(tand):=atan(tand)/%pi*180,
a(p1l,p2l,p3l):=
/**/float(acosd((dis(p1l,p2l)^2+dis(p2l,p3l)^2-dis(p1l,p3l)^2)/(2*dis(p1l,p2l)*dis(p2l,p3l)))),
/**/End:"Kansuu")$
(TEISUU:"",
Pi:%pi,
deg:25/180*Pi/**/,
End:"Teisuu")$
(TEJUN1: "1 解析的",
ex10:["ex10, y=x^2 -6*x +5 (a=1,b=-6,c=5)を平方完成し、最大・最小は?",
/*=*/float([KKK,["Y=",Y:x^2 -6*x +5,"a=",a:1,"b=",b:-6,"c=",c:5,"最大・最小?" ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, Y=a*x^2+b*x+c=a*(x+b/(2*a) )^2-b^2/(4*a)+c=(x-3)^2-9+5=(x-3)^2-4",
/**/float([KKK,["Y=",Yh:a*(x+b/(2*a) )^2-b^2/(4*a)+c,(x-3)^2-4 ]," << 平方完成の公式 >>" ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, a=1,p=3,q=-4、a=1で下に凸,軸eA:x=p=3,頂点P(p,q)=(3,-4) << 凸、軸・頂点の公式 >>",
/**/float([KKK,["a=",a,1,"p=",p:-b/(2*a),3,"q=",q:(-b^2+4*a*c)/(4*a),-4,"eA:",eA:x=p,x=3,"P=",P:[p,q],[3,-4] ] ]) ] /*(◆修正)*/,
print(ex12),
ex13:["ex13, 最小値Ymin=q=-4,最大値Ymaxなし << 凸の下・上(aの正・負)で判断 >>",
/**/float([KKK,["Ymin=",q,-4,"Ymaxなし" ]] )] /*(◆修正)*/,
print(ex13),
ans:["ans, 最小値y=-4 (x=3),最大値なし",
/**/float([KKK,["Ymin=",q,-4,"(x=",p,3,") Ymaxなし" ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI2:"グラフ準備",print(["y=x^2 -6*x +5 (a=1,b=-6,c=5,p=3,q=-4)を平方完成し、最大・最小は?"]) /*~(◆修正)*/,
ex21:["ex21, Yのグラフの軸とx軸の交点Px(p,0)=(3,0) << 頂点のx座標 >>",
/**/float([KKK,["Px=",Px:[p,0],[3,0] ] ]) ] /*(◆修正)*/,
print(ex21),
ex22:["ex22, Y:x軸交点X1(p-sqrt(-q/a),0)=(1,0),X2(p+sqrt(-q/a),0)=(5,0)、y軸交点Y0(0,c)=(0,5)、描画範囲r=5 << x軸、y軸の交点,描画範囲 >>",
/**/float([KKK,["x軸X1=",X1:[x1:p-sqrt(-q/a),0],[1,0],"X2=",X2:[x2:p+sqrt(-q/a),0],[5,0],"y軸交点Y0=",Y0:[0,c],[0,5],"r=",r:5 ] ]) ] /*(◆修正)*/,
print(ex22),
O:[0,0],A:[p,q],B:[p,0],C:[0,c],D:[x1,0],E:[x2,0] /**/,
dO:[-0.1,-0.1]*r, dA:[0.2,-0.1]*r, dB:[0.2,-0.1]*r, dC:[0.2,0.1]*r, dD:[0.2,0.1]*r, dE:[0.2,0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("P",A+dA), labB:lab("Px",B+dB), labC:lab("Y0",C+dC),labD:lab("X1",D+dD) ,labE:lab("X2",E+dE) ,
print(float([labO.labA,labB,labC,labD,labE ]) ) ,
/**/End:"GJunbi")$
(GKAKUNIN3:"グラフを書いて、視覚的に確認",
yM:r*1.2,xM:yM/4.8*6.8,
Y:Y,eA:eA,
T:"For Max,Min" /**/,
lab:[10,[labO,labA,labB,labC,labD,labE,labO,labO,labO,labO ] ] ,
pCR:[[O],[B,C,D,E]] ,
pP:[A] /**/,
print(float([T,Y,eA,pP,pCR,lab,-xM,xM,-yM,yM] ) ) /**/,
gr(T,Y,eA,pP,pCR,lab,-xM,xM,-yM,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN4: "4 図形的",print(["y=x^2 -6*x +5 (a=1,b=-6,c=5,p=3,q=-4)を平方完成し、最大・最小は?"]) /*~(◆修正)*/,
ex41:["ex41, グラフより、頂点のところが最小で、y=q=-4 (x=p=3)、最大はなし << 頂点で判断 >>",
/**/float([KKK,["最小y=",q,-4,"(x=",p,3,")、最大はなし" ] ]) ] /*(◆修正)*/,
/**/print(ex41),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI:"●練習16 303 関数 y=-2*x^2 +5*x の最大・最小は?" /*(◆変更部分)*/,
KOUSATU:"平方完成を、a=-2,b=5,c=0で実行し、最大・最小は?"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
B 2次関数の定義域と最大・最小
▼コマンド番号304
/*WORK:"304 2次関数の定義域・値域・最大・最小●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"例8 304 関数 y=x^2 (-1<=x and x<=2) の最大・最小は" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(-1<=x and x<=2)から、最大・最小は?"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM):=block(
/**/Draw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*..*/color=YL[1][4],line_width =YL[1][5],explicit(YL[1][1],x,YL[1][2],YL[1][3]) ,
/*..*/color=YL[2][4],line_width =YL[2][5],explicit(YL[2][1],x,YL[2][2],YL[2][3]) ,
/*..*/color=YL[3][4],line_width =YL[3][5],explicit(YL[3][1],x,YL[3][2],YL[3][3]) ,
/*..*/color=blue,line_width =3,implicit(eA,x,xm,xM,y,ym,yM),
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM),implicit(x=0,x,xm,xM,y,ym,yM) /* "x,y軸" */,
/*....*/color=red,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[1]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/point_size =2,points(pP)/* "太赤がグラフで、太青が軸・頂点" */,
/*....*/color=black,lab[2][1],lab[2][2],lab[2][3],lab[2][4],lab[2][5],lab[2][6],lab[2][7],
/*....*/lab[2][8],lab[2][9],lab[2][10] ) /* "文字書込" */),
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中文字 */,
ng2pl(p1l,p2l,m,n):=(p1l*n+p2l*m)/(m+n) /*2点と比から内外分点*/,
p2ngl(pl,p1l,p2l):=block([P,p1,p2,ans],
/**/p1:pl-p1l,p2:pl-p2l,P:rat(sqrt(p1.p1)/sqrt(p2.p2)),p1:num(P),p2:denom(P),
/**/print(ng2pl(p1l,p2l,p1,p2)),mes:"内分",
/**/if ng2pl(p1l,p2l,p1,p2)#pl then ((if p1>p2 then p2:-p2 else p1:-p1),mes:"外分"),
/**/ans:[p1,":",p2,mes] /*点を2点の内外分比で表示*/),
xtpl(p1l):=block([ansl],ansl:[p1l[1],-p1l[2]]) /*x軸対称*/,
ytpl(p1l):=block([ansl],ansl:[-p1l[1],p1l[2]]) /*y軸対称*/,
otpl(p1l):=block([ansl],ansl:[-p1l[1],-p1l[2]]) /*原点対称*/,
a12(p1l,p2l):=block([ans],if p2l[1]#p1l[1] then ans:(p2l[2]-p1l[2])/(p2l[1]-p1l[1])
/**/else ans:9999 /*傾き*/),
gl(p1l,p2l):=block([ansl],ansl:[p2l[1]-p1l[1],p2l[2]-p1l[2]]) /*傾き方向*/,
nl(p1l,p2l):=block([ansl],ansl:[p2l[2]-p1l[2],-(p2l[1]-p1l[1])],
/**/ansl:ansl/gcd(ansl[1],ansl[2]) /*垂直方向*/),
dis(p1l,p2l):=block([ans],ans:float(sqrt((p2l-p1l).(p2l-p1l)))) /*距離*/,
pppl(p1l,p2l,p3l):=block([ansl],ansl:((p1l-p2l).(p3l-p2l)/dis(p3l,p2l))*(p3l-p2l)/dis(p3l,p2l)),
sind(t):=sin(t/180*%pi),
cosd(t):=cos(t/180*%pi),
tand(t):=tan(t/180*%pi),
asind(sind):=asin(sind)/%pi*180,
acosd(cosd):=acos(cosd)/%pi*180,
atand(tand):=atan(tand)/%pi*180,
a(p1l,p2l,p3l):=
/**/float(acosd((dis(p1l,p2l)^2+dis(p2l,p3l)^2-dis(p1l,p3l)^2)/(2*dis(p1l,p2l)*dis(p2l,p3l)))),
/**/End:"Kansuu")$
(TEISUU:"",
Pi:%pi,
deg:25/180*Pi/**/,
End:"Teisuu")$
(TEJUN1: "1 解析的",
ex10:["ex10, y=x^2 の平方完成(a=1,b=0,c=0)と範囲(-1<=x and x<=2)から、最大・最小は?",
/*=*/float([KKK,["Y=",Y:x^2 ,"a=",a:1,"b=",b:0,"c=",c:0,"xLe=",xLe:-1,"xRe=",xRe:2,"最大・最小?" ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, Y=a*x^2+b*x+c=a*(x+b/(2*a) )^2-b^2/(4*a)+c=x^2",
/**/float([KKK,["Y=",Yh:a*(x+b/(2*a) )^2-b^2/(4*a)+c,x^2 ]," << 平方完成の公式 >>" ]) ] /**/,
print(ex11),
ex12:["ex12, a=1,p=0,q=0、a=1で下に凸,軸eA:x=p=0,頂点P(p,q)=(0,0) << 凸、軸・頂点の公式 >>",
/**/float([KKK,["a=",a,1,"p=",p:-b/(2*a),0,"q=",q:(-b^2+4*a*c)/(4*a),0,"eA:",eA:x=p,x=0,"P=",P:[p,q],[0,0] ] ]) ] /**/,
print(ex12),
ex13:["ex13, 最小値Ymin=q=0 (x=0),最大値Ymax=xRe^2=4 (x=2) << 凸の下・上(aの正・負)、範囲端の軸からの遠さで判断 >>",
/**/float([KKK,["Ymin=",q,0,"(x=",p,0,") Ymax=",xRe^2,4,"(x=",xRe,2,")" ]] )] /*(◆修正)*/,
print(ex13),
ans:["ans, 最小値y=0 (x=0),最大値y=4 (x=2)",
/**/float([KKK,["Ymin=",q,0,"(x=",p,0,") Ymax=",xRe^2,4,"(x=",xRe,2,")" ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI2:"グラフ準備",print(["y=x^2 (a=1,b=0,c=0,p=0,q=0)を平方完成し、最大・最小は?"]) /*~(◆修正)*/,
ex21:["ex21, Yのグラフの軸とx軸の交点Px(p,0)=(0,0) << 頂点のx座標 >>",
/**/float([KKK,["Px=",Px:[p,0],[0,0] ] ]) ] /*(◆修正)*/,
print(ex21),
ex22:["ex22, Y:x軸交点X1(p-sqrt(-q/a),0)=(0,0),X2(p+sqrt(-q/a),0)=(0,0)、y軸交点Y0(0,c)=(0,0)、描画範囲r=4 << x軸、y軸の交点,描画範囲 >>",
/**/float([KKK,["x軸X1=",X1:[x1:p-sqrt(-q/a),0],[0,0],"X2=",X2:[x2:p+sqrt(-q/a),0],[0,0],"y軸交点Y0=",Y0:[0,c],[0,0],"r=",r:4 ] ]) ] /*(◆修正)*/,
print(ex22),
ex23:["ex23, Y:左端点XS(xLe,subst(x=xLe,Y) )=(-1,1),右端点XL(xRe,subst(x=xRe,Y) )=(2,4) << グラフの左端点、右端点 >>",
/**/float([KKK,["XS=",XS:[xLe,subst(x=xLe,Y)],[-1,1],"XL=",XL:[xRe,subst(x=xRe,Y)],[2,4] ] ]) ] /*(◆修正)*/,
print(ex23),
O:[0,0],A:[p,q],B:[p,0],C:[0,c],D:[x1,0],E:[x2,0],F:[xLe,subst(x=xLe,Y)],G:[xRe,subst(x=xRe,Y)] /**/,
dO:[-0.1,-0.1]*r,dA:[0.2,-0.1]*r,dB:[0.2,-0.1]*r,dC:[0.2,0.1]*r,dD:[0.2,0.1]*r,dE:[0.2,0.1]*r,dF:[0.2,0.1]*r,dG:[0.2,0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("P",A+dA),labB:lab("Px",B+dB),labC:lab("Y0",C+dC),labD:lab("X1",D+dD),labE:lab("X2",E+dE),labF:lab("XS",F+dF),labG:lab("XL",G+dG),
print(float([labO.labA,labB,labC,labD,labE,labF,labG ]) ) ,
/**/End:"GJunbi")$
(GKAKUNIN3:"グラフを書いて、視覚的に確認",
yM:r*1.2,xM:yM/4.8*6.8,ym:-yM,xm:-xM,
YL:[[Y,xm,xLe,black,1],[Y,xLe,xRe,red,3],[Y,xRe,xM,black,1]],eA:eA,
T:"For Max,Min,HaniAri" /**/,
lab:[10,[labO,labA,labB,labC,labD,labE,labF,labG,labO,labO ] ] ,
pCR:[[O],[B,C,D,E]] ,
pP:[A,F,G] /**/,
print(float([T,YL,eA,pP,pCR,lab,xm,xM,ym,yM] ) ) /**/,
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN4: "4 図形的",print(["y=x^2 (a=1,b=0,c=0,p=0,q=0)を平方完成し、最大・最小は?"]) /**/,
ex41:["ex41, グラフより、頂点のところが最小で、y=q=0 (x=p=0)、最大はy=xRe^2=4 (x=xRe=2) << 最小は頂点で判断,最大は端点で軸から遠い方 >>",
/**/float([KKK,["最小y=",q,0,"(x=",p,0,")、最大はy=",xRe^2,4,"(x=",xRe,2,")" ] ]) ] /*(◆修正)*/,
/**/print(ex41),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI:"●例8 304 関数 y= x^2 (-3<=x and x<=-1) の最大・最小は?" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(-3<=x and x<=-1)から、最大・最小は?"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号305
/*WORK:"305 2次関数の定義域・値域・最大・最小●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"例9 305 関数 y=-x^2 (1<=x and x<=2) の最大・最小は" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(1<=x and x<=2)から、最大・最小は?"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM):=block(
/**/Draw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*..*/color=YL[1][4],line_width =YL[1][5],explicit(YL[1][1],x,YL[1][2],YL[1][3]) ,
/*..*/color=YL[2][4],line_width =YL[2][5],explicit(YL[2][1],x,YL[2][2],YL[2][3]) ,
/*..*/color=YL[3][4],line_width =YL[3][5],explicit(YL[3][1],x,YL[3][2],YL[3][3]) ,
/*..*/color=blue,line_width =3,implicit(eA,x,xm,xM,y,ym,yM),
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM),implicit(x=0,x,xm,xM,y,ym,yM) /* "x,y軸" */,
/*....*/color=red,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[1]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/point_size =2,points(pP)/* "太赤がグラフで、太青が軸・頂点" */,
/*....*/color=black,lab[2][1],lab[2][2],lab[2][3],lab[2][4],lab[2][5],lab[2][6],lab[2][7],
/*....*/lab[2][8],lab[2][9],lab[2][10] ) /* "文字書込" */),
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中文字 */,
ng2pl(p1l,p2l,m,n):=(p1l*n+p2l*m)/(m+n) /*2点と比から内外分点*/,
p2ngl(pl,p1l,p2l):=block([P,p1,p2,ans],
/**/p1:pl-p1l,p2:pl-p2l,P:rat(sqrt(p1.p1)/sqrt(p2.p2)),p1:num(P),p2:denom(P),
/**/print(ng2pl(p1l,p2l,p1,p2)),mes:"内分",
/**/if ng2pl(p1l,p2l,p1,p2)#pl then ((if p1>p2 then p2:-p2 else p1:-p1),mes:"外分"),
/**/ans:[p1,":",p2,mes] /*点を2点の内外分比で表示*/),
xtpl(p1l):=block([ansl],ansl:[p1l[1],-p1l[2]]) /*x軸対称*/,
ytpl(p1l):=block([ansl],ansl:[-p1l[1],p1l[2]]) /*y軸対称*/,
otpl(p1l):=block([ansl],ansl:[-p1l[1],-p1l[2]]) /*原点対称*/,
a12(p1l,p2l):=block([ans],if p2l[1]#p1l[1] then ans:(p2l[2]-p1l[2])/(p2l[1]-p1l[1])
/**/else ans:9999 /*傾き*/),
gl(p1l,p2l):=block([ansl],ansl:[p2l[1]-p1l[1],p2l[2]-p1l[2]]) /*傾き方向*/,
nl(p1l,p2l):=block([ansl],ansl:[p2l[2]-p1l[2],-(p2l[1]-p1l[1])],
/**/ansl:ansl/gcd(ansl[1],ansl[2]) /*垂直方向*/),
dis(p1l,p2l):=block([ans],ans:float(sqrt((p2l-p1l).(p2l-p1l)))) /*距離*/,
pppl(p1l,p2l,p3l):=block([ansl],ansl:((p1l-p2l).(p3l-p2l)/dis(p3l,p2l))*(p3l-p2l)/dis(p3l,p2l)),
sind(t):=sin(t/180*%pi),
cosd(t):=cos(t/180*%pi),
tand(t):=tan(t/180*%pi),
asind(sind):=asin(sind)/%pi*180,
acosd(cosd):=acos(cosd)/%pi*180,
atand(tand):=atan(tand)/%pi*180,
a(p1l,p2l,p3l):=
/**/float(acosd((dis(p1l,p2l)^2+dis(p2l,p3l)^2-dis(p1l,p3l)^2)/(2*dis(p1l,p2l)*dis(p2l,p3l)))),
/**/End:"Kansuu")$
(TEISUU:"",
Pi:%pi,
deg:25/180*Pi/**/,
End:"Teisuu")$
(TEJUN1: "1 解析的",
ex10:["ex10, y=-x^2 の平方完成(a=1,b=0,c=0)と範囲(1<=x and x<=2)から、最大・最小は?",
/*=*/float([KKK,["Y=",Y:-x^2 ,"a=",a:-1,"b=",b:0,"c=",c:0,"xLe=",xLe:1,"xRe=",xRe:2,"最大・最小?" ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, Y=a*x^2+b*x+c=a*(x+b/(2*a) )^2-b^2/(4*a)+c=-x^2",
/**/float([KKK,["Y=",Yh:a*(x+b/(2*a) )^2-b^2/(4*a)+c,-x^2 ]," << 平方完成の公式 >>" ]) ] /**/,
print(ex11),
ex12:["ex12, a=-1,p=0,q=0、a=-1で上に凸,軸eA:x=p=0,頂点P(p,q)=(0,0) << 凸、軸・頂点の公式 >>",
/**/float([KKK,["a=",a,-1,"p=",p:-b/(2*a),0,"q=",q:(-b^2+4*a*c)/(4*a),0,"eA:",eA:x=p,x=0,"P=",P:[p,q],[0,0] ] ]) ] /**/,
print(ex12),
ex13:["ex13, 最小値Ymin=-xRe^2=-4 (x=2),最大値Ymax=-xLe^2=-1 (x=1) << 頂点(凸の下・上(aの正・負))、端点(端点の軸からの遠さ)で判断 >>",
/**/float([KKK,["Ymin=",-xRe^2,-4,"(x=",xRe,2,") Ymax=",-xLe^2,-1,"(x=",xLe,1,")" ]] )] /*(◆修正)*/,
print(ex13),
ans:["ans, 最小値y=-4 (x=2),最大値y=-1 (x=1)",
/**/float([KKK,["Ymin=",-xRe^2,-4,"(x=",xRe,2,") Ymax=",-xLe^2,-1,"(x=",xLe,1,")" ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI2:"グラフ準備",print(["y=-x^2 (a=1,b=0,c=0,p=0,q=0)を平方完成し、最大・最小は?"]) /*~(◆修正)*/,
ex21:["ex21, Yのグラフの軸とx軸の交点Px(p,0)=(0,0) << 頂点のx座標 >>",
/**/float([KKK,["Px=",Px:[p,0],[0,0] ] ]) ] /*(◆修正)*/,
print(ex21),
ex22:["ex22, Y:x軸交点X1(p-sqrt(-q/a),0)=(0,0),X2(p+sqrt(-q/a),0)=(0,0)、y軸交点Y0(0,c)=(0,0)、描画範囲r=4 << x軸、y軸の交点,描画範囲 >>",
/**/float([KKK,["x軸X1=",X1:[x1:p-sqrt(-q/a),0],[0,0],"X2=",X2:[x2:p+sqrt(-q/a),0],[0,0],"y軸交点Y0=",Y0:[0,c],[0,0],"r=",r:4 ] ]) ] /*(◆修正)*/,
print(ex22),
ex23:["ex23, Y:左端点XL(xLe,subst(x=xLe,Y) )=(1,-1),右端点XR(xRe,subst(x=xRe,Y) )=(2,-4) << グラフの左端点、右端点 >>",
/**/float([KKK,["XL=",XL:[xLe,subst(x=xLe,Y)],[1,-1],"XR=",XR:[xRe,subst(x=xRe,Y)],[2,-4] ] ]) ] /*(◆修正)*/,
print(ex23),
O:[0,0],A:[p,q],B:[p,0],C:[0,c],D:[x1,0],E:[x2,0],F:[xLe,subst(x=xLe,Y)],G:[xRe,subst(x=xRe,Y)] /**/,
dO:[-0.1,-0.1]*r,dA:[0.2,-0.1]*r,dB:[0.2,-0.1]*r,dC:[0.2,0.1]*r,dD:[0.2,0.1]*r,dE:[0.2,0.1]*r,dF:[0.2,0.1]*r,dG:[0.2,0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("P",A+dA),labB:lab("Px",B+dB),labC:lab("Y0",C+dC),labD:lab("X1",D+dD),labE:lab("X2",E+dE),labF:lab("XL",F+dF),labG:lab("XR",G+dG),
print(float([labO.labA,labB,labC,labD,labE,labF,labG ]) ) ,
/**/End:"GJunbi")$
(GKAKUNIN3:"グラフを書いて、視覚的に確認",
yM:r*1.2,xM:yM/4.8*6.8,ym:-yM,xm:-xM,
YL:[[Y,xm,xLe,black,1],[Y,xLe,xRe,red,3],[Y,xRe,xM,black,1]],eA:eA,
T:"For Max,Min,HaniAri" /**/,
lab:[10,[labO,labA,labB,labC,labD,labE,labF,labG,labO,labO ] ] ,
pCR:[[O],[B,C,D,E]] ,
pP:[A,F,G] /**/,
print(float([T,YL,eA,pP,pCR,lab,xm,xM,ym,yM] ) ) /**/,
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN4: "4 図形的",print(["y=-x^2 (a=1,b=0,c=0,p=0,q=0)を平方完成し、最大・最小は?"]) /**/,
ex41:["ex41, グラフより、右端点が最小で、y=-xRe^2=-4 (x=xRe=2)、左端点が最大で、y=-xLe^2=-1 (x=xLe=1) << 最大・最小は頂点、端点のグラフでの上下で判断 >>",
/**/float([KKK,["最小y=",-xRe^2,-4,"(x=",xRe,2,")、最大はy=",-xLe^2,-1,"(x=",xLe,1,")" ] ]) ] /*(◆修正)*/,
/**/print(ex41),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI:"●例9 305 関数 y= -x^2 (-3<=x and x<=1) の最大・最小は?" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(-3<=x and x<=1)から、最大・最小は?"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号306
/*WORK:"306 2次関数の定義域・値域・最大・最小●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"練習17 306 関数 y=2*x^2 (-2<=x and x<=-1) の最大・最小は" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(-2<=x and x<=-1)から、最大・最小は?"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM):=block(
/**/Draw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*..*/color=YL[1][4],line_width =YL[1][5],explicit(YL[1][1],x,YL[1][2],YL[1][3]) ,
/*..*/color=YL[2][4],line_width =YL[2][5],explicit(YL[2][1],x,YL[2][2],YL[2][3]) ,
/*..*/color=YL[3][4],line_width =YL[3][5],explicit(YL[3][1],x,YL[3][2],YL[3][3]) ,
/*..*/color=blue,line_width =3,implicit(eA,x,xm,xM,y,ym,yM),
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM),implicit(x=0,x,xm,xM,y,ym,yM) /* "x,y軸" */,
/*....*/color=red,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[1]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/point_size =2,points(pP)/* "太赤がグラフで、太青が軸・頂点" */,
/*....*/color=black,lab[2][1],lab[2][2],lab[2][3],lab[2][4],lab[2][5],lab[2][6],lab[2][7],
/*....*/lab[2][8],lab[2][9],lab[2][10] ) /* "文字書込" */),
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中文字 */,
ng2pl(p1l,p2l,m,n):=(p1l*n+p2l*m)/(m+n) /*2点と比から内外分点*/,
p2ngl(pl,p1l,p2l):=block([P,p1,p2,ans],
/**/p1:pl-p1l,p2:pl-p2l,P:rat(sqrt(p1.p1)/sqrt(p2.p2)),p1:num(P),p2:denom(P),
/**/print(ng2pl(p1l,p2l,p1,p2)),mes:"内分",
/**/if ng2pl(p1l,p2l,p1,p2)#pl then ((if p1>p2 then p2:-p2 else p1:-p1),mes:"外分"),
/**/ans:[p1,":",p2,mes] /*点を2点の内外分比で表示*/),
xtpl(p1l):=block([ansl],ansl:[p1l[1],-p1l[2]]) /*x軸対称*/,
ytpl(p1l):=block([ansl],ansl:[-p1l[1],p1l[2]]) /*y軸対称*/,
otpl(p1l):=block([ansl],ansl:[-p1l[1],-p1l[2]]) /*原点対称*/,
a12(p1l,p2l):=block([ans],if p2l[1]#p1l[1] then ans:(p2l[2]-p1l[2])/(p2l[1]-p1l[1])
/**/else ans:9999 /*傾き*/),
gl(p1l,p2l):=block([ansl],ansl:[p2l[1]-p1l[1],p2l[2]-p1l[2]]) /*傾き方向*/,
nl(p1l,p2l):=block([ansl],ansl:[p2l[2]-p1l[2],-(p2l[1]-p1l[1])],
/**/ansl:ansl/gcd(ansl[1],ansl[2]) /*垂直方向*/),
dis(p1l,p2l):=block([ans],ans:float(sqrt((p2l-p1l).(p2l-p1l)))) /*距離*/,
pppl(p1l,p2l,p3l):=block([ansl],ansl:((p1l-p2l).(p3l-p2l)/dis(p3l,p2l))*(p3l-p2l)/dis(p3l,p2l)),
sind(t):=sin(t/180*%pi),
cosd(t):=cos(t/180*%pi),
tand(t):=tan(t/180*%pi),
asind(sind):=asin(sind)/%pi*180,
acosd(cosd):=acos(cosd)/%pi*180,
atand(tand):=atan(tand)/%pi*180,
a(p1l,p2l,p3l):=
/**/float(acosd((dis(p1l,p2l)^2+dis(p2l,p3l)^2-dis(p1l,p3l)^2)/(2*dis(p1l,p2l)*dis(p2l,p3l)))),
/**/End:"Kansuu")$
(TEISUU:"",
Pi:%pi,
deg:25/180*Pi/**/,
End:"Teisuu")$
(TEJUN1: "1 解析的",
ex10:["ex10, y=2*x^2 の平方完成(a=1,b=0,c=0)と範囲(-2<=x and x<=-1)から、最大・最小は?",
/*=*/float([KKK,["Y=",Y:2*x^2 ,"a=",a:2,"b=",b:0,"c=",c:0,"xLe=",xLe:-2,"xRe=",xRe:-1,"最大・最小?" ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, Y=a*x^2+b*x+c=a*(x+b/(2*a) )^2-b^2/(4*a)+c=2*x^2",
/**/float([KKK,["Y=",Yh:a*(x+b/(2*a) )^2-b^2/(4*a)+c,2*x^2 ]," << 平方完成の公式 >>" ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, a=2,p=0,q=0、a=2で下凸,軸eA:x=p=0,頂点P(p,q)=(0,0) << 凸、軸・頂点の公式 >>",
/**/float([KKK,["a=",a,2,"p=",p:-b/(2*a),0,"q=",q:(-b^2+4*a*c)/(4*a),0,"eA:",eA:x=p,x=0,"P=",P:[p,q],[0,0] ] ]) ] /*(◆修正)*/,
print(ex12),
ex13:["ex13, 最小値Ymin=2*xRe^2=2 (x=-1),最大値Ymax=2*xLe^2=8 (x=-2) << 頂点(凸の下・上(aの正・負))、端点(端点の軸からの遠さ)で判断 >>",
/**/float([KKK,["Ymin=",2*xRe^2,2,"(x=",xRe,-1,") Ymax=",2*xLe^2,-2,"(x=",xLe,-2,")" ]] )] /*(◆修正)*/,
print(ex13),
ans:["ans, 最小値y=2 (x=-1),最大値y=8 (x=-2)",
/**/float([KKK,["Ymin=",2*xRe^2,2,"(x=",xRe,-1,") Ymax=",2*xLe^2,8,"(x=",xLe,-2,")" ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI2:"グラフ準備",print(["y=2*x^2 (a=2,b=0,c=0,p=0,q=0)を平方完成し、最大・最小は?"]) /*~(◆修正)*/,
ex21:["ex21, Yのグラフの軸とx軸の交点Px(p,0)=(0,0) << 頂点のx座標 >>",
/**/float([KKK,["Px=",Px:[p,0],[0,0] ] ]) ] /**/,
print(ex21),
ex22:["ex22, Y:x軸交点X1(p-sqrt(-q/a),0)=(0,0),X2(p+sqrt(-q/a),0)=(0,0)、y軸交点Y0(0,c)=(0,0)、描画範囲r=8 << x軸、y軸の交点,描画範囲 >>",
/**/float([KKK,["x軸X1=",X1:[x1:p-sqrt(-q/a),0],[0,0],"X2=",X2:[x2:p+sqrt(-q/a),0],[0,0],"y軸交点Y0=",Y0:[0,c],[0,0],"r=",r:8 ] ]) ] /**/,
print(ex22),
ex23:["ex23, Y:左端点XL(xLe,subst(x=xLe,Y) )=(-2,8),右端点XR(xRe,subst(x=xRe,Y) )=(-1,2) << グラフの左端点、右端点 >>",
/**/float([KKK,["XL=",XL:[xLe,subst(x=xLe,Y)],[-2,8],"XR=",XR:[xRe,subst(x=xRe,Y)],[-1,2] ] ]) ] /*(◆修正)*/,
print(ex23),
O:[0,0],A:[p,q],B:[p,0],C:[0,c],D:[x1,0],E:[x2,0],F:[xLe,subst(x=xLe,Y)],G:[xRe,subst(x=xRe,Y)] /**/,
dO:[-0.1,-0.1]*r,dA:[0.2,-0.1]*r,dB:[0.2,-0.1]*r,dC:[0.2,0.1]*r,dD:[0.2,0.1]*r,dE:[0.2,0.1]*r,dF:[0.2,0.1]*r,dG:[0.2,0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("P",A+dA),labB:lab("Px",B+dB),labC:lab("Y0",C+dC),labD:lab("X1",D+dD),labE:lab("X2",E+dE),labF:lab("XL",F+dF),labG:lab("XR",G+dG),
print(float([labO.labA,labB,labC,labD,labE,labF,labG ]) ) ,
/**/End:"GJunbi")$
(GKAKUNIN3:"グラフを書いて、視覚的に確認",
yM:r*1.2,xM:yM/4.8*6.8,ym:-yM,xm:-xM,
YL:[[Y,xm,xLe,black,1],[Y,xLe,xRe,red,3],[Y,xRe,xM,black,1]],eA:eA,
T:"For Max,Min,HaniAri" /**/,
lab:[10,[labO,labA,labB,labC,labD,labE,labF,labG,labO,labO ] ] ,
pCR:[[O],[B,C,D,E]] ,
pP:[A,F,G] /**/,
print(float([T,YL,eA,pP,pCR,lab,xm,xM,ym,yM] ) ) /**/,
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN4: "4 図形的",print(["y=2*x^2 (a=2,b=0,c=0,p=0,q=0)を平方完成し、最大・最小は?"]) /**/,
ex41:["ex41, グラフより、右端点が最小で、y=2*xRe^2=2 (x=xRe=-1)、左端点が最大で、y=2*xLe^2=8 (x=xLe=-2) << 最大・最小は頂点、端点のグラフでの上下で判断 >>",
/**/float([KKK,["最小y=",2*xRe^2,2,"(x=",xRe,-1,")、最大はy=",2*xLe^2,8,"(x=",xLe,-2,")" ] ]) ] /*(◆修正)*/,
/**/print(ex41),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI:"●練習17 306 関数 y= -2*x^2 (-2<=x and x<=1) の最大・最小は?" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(-2<=x and x<=1)から、最大・最小は?"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号307
/*WORK:"307 2次関数の定義域・値域・最大・最小●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"例題5 307 関数 y=x^2 -4*x +1 (0<=x and x<=3) の最大・最小は" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(0<=x and x<=3)から、最大・最小は?"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM):=block(
/**/Draw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*..*/color=YL[1][4],line_width =YL[1][5],explicit(YL[1][1],x,YL[1][2],YL[1][3]) ,
/*..*/color=YL[2][4],line_width =YL[2][5],explicit(YL[2][1],x,YL[2][2],YL[2][3]) ,
/*..*/color=YL[3][4],line_width =YL[3][5],explicit(YL[3][1],x,YL[3][2],YL[3][3]) ,
/*..*/color=blue,line_width =3,implicit(eA,x,xm,xM,y,ym,yM),
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM),implicit(x=0,x,xm,xM,y,ym,yM) /* "x,y軸" */,
/*....*/color=red,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[1]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/point_size =2,points(pP)/* "太赤がグラフで、太青が軸・頂点" */,
/*....*/color=black,lab[2][1],lab[2][2],lab[2][3],lab[2][4],lab[2][5],lab[2][6],lab[2][7],
/*....*/lab[2][8],lab[2][9],lab[2][10] ) /* "文字書込" */),
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中文字 */,
ng2pl(p1l,p2l,m,n):=(p1l*n+p2l*m)/(m+n) /*2点と比から内外分点*/,
p2ngl(pl,p1l,p2l):=block([P,p1,p2,ans],
/**/p1:pl-p1l,p2:pl-p2l,P:rat(sqrt(p1.p1)/sqrt(p2.p2)),p1:num(P),p2:denom(P),
/**/print(ng2pl(p1l,p2l,p1,p2)),mes:"内分",
/**/if ng2pl(p1l,p2l,p1,p2)#pl then ((if p1>p2 then p2:-p2 else p1:-p1),mes:"外分"),
/**/ans:[p1,":",p2,mes] /*点を2点の内外分比で表示*/),
xtpl(p1l):=block([ansl],ansl:[p1l[1],-p1l[2]]) /*x軸対称*/,
ytpl(p1l):=block([ansl],ansl:[-p1l[1],p1l[2]]) /*y軸対称*/,
otpl(p1l):=block([ansl],ansl:[-p1l[1],-p1l[2]]) /*原点対称*/,
a12(p1l,p2l):=block([ans],if p2l[1]#p1l[1] then ans:(p2l[2]-p1l[2])/(p2l[1]-p1l[1])
/**/else ans:9999 /*傾き*/),
gl(p1l,p2l):=block([ansl],ansl:[p2l[1]-p1l[1],p2l[2]-p1l[2]]) /*傾き方向*/,
nl(p1l,p2l):=block([ansl],ansl:[p2l[2]-p1l[2],-(p2l[1]-p1l[1])],
/**/ansl:ansl/gcd(ansl[1],ansl[2]) /*垂直方向*/),
dis(p1l,p2l):=block([ans],ans:float(sqrt((p2l-p1l).(p2l-p1l)))) /*距離*/,
pppl(p1l,p2l,p3l):=block([ansl],ansl:((p1l-p2l).(p3l-p2l)/dis(p3l,p2l))*(p3l-p2l)/dis(p3l,p2l)),
sind(t):=sin(t/180*%pi),
cosd(t):=cos(t/180*%pi),
tand(t):=tan(t/180*%pi),
asind(sind):=asin(sind)/%pi*180,
acosd(cosd):=acos(cosd)/%pi*180,
atand(tand):=atan(tand)/%pi*180,
a(p1l,p2l,p3l):=
/**/float(acosd((dis(p1l,p2l)^2+dis(p2l,p3l)^2-dis(p1l,p3l)^2)/(2*dis(p1l,p2l)*dis(p2l,p3l)))),
/**/End:"Kansuu")$
(TEISUU:"",
Pi:%pi,
deg:25/180*Pi/**/,
End:"Teisuu")$
(TEJUN1: "1 解析的",
ex10:["ex10, x^2 -4*x +1 の平方完成(a=1,b=-4,c=1)と範囲(0<=x and x<=3)から、最大・最小は?",
/*=*/float([KKK,["Y=",Y:x^2-4*x+1 ,"a=",a:1,"b=",b:-4,"c=",c:1,"xLe=",xLe:0,"xRe=",xRe:3,"最大・最小?" ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, Y=a*x^2+b*x+c=a*(x+b/(2*a) )^2-b^2/(4*a)+c=(x-2)^2-3",
/**/float([KKK,["Y=",Yh:a*(x+b/(2*a) )^2-b^2/(4*a)+c,(x-2)^2-3 ]," << 平方完成の公式 >>" ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, a=1,p=2,q=-3、a=1で上に凸,軸eA:x=p=2,頂点P(p,q)=(2,-3) << 凸、軸・頂点の公式 >>",
/**/float([KKK,["a=",a,1,"p=",p:-b/(2*a),2,"q=",q:(-b^2+4*a*c)/(4*a),-3,"eA:",eA:x=p,x=2,"P=",P:[p,q],[2,-3] ] ]) ] /*(◆修正)*/,
print(ex12),
ex13:["ex13, 最小値Ymin=subst(x=p,Y)=-3 (x=2),最大値Ymax=subst(x=xLe,Y)=1 (x=0) << 頂点(凸の下・上(aの正・負))、端点(端点の軸からの遠さ)で判断 >>",
/**/float([KKK,["Ymin=",subst(x=p,Y),-3,"(x=",p,2,") Ymax=",subst(x=xLe,Y),1,"(x=",xLe,0,")" ]] )] /*(◆修正)*/,
print(ex13),
ans:["ans, 最小値y=-3 (x=2),最大値y=1 (x=0)",
/**/float([KKK,["Ymin=",subst(x=p,Y),-3,"(x=",p,2,") Ymax=",subst(x=xLe,Y),1,"(x=",xLe,0,")" ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI2:"グラフ準備",print(["y=x^2-4*x+1 (a=1,b=-4,c=1,p=2,q=-3)を平方完成し、最大・最小は?"]) /*~(◆修正)*/,
ex21:["ex21, Yのグラフの軸とx軸の交点Px(p,0)=(2,0) << 頂点のx座標 >>",
/**/float([KKK,["Px=",Px:[p,0],[2,0] ] ]) ] /*(◆修正)*/,
print(ex21),
ex22:["ex22, Y:x軸交点X1(p-sqrt(-q/a),0)=(0,0),X2(p+sqrt(-q/a),0)=(0,0)、y軸交点Y0(0,c)=(0,0)、描画範囲r=8 << x軸、y軸の交点,描画範囲 >>",
/**/float([KKK,["x軸X1=",X1:[x1:p-sqrt(-q/a),0],[2-sqrt(3),0],"X2=",X2:[x2:p+sqrt(-q/a),0],[2+sqrt(3),0],"y軸交点Y0=",Y0:[0,c],[0,1],"r=",r:3 ] ]) ] /*(◆修正)*/,
print(ex22),
ex23:["ex23, Y:左端点XL(xLe,subst(x=xLe,Y) )=(0,1),右端点XR(xRe,subst(x=xRe,Y) )=(3,-2) << グラフの左端点、右端点 >>",
/**/float([KKK,["XL=",XL:[xLe,subst(x=xLe,Y)],[0,1],"XR=",XR:[xRe,subst(x=xRe,Y)],[3,-2] ] ]) ] /*(◆修正)*/,
print(ex23),
O:[0,0],A:[p,q],B:[p,0],C:[0,c],D:[x1,0],E:[x2,0],F:[xLe,subst(x=xLe,Y)],G:[xRe,subst(x=xRe,Y)] /**/,
dO:[-0.1,-0.1]*r,dA:[0.2,-0.1]*r,dB:[0.2,-0.1]*r,dC:[0.2,0.1]*r,dD:[0.2,0.1]*r,dE:[0.2,0.1]*r,dF:[0.2,0.1]*r,dG:[0.2,0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("P",A+dA),labB:lab("Px",B+dB),labC:lab("Y0",C+dC),labD:lab("X1",D+dD),labE:lab("X2",E+dE),labF:lab("XL",F+dF),labG:lab("XR",G+dG),
print(float([labO.labA,labB,labC,labD,labE,labF,labG ]) ) ,
/**/End:"GJunbi")$
(GKAKUNIN3:"グラフを書いて、視覚的に確認",
yM:r*1.2,xM:yM/4.8*6.8,ym:-yM,xm:-xM,
YL:[[Y,xm,xLe,black,1],[Y,xLe,xRe,red,3],[Y,xRe,xM,black,1]],eA:eA,
T:"For Max,Min,HaniAri" /**/,
lab:[10,[labO,labA,labB,labC,labD,labE,labF,labG,labO,labO ] ] ,
pCR:[[O],[B,C,D,E]] ,
pP:[A,F,G] /**/,
print(float([T,YL,eA,pP,pCR,lab,xm,xM,ym,yM] ) ) /**/,
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN4: "4 図形的",print(["y=x^2-4*x+1 (a=1,b=-4,c=1,p=2,q=-3)を平方完成し、最大・最小は?"]) /*(◆修正)*/,
ex41:["ex41, グラフより、頂点が最小で、y=subst(x=p,Y)=-3 (x=p=2)、左端点が最大で、y=subst(x=xLe,Y)=1 (x=xLe=0) << 最大・最小は頂点、端点のグラフでの上下で判断 >>",
/**/float([KKK,["最小y=",subst(x=p,Y),-3,"(x=",p,2,")、最大はy=",subst(x=xLe,Y),1,"(x=",xLe,0,")" ] ]) ] /*(◆修正)*/,
/**/print(ex41),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI:"●例題5 307 関数 y= -2*x^2 +12*x -10 (1<=x and x<=2) の最大・最小は?" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(1<=x and x<=2)から、最大・最小は?"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号308
/*WORK:"308 2次関数の定義域・値域・最大・最小●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"練習18 308 関数 y=x^2 -4*x +1 (-2<=x and x<=1) の最大・最小は" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(-2<=x and x<=1)から、最大・最小は?"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM):=block(
/**/Draw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*..*/color=YL[1][4],line_width =YL[1][5],explicit(YL[1][1],x,YL[1][2],YL[1][3]) ,
/*..*/color=YL[2][4],line_width =YL[2][5],explicit(YL[2][1],x,YL[2][2],YL[2][3]) ,
/*..*/color=YL[3][4],line_width =YL[3][5],explicit(YL[3][1],x,YL[3][2],YL[3][3]) ,
/*..*/color=blue,line_width =3,implicit(eA,x,xm,xM,y,ym,yM),
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM),implicit(x=0,x,xm,xM,y,ym,yM) /* "x,y軸" */,
/*....*/color=red,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[1]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/point_size =2,points(pP)/* "太赤がグラフで、太青が軸・頂点" */,
/*....*/color=black,lab[2][1],lab[2][2],lab[2][3],lab[2][4],lab[2][5],lab[2][6],lab[2][7],
/*....*/lab[2][8],lab[2][9],lab[2][10] ) /* "文字書込" */),
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中文字 */,
ng2pl(p1l,p2l,m,n):=(p1l*n+p2l*m)/(m+n) /*2点と比から内外分点*/,
p2ngl(pl,p1l,p2l):=block([P,p1,p2,ans],
/**/p1:pl-p1l,p2:pl-p2l,P:rat(sqrt(p1.p1)/sqrt(p2.p2)),p1:num(P),p2:denom(P),
/**/print(ng2pl(p1l,p2l,p1,p2)),mes:"内分",
/**/if ng2pl(p1l,p2l,p1,p2)#pl then ((if p1>p2 then p2:-p2 else p1:-p1),mes:"外分"),
/**/ans:[p1,":",p2,mes] /*点を2点の内外分比で表示*/),
xtpl(p1l):=block([ansl],ansl:[p1l[1],-p1l[2]]) /*x軸対称*/,
ytpl(p1l):=block([ansl],ansl:[-p1l[1],p1l[2]]) /*y軸対称*/,
otpl(p1l):=block([ansl],ansl:[-p1l[1],-p1l[2]]) /*原点対称*/,
a12(p1l,p2l):=block([ans],if p2l[1]#p1l[1] then ans:(p2l[2]-p1l[2])/(p2l[1]-p1l[1])
/**/else ans:9999 /*傾き*/),
gl(p1l,p2l):=block([ansl],ansl:[p2l[1]-p1l[1],p2l[2]-p1l[2]]) /*傾き方向*/,
nl(p1l,p2l):=block([ansl],ansl:[p2l[2]-p1l[2],-(p2l[1]-p1l[1])],
/**/ansl:ansl/gcd(ansl[1],ansl[2]) /*垂直方向*/),
dis(p1l,p2l):=block([ans],ans:float(sqrt((p2l-p1l).(p2l-p1l)))) /*距離*/,
pppl(p1l,p2l,p3l):=block([ansl],ansl:((p1l-p2l).(p3l-p2l)/dis(p3l,p2l))*(p3l-p2l)/dis(p3l,p2l)),
sind(t):=sin(t/180*%pi),
cosd(t):=cos(t/180*%pi),
tand(t):=tan(t/180*%pi),
asind(sind):=asin(sind)/%pi*180,
acosd(cosd):=acos(cosd)/%pi*180,
atand(tand):=atan(tand)/%pi*180,
a(p1l,p2l,p3l):=
/**/float(acosd((dis(p1l,p2l)^2+dis(p2l,p3l)^2-dis(p1l,p3l)^2)/(2*dis(p1l,p2l)*dis(p2l,p3l)))),
/**/End:"Kansuu")$
(TEISUU:"",
Pi:%pi,
deg:25/180*Pi/**/,
End:"Teisuu")$
(TEJUN1: "1 解析的",
ex10:["ex10, x^2 -4*x +1 の平方完成(a=1,b=-4,c=1)と範囲(-2<=x and x<=1)から、最大・最小は?",
/*=*/float([KKK,["Y=",Y:x^2-4*x+1 ,"a=",a:1,"b=",b:-4,"c=",c:1,"xLe=",xLe:-2,"xRe=",xRe:1,"最大・最小?" ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, Y=a*x^2+b*x+c=a*(x+b/(2*a) )^2-b^2/(4*a)+c=(x-2)^2-3",
/**/float([KKK,["Y=",Yh:a*(x+b/(2*a) )^2-b^2/(4*a)+c,(x-2)^2-3 ]," << 平方完成の公式 >>" ]) ] /**/,
print(ex11),
ex12:["ex12, a=1,p=2,q=-3、a=1で上に凸,軸eA:x=p=2,頂点P(p,q)=(2,-3) << 凸、軸・頂点の公式 >>",
/**/float([KKK,["a=",a,1,"p=",p:-b/(2*a),2,"q=",q:(-b^2+4*a*c)/(4*a),-3,"eA:",eA:x=p,x=2,"P=",P:[p,q],[2,-3] ] ]) ] /**/,
print(ex12),
ex13:["ex13, 最小値Ymin=subst(x=xRe,Y)=-2 (x=1),最大値Ymax=subst(x=xLe,Y)=13 (x=-2) << 頂点(凸の下・上(aの正・負))、端点(端点の軸からの遠さ)で判断 >>",
/**/float([KKK,["Ymin=",subst(x=xRe,Y),-2,"(x=",xRe,1,") Ymax=",subst(x=xLe,Y),13,"(x=",xLe,-2,")" ]] )] /*(◆修正)*/,
print(ex13),
ans:["ans, 最小値y=-2 (x=1),最大値y=12 (x=-2)",
/**/float([KKK,["Ymin=",subst(x=xRe,Y),-2,"(x=",xRe,1,") Ymax=",subst(x=xLe,Y),13,"(x=",xLe,-2,")" ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI2:"グラフ準備",print(["y=x^2-4*x+1 (a=1,b=-4,c=1,p=2,q=-3)を平方完成し、最大・最小は?"]) /*~(◆修正)*/,
ex21:["ex21, Yのグラフの軸とx軸の交点Px(p,0)=(2,0) << 頂点のx座標 >>",
/**/float([KKK,["Px=",Px:[p,0],[2,0] ] ]) ] /*(◆修正)*/,
print(ex21),
ex22:["ex22, Y:x軸交点X1(p-sqrt(-q/a),0)=(0,0),X2(p+sqrt(-q/a),0)=(0,0)、y軸交点Y0(0,c)=(0,0)、描画範囲r=8 << x軸、y軸の交点,描画範囲 >>",
/**/float([KKK,["x軸X1=",X1:[x1:p-sqrt(-q/a),0],[2-sqrt(3),0],"X2=",X2:[x2:p+sqrt(-q/a),0],[2+sqrt(3),0],"y軸交点Y0=",Y0:[0,c],[0,1],"r=",r:8 ] ]) ] /*(◆修正)*/,
print(ex22),
ex23:["ex23, Y:左端点XL(xLe,subst(x=xLe,Y) )=(0,13),右端点XR(xRe,subst(x=xRe,Y) )=(1,-2) << グラフの左端点、右端点 >>",
/**/float([KKK,["XL=",XL:[xLe,subst(x=xLe,Y)],[0,13],"XR=",XR:[xRe,subst(x=xRe,Y)],[1,-2] ] ]) ] /*(◆修正)*/,
print(ex23),
O:[0,0],A:[p,q],B:[p,0],C:[0,c],D:[x1,0],E:[x2,0],F:[xLe,subst(x=xLe,Y)],G:[xRe,subst(x=xRe,Y)] /**/,
dO:[-0.1,-0.1]*r,dA:[0.2,-0.1]*r,dB:[0.2,-0.1]*r,dC:[0.2,0.1]*r,dD:[0.2,0.1]*r,dE:[0.2,0.1]*r,dF:[0.2,0.1]*r,dG:[0.2,0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("P",A+dA),labB:lab("Px",B+dB),labC:lab("Y0",C+dC),labD:lab("X1",D+dD),labE:lab("X2",E+dE),labF:lab("XL",F+dF),labG:lab("XR",G+dG),
print(float([labO.labA,labB,labC,labD,labE,labF,labG ]) ) ,
/**/End:"GJunbi")$
(GKAKUNIN3:"グラフを書いて、視覚的に確認",
yM:r*1.2,xM:yM/4.8*6.8,ym:-yM,xm:-xM,
YL:[[Y,xm,xLe,black,1],[Y,xLe,xRe,red,3],[Y,xRe,xM,black,1]],eA:eA,
T:"For Max,Min,HaniAri" /**/,
lab:[10,[labO,labA,labB,labC,labD,labE,labF,labG,labO,labO ] ] ,
pCR:[[O],[B,C,D,E]] ,
pP:[A,F,G] /**/,
print(float([T,YL,eA,pP,pCR,lab,xm,xM,ym,yM] ) ) /**/,
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN4: "4 図形的",print(["y=x^2-4*x+1 (a=1,b=-4,c=1,p=2,q=-3)を平方完成し、最大・最小は?"]) /*(◆修正)*/,
ex41:["ex41, グラフより、右端点が最小で、y=subst(x=xRe,Y)=-2 (x=xRe=1)、左端点が最大で、y=subst(x=xLe,Y)=13 (x=xLe=-2) << 最大・最小は頂点、端点のグラフでの上下で判断 >>",
/**/float([KKK,["最小y=",subst(x=xRe,Y),-2,"(x=",xRe,2,")、最大はy=",subst(x=xLe,Y),13,"(x=",xLe,-2,")" ] ]) ] /*(◆修正)*/,
/**/print(ex41),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI:"●練習18 308 関数 y=x^2 -4*x +1 (0<=x and x<=4) の最大・最小は?" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(0<=x and x<=4)から、最大・最小は?"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号309
/*WORK:"309 2次関数の定義域・値域・最大・最小●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"練習19 309 関数 y=x^2 -2*x +3 (0<=x and x<=3) の最大・最小は" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(0<=x and x<=3)から、最大・最小は?"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM):=block(
/**/Draw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*..*/color=YL[1][4],line_width =YL[1][5],explicit(YL[1][1],x,YL[1][2],YL[1][3]) ,
/*..*/color=YL[2][4],line_width =YL[2][5],explicit(YL[2][1],x,YL[2][2],YL[2][3]) ,
/*..*/color=YL[3][4],line_width =YL[3][5],explicit(YL[3][1],x,YL[3][2],YL[3][3]) ,
/*..*/color=blue,line_width =3,implicit(eA,x,xm,xM,y,ym,yM),
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM),implicit(x=0,x,xm,xM,y,ym,yM) /* "x,y軸" */,
/*....*/color=red,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[1]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/point_size =2,points(pP)/* "太赤がグラフで、太青が軸・頂点" */,
/*....*/color=black,lab[2][1],lab[2][2],lab[2][3],lab[2][4],lab[2][5],lab[2][6],lab[2][7],
/*....*/lab[2][8],lab[2][9],lab[2][10] ) /* "文字書込" */),
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中文字 */,
ng2pl(p1l,p2l,m,n):=(p1l*n+p2l*m)/(m+n) /*2点と比から内外分点*/,
p2ngl(pl,p1l,p2l):=block([P,p1,p2,ans],
/**/p1:pl-p1l,p2:pl-p2l,P:rat(sqrt(p1.p1)/sqrt(p2.p2)),p1:num(P),p2:denom(P),
/**/print(ng2pl(p1l,p2l,p1,p2)),mes:"内分",
/**/if ng2pl(p1l,p2l,p1,p2)#pl then ((if p1>p2 then p2:-p2 else p1:-p1),mes:"外分"),
/**/ans:[p1,":",p2,mes] /*点を2点の内外分比で表示*/),
xtpl(p1l):=block([ansl],ansl:[p1l[1],-p1l[2]]) /*x軸対称*/,
ytpl(p1l):=block([ansl],ansl:[-p1l[1],p1l[2]]) /*y軸対称*/,
otpl(p1l):=block([ansl],ansl:[-p1l[1],-p1l[2]]) /*原点対称*/,
a12(p1l,p2l):=block([ans],if p2l[1]#p1l[1] then ans:(p2l[2]-p1l[2])/(p2l[1]-p1l[1])
/**/else ans:9999 /*傾き*/),
gl(p1l,p2l):=block([ansl],ansl:[p2l[1]-p1l[1],p2l[2]-p1l[2]]) /*傾き方向*/,
nl(p1l,p2l):=block([ansl],ansl:[p2l[2]-p1l[2],-(p2l[1]-p1l[1])],
/**/ansl:ansl/gcd(ansl[1],ansl[2]) /*垂直方向*/),
dis(p1l,p2l):=block([ans],ans:float(sqrt((p2l-p1l).(p2l-p1l)))) /*距離*/,
pppl(p1l,p2l,p3l):=block([ansl],ansl:((p1l-p2l).(p3l-p2l)/dis(p3l,p2l))*(p3l-p2l)/dis(p3l,p2l)),
sind(t):=sin(t/180*%pi),
cosd(t):=cos(t/180*%pi),
tand(t):=tan(t/180*%pi),
asind(sind):=asin(sind)/%pi*180,
acosd(cosd):=acos(cosd)/%pi*180,
atand(tand):=atan(tand)/%pi*180,
a(p1l,p2l,p3l):=
/**/float(acosd((dis(p1l,p2l)^2+dis(p2l,p3l)^2-dis(p1l,p3l)^2)/(2*dis(p1l,p2l)*dis(p2l,p3l)))),
/**/End:"Kansuu")$
(TEISUU:"",
Pi:%pi,
deg:25/180*Pi/**/,
End:"Teisuu")$
(TEJUN1: "1 解析的",
ex10:["ex10, x^2 -2*x +3 の平方完成(a=1,b=-2,c=3)と範囲(0<=x and x<=3)から、最大・最小は?",
/*=*/float([KKK,["Y=",Y:x^2-2*x+3 ,"a=",a:1,"b=",b:-2,"c=",c:3,"xLe=",xLe:0,"xRe=",xRe:3,"最大・最小?" ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, Y=a*x^2+b*x+c=a*(x+b/(2*a) )^2-b^2/(4*a)+c=(x-1)^2+2",
/**/float([KKK,["Y=",Yh:a*(x+b/(2*a) )^2-b^2/(4*a)+c,(x-1)^2+2 ]," << 平方完成の公式 >>" ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, a=1,p=1,q=+2、a=1で上に凸,軸eA:x=p=1,頂点P(p,q)=(1,2) << 凸、軸・頂点の公式 >>", /**/float([KKK,["a=",a,1,"p=",p:-b/(2*a),1,"q=",q:(-b^2+4*a*c)/(4*a),2,"eA:",eA:x=p,x=1,"P=",P:[p,q],[1,2] ] ]) ] /*(◆修正)*/,
print(ex12),
ex13:["ex13, 最小値Ymin=subst(x=p,Y)=2 (x=1),最大値Ymax=subst(x=xRe,Y)=6 (x=0) << 頂点(凸の下・上(aの正・負))、端点(端点の軸からの遠さ)で判断 >>",
/**/float([KKK,["Ymin=",subst(x=p,Y),2,"(x=",p,1,") Ymax=",subst(x=xRe,Y),6,"(x=",xRe,3,")" ]] )] /*(◆修正)*/,
print(ex13),
ans:["ans, 最小値y=2 (x=1),最大値y=7 (x=3)",
/**/float([KKK,["Ymin=",subst(x=p,Y),2,"(x=",p,1,") Ymax=",subst(x=xRe,Y),6,"(x=",xRe,3,")" ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI2:"グラフ準備",print(["y=x^2-2*x+3 (a=1,b=-2,c=3)-->y=(x-1)^2+2と平方完成し、最大・最小は?"]) /*~(◆修正)*/,
ex21:["ex21, Yのグラフの軸とx軸の交点Px(p,0)=(1,0) << 頂点のx座標 >>",
/**/float([KKK,["Px=",Px:[p,0],[1,0] ] ]) ] /*(◆修正)*/,
print(ex21),
ex22:["ex22, Y:x軸交点X1(p-sqrt(-q/a),0)=(74,0),X2(p+sqrt(-q/a),0)=(74,0)、y軸交点Y0(0,c)=(0,3)、描画範囲r=6 << x軸、y軸の交点,描画範囲 >>",
/**/float([KKK,["x軸X1=",X1:[x1:p-sqrt(-q/a),0],[74,0],"X2=",X2:[x2:p+sqrt(-q/a),0],[74,0],"y軸交点Y0=",Y0:[0,c],[0,3],"r=",r:6 ] ]) ] /*(◆修正)*/,
print(ex22),
ex23:["ex23, Y:左端点XL(xLe,subst(x=xLe,Y) )=(0,3),右端点XR(xRe,subst(x=xRe,Y) )=(3,6) << グラフの左端点、右端点 >>",
/**/float([KKK,["XL=",XL:[xLe,subst(x=xLe,Y)],[0,3],"XR=",XR:[xRe,subst(x=xRe,Y)],[3,6] ] ]) ] /*(◆修正)*/,
print(ex23),
O:[0,0],A:[p,q],B:[p,0],C:[0,c],D:[x1,0],E:[x2,0],F:[xLe,subst(x=xLe,Y)],G:[xRe,subst(x=xRe,Y)] /**/,
dO:[-0.1,-0.1]*r,dA:[0.2,-0.1]*r,dB:[0.2,-0.1]*r,dC:[0.2,0.1]*r,dD:[0.2,0.1]*r,dE:[0.2,0.1]*r,dF:[0.2,0.1]*r,dG:[0.2,0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("P",A+dA),labB:lab("Px",B+dB),labC:lab("Y0",C+dC),labD:lab("X1",D+dD),labE:lab("X2",E+dE),labF:lab("XL",F+dF),labG:lab("XR",G+dG),
print(float([labO.labA,labB,labC,labD,labE,labF,labG ]) ) ,
/**/End:"GJunbi")$
(GKAKUNIN3:"グラフを書いて、視覚的に確認",
yM:r*1.2,xM:yM/4.8*6.8,ym:-yM,xm:-xM,
YL:[[Y,xm,xLe,black,1],[Y,xLe,xRe,red,3],[Y,xRe,xM,black,1]],eA:eA,
T:"For Max,Min,HaniAri" /**/,
lab:[10,[labO,labA,labB,labC,labO,labO,labF,labG,labO,labO ] ] /*(◆修正)*/,
pCR:[[O],[B,C]] /*(◆修正)*/,
pP:[A,F,G] /**/,
print(float([T,YL,eA,pP,pCR,lab,xm,xM,ym,yM] ) ) /**/,
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN4: "4 図形的",print(["y=x^2-2*x+3 (a=1,b=-4,c=1)-->y=(x-1)^2+3 と平方完成し、最大・最小は?"]) /*(◆修正)*/,
ex41:["ex41, グラフより、頂点が最小で、y=subst(x=p,Y)=2 (x=p=1)、右端点が最大で、y=subst(x=xRe,Y)=6 (x=xRe=3) << 最大・最小は頂点、端点のグラフでの上下で判断 >>",
/**/float([KKK,["最小y=",subst(x=p,Y),2,"(x=",p,1,")、最大はy=",subst(x=xRe,Y),6,"(x=",xRe,3,")" ] ]) ] /*(◆修正)*/,
/**/print(ex41),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI:"●練習19 309 関数 y=-2*x^2 +14*x (0<=x and x<=7) の最大・最小は?" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(0<=x and x<=7)から、最大・最小は?"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号310
/*=WORK:"310 2次関数の定義域・値域・最大・最小●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●応用例題2 310 関数 y=x^2 -4*x +c ( 1<=x and x<=5) の最大が8になるには、cは?" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(1<=x and x<=5)から、最大が8になるには?"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM):=block(
/**/Draw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*..*/color=YL[1][4],line_width =YL[1][5],explicit(YL[1][1],x,YL[1][2],YL[1][3]) ,
/*..*/color=YL[2][4],line_width =YL[2][5],explicit(YL[2][1],x,YL[2][2],YL[2][3]) ,
/*..*/color=YL[3][4],line_width =YL[3][5],explicit(YL[3][1],x,YL[3][2],YL[3][3]) ,
/*..*/color=blue,line_width =3,implicit(eA,x,xm,xM,y,ym,yM),
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM),implicit(x=0,x,xm,xM,y,ym,yM) /* "x,y軸" */,
/*....*/color=red,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[1]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/point_size =2,points(pP)/* "太赤がグラフで、太青が軸・頂点" */,
/*....*/color=black,lab[2][1],lab[2][2],lab[2][3],lab[2][4],lab[2][5],lab[2][6],lab[2][7],
/*....*/lab[2][8],lab[2][9],lab[2][10] ) /* "文字書込" */),
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中文字 */,
ng2pl(p1l,p2l,m,n):=(p1l*n+p2l*m)/(m+n) /*2点と比から内外分点*/,
p2ngl(pl,p1l,p2l):=block([P,p1,p2,ans],
/**/p1:pl-p1l,p2:pl-p2l,P:rat(sqrt(p1.p1)/sqrt(p2.p2)),p1:num(P),p2:denom(P),
/**/print(ng2pl(p1l,p2l,p1,p2)),mes:"内分",
/**/if ng2pl(p1l,p2l,p1,p2)#pl then ((if p1>p2 then p2:-p2 else p1:-p1),mes:"外分"),
/**/ans:[p1,":",p2,mes] /*点を2点の内外分比で表示*/),
xtpl(p1l):=block([ansl],ansl:[p1l[1],-p1l[2]]) /*x軸対称*/,
ytpl(p1l):=block([ansl],ansl:[-p1l[1],p1l[2]]) /*y軸対称*/,
otpl(p1l):=block([ansl],ansl:[-p1l[1],-p1l[2]]) /*原点対称*/,
a12(p1l,p2l):=block([ans],if p2l[1]#p1l[1] then ans:(p2l[2]-p1l[2])/(p2l[1]-p1l[1])
/**/else ans:9999 /*傾き*/),
gl(p1l,p2l):=block([ansl],ansl:[p2l[1]-p1l[1],p2l[2]-p1l[2]]) /*傾き方向*/,
nl(p1l,p2l):=block([ansl],ansl:[p2l[2]-p1l[2],-(p2l[1]-p1l[1])],
/**/ansl:ansl/gcd(ansl[1],ansl[2]) /*垂直方向*/),
dis(p1l,p2l):=block([ans],ans:float(sqrt((p2l-p1l).(p2l-p1l)))) /*距離*/,
pppl(p1l,p2l,p3l):=block([ansl],ansl:((p1l-p2l).(p3l-p2l)/dis(p3l,p2l))*(p3l-p2l)/dis(p3l,p2l)),
sind(t):=sin(t/180*%pi),
cosd(t):=cos(t/180*%pi),
tand(t):=tan(t/180*%pi),
asind(sind):=asin(sind)/%pi*180,
acosd(cosd):=acos(cosd)/%pi*180,
atand(tand):=atan(tand)/%pi*180,
a(p1l,p2l,p3l):=
/**/float(acosd((dis(p1l,p2l)^2+dis(p2l,p3l)^2-dis(p1l,p3l)^2)/(2*dis(p1l,p2l)*dis(p2l,p3l)))),
sb(sl,e):=subst(sl,e),
/**/End:"Kansuu")$
(TEISUU:"",
Pi:%pi,
deg:25/180*Pi/**/,
End:"Teisuu")$
(TEJUN1: "1 解析的",
ex10:["ex10, x^2 -4*x +m の平方完成(a=1,b=-4,c=m)と範囲(1<=x and x<=5)の最大が8となるmは?",
/*=*/float([KKK,["Y=",Y:x^2-4*x+m ,"a=",a:1,"b=",b:-4,"c=",c:m,"xLe=",xLe:1,"xRe=",xRe:5,"最大8となるm?" ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, Y=a*x^2+b*x+c=a*(x+b/(2*a) )^2-b^2/(4*a)+c=(x-2)^2-4+m",
/**/float([KKK,["Y=",Yh:a*(x+b/(2*a) )^2-b^2/(4*a)+c,(x-2)^2-4+m ]," << 平方完成の公式 >>" ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, a=1,p=2,q=-4+m、a=1で下に凸,軸eA:x=p=2,頂点P(p,q)=(2,-4+m) << 凸、軸・頂点の公式 >>",
/**/float([KKK,["p=",p:-b/(2*a),"q=",q:expand((-b^2+4*a*c)/(4*a)),"eA:",eA:x=p,x=2,"P=",P:[p,q],[2,-4+m] ] ]) ] /*(◆修正)*/,
print(ex12),
ex13:["ex13, 最大値Ymax=sb(x=xRe,Y)=5+m (x=5) =8 -> m=3 << 頂点(凸の下・上(aの正・負))、端点(端点の軸からの遠さ)で判断 >>",
/**/float([KKK,["Ymax=",Ymax:expand(sb(x=xRe,Y)),5+m,"=",8,Sm:solve(Ymax=8,m),"=",3 ]] )] /*(◆修正)*/,
print(ex13),
ans:["ans, m=3で,最大値y=8 (x=5)",
/**/float([KKK,[Sm,"m=",3,"Ymax=",sb(Sm,Ymax),8,"(x=",xRe,5,")" ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI2:"グラフ準備",print(["y=x^2-4*x+m (a=1,b=-4,c=m)-->y=(x-2)^2-4+mと平方完成し、最大8となるmは?"]) /*~(◆修正)*/,
sl:[m=2],
ex21:["ex21, Yのグラフの軸とx軸の交点Px(p,0)=(2,0) << 頂点のx座標 >>",
/**/float([KKK,["Px=",Px:[p,0],[2,0] ] ]) ] /*(◆修正)*/,
print(ex21),
ex22:["ex22, 頂点P(p,q)=(2,-4+m)、y軸交点Y0(0,c)=(0,m)、描画範囲r=8 << 頂点、y軸の交点,描画範囲 >>",
/**/float([KKK,["頂点P=",P:sb(sl,[p,q]),sb(sl,[2,-4+m]),"y軸交点Y0=",Y0:sb(sl,[0,c]),sb(sl,[0,m]),"r=",r:8 ] ]) ] /*(◆修正)*/,
print(ex22),
ex23:["ex23, Y:左端点XL(xLe,sb(x=xLe,Y) )=(1,-3+m),右端点XR(xRe,sb(x=xRe,Y) )=(5,5+m) << グラフの左端点、右端点 >>",
/**/float([KKK,["XL=",XL:[xLe,sb(x=xLe,Yg:sb(sl,Y) ) ],sb(sl,[1,-3+m] ),"XR=",XR:[xRe,sb(x=xRe,Yg) ],sb(sl,[5,5+m] ) ] ]) ] /* m=2をYに代入 *//*(◆修正)*/,
print(ex23),
O:[0,0],A:P,B:Px,C:Y0,D:[0,XL[2]],E:[0,XR[2]],F:XL,G:XR /**/,
dO:[-0.1,-0.1]*r,dA:[0.2,-0.1]*r,dB:[0.2,-0.1]*r,dC:[0.2,0.1]*r,dD:[0.2,0.1]*r,dE:[0.2,0.1]*r,dF:[0.2,0.1]*r,dG:[0.2,0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("P",A+dA),labB:lab("Px",B+dB),labC:lab("Y0",C+dC),labD:lab("-3+m",D+dD),labE:lab("5+m",E+dE),labF:lab("XL",F+dF),labG:lab("XR",G+dG)/*(◆修正)*/,
print(float([labO.labA,labB,labC,labD,labE,labF,labG ]) ) ,
/**/End:"GJunbi")$
(GKAKUNIN3:"グラフを書いて、視覚的に確認",
yM:r*1.2,xM:yM/4.8*6.8,ym:-yM,xm:-xM,
YL:[[Yg,xm,xLe,black,1],[Yg,xLe,xRe,red,3],[Yg,xRe,xM,black,1]],eA:eA,
T:"For Max,Min,HaniAri" /**/,
lab:[10,[labO,labA,labB,labC,labD,labE,labF,labG,labO,labO ] ] /*(◆修正)*/,
pCR:[[O],[B,C,D,E]] /*(◆修正)*/,
pP:[A,F,G] /**/,
print(float([T,YL,eA,pP,pCR,lab,xm,xM,ym,yM] ) ) /**/,
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN4: "4 図形的",print(["y=x^2-4*x+m (a=1,b=-4,c=m)-->y=(x-2)^2-4+m と平方完成し、最大8となるようなmは?"]) /*(◆修正)*/,
ex41:["ex41, グラフより、右端点が最大で、y=sb(x=xRe,Y)=5+m =8 (x=xRe=5) ->m=3 << 最大は頂点、端点のグラフでの上下で判断 >>",
/**/float([KKK,["最大はy=",sb(x=xRe,Y),5+m,"=8 ->",solve(sb(x=xRe,Y)=8,m),m=3 ] ]) ] /*(◆修正)*/,
/**/print(ex41),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI:"●応用例題2 310 関数 -x^2 -2*x +c ( 0<=x and x<=2) の最小が-3になるには、cは?" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(0<=x and x<=2)から、最小が-3になるには?"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号311
/*=WORK:"311 2次関数の定義域・値域・最大・最小●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●練習20 311 関数 y=x^2 -2*x +m ( -2<=x and x<=2) の最大が5になるには、mは?" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(-2<=x and x<=2)から、最大が5になるには?"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM):=block(
/**/Draw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*..*/color=YL[1][4],line_width =YL[1][5],explicit(YL[1][1],x,YL[1][2],YL[1][3]) ,
/*..*/color=YL[2][4],line_width =YL[2][5],explicit(YL[2][1],x,YL[2][2],YL[2][3]) ,
/*..*/color=YL[3][4],line_width =YL[3][5],explicit(YL[3][1],x,YL[3][2],YL[3][3]) ,
/*..*/color=blue,line_width =3,implicit(eA,x,xm,xM,y,ym,yM),
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM),implicit(x=0,x,xm,xM,y,ym,yM) /* "x,y軸" */,
/*....*/color=red,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[1]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/point_size =2,points(pP)/* "太赤がグラフで、太青が軸・頂点" */,
/*....*/color=black,lab[2][1],lab[2][2],lab[2][3],lab[2][4],lab[2][5],lab[2][6],lab[2][7],
/*....*/lab[2][8],lab[2][9],lab[2][10] ) /* "文字書込" */),
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中文字 */,
ng2pl(p1l,p2l,m,n):=(p1l*n+p2l*m)/(m+n) /*2点と比から内外分点*/,
p2ngl(pl,p1l,p2l):=block([P,p1,p2,ans],
/**/p1:pl-p1l,p2:pl-p2l,P:rat(sqrt(p1.p1)/sqrt(p2.p2)),p1:num(P),p2:denom(P),
/**/print(ng2pl(p1l,p2l,p1,p2)),mes:"内分",
/**/if ng2pl(p1l,p2l,p1,p2)#pl then ((if p1>p2 then p2:-p2 else p1:-p1),mes:"外分"),
/**/ans:[p1,":",p2,mes] /*点を2点の内外分比で表示*/),
xtpl(p1l):=block([ansl],ansl:[p1l[1],-p1l[2]]) /*x軸対称*/,
ytpl(p1l):=block([ansl],ansl:[-p1l[1],p1l[2]]) /*y軸対称*/,
otpl(p1l):=block([ansl],ansl:[-p1l[1],-p1l[2]]) /*原点対称*/,
a12(p1l,p2l):=block([ans],if p2l[1]#p1l[1] then ans:(p2l[2]-p1l[2])/(p2l[1]-p1l[1])
/**/else ans:9999 /*傾き*/),
gl(p1l,p2l):=block([ansl],ansl:[p2l[1]-p1l[1],p2l[2]-p1l[2]]) /*傾き方向*/,
nl(p1l,p2l):=block([ansl],ansl:[p2l[2]-p1l[2],-(p2l[1]-p1l[1])],
/**/ansl:ansl/gcd(ansl[1],ansl[2]) /*垂直方向*/),
dis(p1l,p2l):=block([ans],ans:float(sqrt((p2l-p1l).(p2l-p1l)))) /*距離*/,
pppl(p1l,p2l,p3l):=block([ansl],ansl:((p1l-p2l).(p3l-p2l)/dis(p3l,p2l))*(p3l-p2l)/dis(p3l,p2l)),
sind(t):=sin(t/180*%pi),
cosd(t):=cos(t/180*%pi),
tand(t):=tan(t/180*%pi),
asind(sind):=asin(sind)/%pi*180,
acosd(cosd):=acos(cosd)/%pi*180,
atand(tand):=atan(tand)/%pi*180,
a(p1l,p2l,p3l):=
/**/float(acosd((dis(p1l,p2l)^2+dis(p2l,p3l)^2-dis(p1l,p3l)^2)/(2*dis(p1l,p2l)*dis(p2l,p3l)))),
sb(sl,e):=subst(sl,e),
/**/End:"Kansuu")$
(TEISUU:"",
Pi:%pi,
deg:25/180*Pi/**/,
End:"Teisuu")$
(TEJUN1: "1 解析的",
ex10:["ex10, x^2 -2*x +m の平方完成(a=1,b=-2,c=m)と範囲(-2<=x and x<=2)の最大が5となるmは?",
/*=*/float([KKK,["Y=",Y:x^2-2*x+m ,"a=",a:1,"b=",b:-2,"c=",c:m,"xLe=",xLe:-2,"xRe=",xRe:2,"最大5となるm?" ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, Y=a*x^2+b*x+c=a*(x+b/(2*a) )^2-b^2/(4*a)+c=(x-1)^2-1+m",
/**/float([KKK,["Y=",Yh:a*(x+b/(2*a) )^2-b^2/(4*a)+c,(x-1)^2-1+m ]," << 平方完成の公式 >>" ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, a=1,p=1,q=-1+m、a=1で下に凸,軸eA:x=p=1,頂点P(p,q)=(1,-1+m) << 凸、軸・頂点の公式 >>",
/**/float([KKK,["p=",p:-b/(2*a),"q=",q:expand((-b^2+4*a*c)/(4*a)),"eA:",eA:x=p,x=1,"P=",P:[p,q],[2,-1+m] ] ]) ] /*(◆修正)*/,
print(ex12),
ex13:["ex13, 最大値Ymax=sb(x=xLe,Y)=8+m (x=-2) =5 -> m=-3 << 頂点(凸の下・上(aの正・負))、端点(端点の軸からの遠さ)で判断 >>",
/**/float([KKK,["Ymax=",Ymax:expand(sb(x=xLe,Y)),8+m,"=",5,Sm:solve(Ymax=5,m),"=",-3 ]] )] /*(◆修正)*/,
print(ex13),
ans:["ans, m=-3で,最大値y=5 (x=-2)",
/**/float([KKK,[Sm,"m=",-3,"Ymax=",sb(Sm,Ymax),5,"(x=",xLe,-2,")" ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI2:"グラフ準備",print(["y=x^2-2*x+m (a=1,b=-2,c=m)-->y=(x-1)^2-1+mと平方完成し、最大5となるmは?"]) /*~(◆修正)*/,
sl:[m=-%pi/2],
ex21:["ex21, Yのグラフの軸とx軸の交点Px(p,0)=(1,0) << 頂点のx座標 >>",
/**/float([KKK,["Px=",Px:[p,0],[1,0] ] ]) ] /*(◆修正)*/,
print(ex21),
ex22:["ex22, 頂点P(p,q)=(1,-1+m)、y軸交点Y0(0,c)=(0,m)、描画範囲r=8 << 頂点、y軸の交点,描画範囲 >>",
/**/float([KKK,["頂点P=",P:sb(sl,[p,q]),sb(sl,[1,-1+m]),"y軸交点Y0=",Y0:sb(sl,[0,c]),sb(sl,[0,m]),"r=",r:8 ] ]) ] /*(◆修正)*/,
print(ex22),
ex23:["ex23, Y:左端点XL(xLe,sb(x=xLe,Y) )=(-2,8+m),右端点XR(xRe,sb(x=xRe,Y) )=(2,m) << グラフの左端点、右端点 >>",
/**/float([KKK,["XL=",XL:[xLe,sb(x=xLe,Yg:sb(sl,Y) ) ],sb(sl,[-2,8+m] ),"XR=",XR:[xRe,sb(x=xRe,Yg) ],sb(sl,[2,m] ) ] ]) ] /* m=%pi/2をYに代入 *//*(◆修正)*/,
print(ex23),
O:[0,0],A:P,B:Px,C:Y0,D:[0,XL[2]],E:[0,XR[2]],F:XL,G:XR /**/,
dO:[-0.1,-0.1]*r,dA:[0.2,-0.1]*r,dB:[0.2,-0.1]*r,dC:[0.2,0.1]*r,dD:[0.2,0.1]*r,dE:[0.2,0.1]*r,dF:[0.2,0.1]*r,dG:[0.2,0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("P",A+dA),labB:lab("Px",B+dB),labC:lab("Y0",C+dC),labD:lab("8+m",D+dD),labE:lab("m",E+dE),labF:lab("XL",F+dF),labG:lab("XR",G+dG)/*(◆修正)*/,
print(float([labO.labA,labB,labC,labD,labE,labF,labG ]) ) ,
/**/End:"GJunbi")$
(GKAKUNIN3:"グラフを書いて、視覚的に確認",
yM:r*1.2,xM:yM/4.8*6.8,ym:-yM,xm:-xM,
YL:[[Yg,xm,xLe,black,1],[Yg,xLe,xRe,red,3],[Yg,xRe,xM,black,1]],eA:eA,
T:"For Max,Min,HaniAri" /**/,
lab:[10,[labO,labA,labB,labC,labD,labE,labF,labG,labO,labO ] ] /*(◆修正)*/,
pCR:[[O],[B,C,D,E]] /*(◆修正)*/,
pP:[A,F,G] /**/,
print(float([T,YL,eA,pP,pCR,lab,xm,xM,ym,yM] ) ) /**/,
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN4: "4 図形的",print(["y=x^2-2*x+m (a=1,b=-2,c=m)-->y=(x-1)^2-1+m と平方完成し、最大5となるようなmは?"]) /*(◆修正)*/,
ex41:["ex41, グラフより、左端点が最大で、y=sb(x=xLe,Y)=8+m =5 (x=xLe=-2) ->m=-3 << 最大は頂点、端点のグラフでの上下で判断 >>",
/**/float([KKK,["最大はy=",sb(x=xLe,Y),8+m,"=5 ->",solve(sb(x=xLe,Y)=5,m),m=-3 ] ]) ] /*(◆修正)*/,
/**/print(ex41),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI:"●練習20 311 関数 y= -x^2 +6*x +m ( -1<=x and x<=4) の最小が-7になるには、mは?" /*(◆変更部分)*/,
KOUSATU:"平方完成と範囲(-1<=x and x<=4)から、最小が-7になるには?"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
C 最大・最小の応用
▼コマンド番号312
/*=WORK:"312 2次関数の定義域・値域・最大・最小●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●応用例題3・練習21 312 1辺10cmの正方形ABCDに内接する正方形EFGHの面積yの最小値は?" /*(◆変更部分)*/,
KOUSATU:"AB上にEがあり、AE=xcmとするとEF^2=x^2 +(10-x)^2、0<=x<=10だから"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM):=block(
/**/Draw2d(
/*..*/dimensions=[700,500],
/*..*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*..*/color=YL[1][4],line_width =YL[1][5],explicit(YL[1][1],x,YL[1][2],YL[1][3]) ,
/*..*/color=YL[2][4],line_width =YL[2][5],explicit(YL[2][1],x,YL[2][2],YL[2][3]) ,
/*..*/color=YL[3][4],line_width =YL[3][5],explicit(YL[3][1],x,YL[3][2],YL[3][3]) ,
/*..*/color=blue,line_width =3,implicit(eA,x,xm,xM,y,ym,yM),
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM),implicit(x=0,x,xm,xM,y,ym,yM) /* "x,y軸" */,
/*....*/color=red,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[1]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/point_size =2,points(pP)/* "太赤がグラフで、太青が軸・頂点" */,
/*....*/color=black,lab[2][1],lab[2][2],lab[2][3],lab[2][4],lab[2][5],lab[2][6],lab[2][7],
/*....*/lab[2][8],lab[2][9],lab[2][10] ) /* "文字書込" */),
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中文字 */,
ng2pl(p1l,p2l,m,n):=(p1l*n+p2l*m)/(m+n) /*2点と比から内外分点*/,
p2ngl(pl,p1l,p2l):=block([P,p1,p2,ans],
/**/p1:pl-p1l,p2:pl-p2l,P:rat(sqrt(p1.p1)/sqrt(p2.p2)),p1:num(P),p2:denom(P),
/**/print(ng2pl(p1l,p2l,p1,p2)),mes:"内分",
/**/if ng2pl(p1l,p2l,p1,p2)#pl then ((if p1>p2 then p2:-p2 else p1:-p1),mes:"外分"),
/**/ans:[p1,":",p2,mes] /*点を2点の内外分比で表示*/),
xtpl(p1l):=block([ansl],ansl:[p1l[1],-p1l[2]]) /*x軸対称*/,
ytpl(p1l):=block([ansl],ansl:[-p1l[1],p1l[2]]) /*y軸対称*/,
otpl(p1l):=block([ansl],ansl:[-p1l[1],-p1l[2]]) /*原点対称*/,
a12(p1l,p2l):=block([ans],if p2l[1]#p1l[1] then ans:(p2l[2]-p1l[2])/(p2l[1]-p1l[1])
/**/else ans:9999 /*傾き*/),
gl(p1l,p2l):=block([ansl],ansl:[p2l[1]-p1l[1],p2l[2]-p1l[2]]) /*傾き方向*/,
nl(p1l,p2l):=block([ansl],ansl:[p2l[2]-p1l[2],-(p2l[1]-p1l[1])],
/**/ansl:ansl/gcd(ansl[1],ansl[2]) /*垂直方向*/),
dis(p1l,p2l):=block([ans],ans:float(sqrt((p2l-p1l).(p2l-p1l)))) /*距離*/,
pppl(p1l,p2l,p3l):=block([ansl],ansl:((p1l-p2l).(p3l-p2l)/dis(p3l,p2l))*(p3l-p2l)/dis(p3l,p2l)),
sind(t):=sin(t/180*%pi),
cosd(t):=cos(t/180*%pi),
tand(t):=tan(t/180*%pi),
asind(sind):=asin(sind)/%pi*180,
acosd(cosd):=acos(cosd)/%pi*180,
atand(tand):=atan(tand)/%pi*180,
a(p1l,p2l,p3l):=
/**/float(acosd((dis(p1l,p2l)^2+dis(p2l,p3l)^2-dis(p1l,p3l)^2)/(2*dis(p1l,p2l)*dis(p2l,p3l)))),
sb(sl,e):=subst(sl,e),
/**/End:"Kansuu")$
(TEISUU:"",
Pi:%pi,
deg:25/180*Pi/**/,
End:"Teisuu")$
(TEJUN1: "1 解析的",
ex10:["ex10, 1辺10cmの正方形ABCDに内接する正方形EFGHの面積yの最小値は?",
/*=*/float([KKK,["Y=",expand(x^2 +(10-x)^2),"=",Y:2*x^2 -20*x+100 ,"a=",a:2,"b=",b:-20,
"c=",c:100,"xLe=",xLe:0,"xRe=",xRe:10,"最小は?" ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, Y=a*x^2+b*x+c=a*(x+b/(2*a) )^2-b^2/(4*a)+c=2*(x-5)^2+50",
/**/float([KKK,["Y=",Yh:a*(x+b/(2*a) )^2-b^2/(4*a)+c,2*(x-5)^2+50 ]," << 平方完成の公式 >>" ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, a=2,p=5,q=50、a=2で下に凸,軸eA:x=p=5,頂点P(p,q)=(5,50) << 凸、軸・頂点の公式 >>",
/**/float([KKK,["p=",p:-b/(2*a),"q=",q:expand((-b^2+4*a*c)/(4*a)),"eA:",eA:x=p,x=5,"P=",P:[p,q],[5,50] ] ]) ] /*(◆修正)*/,
print(ex12),
ex13:["ex13, 最小値Ymin=sb(x=p,Y)=50 (x=5) << 頂点(凸の下・上(aの正・負))、端点(端点の軸からの遠さ)で判断 >>",
/**/float([KKK,["Ymin=",Ymin:expand(sb(x=p,Y)),50 ]] )] /*(◆修正)*/,
print(ex13),
ans:["ans, x=5で,最小値y=50 (x=5)",
/**/float([KKK,["Ymin=",sb(x=p,Y),50,"(x=",p,5,")" ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI2:"グラフ準備",print(["y=2*x^2-20*x+100 (a=2,b=-20,c=100)-->y=2*(x-5)^2+50と平方完成し、最小は?"]) /*~(◆修正)*/,
sl:[m=-%pi/2] /*与式にパラメータmがあるとき用*/,
ex21:["ex21, Yのグラフの軸とx軸の交点Px(p,0)=(5,0) << 頂点のx座標 >>", /**/float([KKK,["Px=",Px:[p,0],[5,0] ] ]) ] /*(◆修正)*/,
print(ex21),
ex22:["ex22, 頂点P(p,q)=(5,50)、y軸交点Y0(0,c)=(0,100)、描画範囲r=100 << 頂点、y軸の交点,描画範囲 >>",
/**/float([KKK,["頂点P=",P:sb(sl,[p,q]),sb(sl,[5,50]),"y軸交点Y0=",Y0:sb(sl,[0,c]),sb(sl,[0,100]),"r=",r:100 ] ]) ] /*(◆修正)*/,
print(ex22),
ex23:["ex23, Y:左端点XL(xLe,sb(x=xLe,Y) )=(0,100),右端点XR(xRe,sb(x=xRe,Y) )=(10,100) << グラフの左端点、右端点 >>",
/**/float([KKK,["XL=",XL:[xLe,sb(x=xLe,Yg:sb(sl,Y) ) ],sb(sl,[0,100] ),
"XR=",XR:[xRe,sb(x=xRe,Yg) ],sb(sl,[10,100] ) ] ]) ] /* m=%pi/2をYに代入 *//*(◆修正)*/,
print(ex23),
O:[0,0],A:P,B:Px,C:Y0,D:[0,XL[2]],E:[0,XR[2]],F:XL,G:XR /**/,
dO:[-0.1,-0.1]*r,dA:[0.2,-0.1]*r,dB:[0.2,-0.1]*r,dC:[-0.2,0.1]*r,dD:[0.2,0.1]*r,
dE:[0.2,0.1]*r,dF:[0.2,-0.1]*r,dG:[0.2,-0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("P",A+dA),labB:lab("Px",B+dB),labC:lab("Y0",C+dC),
labD:lab("100",D+dD),labE:lab("100",E+dE),labF:lab("XL",F+dF),labG:lab("XR",G+dG)/*(◆修正)*/,
print(float([labO.labA,labB,labC,labD,labE,labF,labG ]) ) ,
/**/End:"GJunbi")$
(GKAKUNIN3:"グラフを書いて、視覚的に確認",
yM:r*1.2,xM:yM/5*7, ym:-yM,xm:-xM,
YL:[[Yg,xm,xLe,black,1],[Yg,xLe,xRe,red,3],[Yg,xRe,xM,black,1]],eA:eA,
T:"For Max,Min in Hani" /**/,
lab:[10,[labO,labA,labB,labC,labD,labE,labF,labG,labO,labO ] ] /**/,
pCR:[[O],[B,C,D,E]] /**/,
pP:[A,F,G] /**/,
print(float([T,YL,eA,pP,pCR,lab,xm,xM,ym,yM] ) ) /**/,
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN4: "4 図形的",print(["y=2*x^2-20*x+100 (a=2,b=-20,c=100)-->y=2*(x-5)^2+50 と平方完成し、0<=x<=10で最小は?"]) /*(◆修正)*/,
ex41:["ex41, グラフより、頂点が最小で、y=sb(x=p,Y)=50 (x=p=5) << 最大は頂点、端点のグラフでの上下で判断 >>",
/**/float([KKK,["最小はy=",sb(x=p,Y),50 ] ]) ] /*(◆修正)*/,
/**/print(ex41),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI:"●応用例題3・練習21 312 隣り合う2辺の和が10cmの長方形の面積yの最大値は?" /*(◆変更部分)*/,
KOUSATU:"一方の辺の長さをxcmとすると他方は10-x(cm)、0<=x<=10だから"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
:
4.2次関数の決定
A 放物線の軸や頂点から関数を決定
▼コマンド番号401
/*=WORK:"401 2次関数の決定●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●例題6 401 頂点が(2,5)で、点(-1,-4)を通る2次関数は?" /*(◆変更部分)*/,
KOUSATU:"頂点が(2,5)だから、平方完成形y=a*(x-p)^2+qを利用して・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM):=block(
/**/Draw2d(
/*..*/dimensions=[700,500],
/*..*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*..*/color=YL[1][4],line_width =YL[1][5],explicit(YL[1][1],x,YL[1][2],YL[1][3]) ,
/*..*/color=blue,line_width =3,implicit(eA,x,xm,xM,y,ym,yM),
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM),implicit(x=0,x,xm,xM,y,ym,yM) /* "x,y軸" */,
/*....*/color=red,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[1]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/point_size =2,points(pP)/* "太赤がグラフで、太青が軸・頂点" */,
/*....*/color=black,lab[2][1],lab[2][2],lab[2][3],lab[2][4],lab[2][5],lab[2][6],lab[2][7],
/*....*/lab[2][8],lab[2][9],lab[2][10] ) /* "文字書込" */),
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中文字 */,
ng2pl(p1l,p2l,m,n):=(p1l*n+p2l*m)/(m+n) /*2点と比から内外分点*/,
p2ngl(pl,p1l,p2l):=block([P,p1,p2,ans],
/**/p1:pl-p1l,p2:pl-p2l,P:rat(sqrt(p1.p1)/sqrt(p2.p2)),p1:num(P),p2:denom(P),
/**/print(ng2pl(p1l,p2l,p1,p2)),mes:"内分",
/**/if ng2pl(p1l,p2l,p1,p2)#pl then ((if p1>p2 then p2:-p2 else p1:-p1),mes:"外分"),
/**/ans:[p1,":",p2,mes] /*点を2点の内外分比で表示*/),
xtpl(p1l):=block([ansl],ansl:[p1l[1],-p1l[2]]) /*x軸対称*/,
ytpl(p1l):=block([ansl],ansl:[-p1l[1],p1l[2]]) /*y軸対称*/,
otpl(p1l):=block([ansl],ansl:[-p1l[1],-p1l[2]]) /*原点対称*/,
a12(p1l,p2l):=block([ans],if p2l[1]#p1l[1] then ans:(p2l[2]-p1l[2])/(p2l[1]-p1l[1])
/**/else ans:9999 /*傾き*/),
gl(p1l,p2l):=block([ansl],ansl:[p2l[1]-p1l[1],p2l[2]-p1l[2]]) /*傾き方向*/,
nl(p1l,p2l):=block([ansl],ansl:[p2l[2]-p1l[2],-(p2l[1]-p1l[1])],
/**/ansl:ansl/gcd(ansl[1],ansl[2]) /*垂直方向*/),
dis(p1l,p2l):=block([ans],ans:float(sqrt((p2l-p1l).(p2l-p1l)))) /*距離*/,
pppl(p1l,p2l,p3l):=block([ansl],ansl:((p1l-p2l).(p3l-p2l)/dis(p3l,p2l))*(p3l-p2l)/dis(p3l,p2l)),
sind(t):=sin(t/180*%pi),
cosd(t):=cos(t/180*%pi),
tand(t):=tan(t/180*%pi),
asind(sind):=asin(sind)/%pi*180,
acosd(cosd):=acos(cosd)/%pi*180,
atand(tand):=atan(tand)/%pi*180,
a(p1l,p2l,p3l):=
/**/float(acosd((dis(p1l,p2l)^2+dis(p2l,p3l)^2-dis(p1l,p3l)^2)/(2*dis(p1l,p2l)*dis(p2l,p3l)))),
sb(sl,e):=subst(sl,e),
/**/End:"Kansuu")$
(TEISUU:"",
Pi:%pi,
deg:25/180*Pi/**/,
End:"Teisuu")$
(TEJUN1: "1 解析的",
ex10:["ex10, 頂点が(2,5)で、点(-1,-4)を通る2次関数は?",
/*=*/float([KKK,["p=",p:2,"q=",q:5,"Y=",Y:a*(x-p)^2+q,a*(x-2)^2 +5,
/**/"x=-1のとき",Y2:sb(x=-1,Y)=-4, 9*a+5=-4 ] ]) ] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, sa=solve(Y2,a)-> a=-1",
/**/float([KKK,["Y=",sa:solve(Y2,a),a=-1 ]," << 平方完成の公式 >>" ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, a=-1,sY=sb(sa,Y) -> Y=-(x-2)^2 +5 << Yにaの解を代入 >>",
/**/float([KKK,["Y=",sY:sb(sa[1],Y),"=",-(x-2)^2 +5 ] ]) ] /*(◆修正)*/,
print(ex12),
ans:["ans, a=-1で,y=-(x-2)^2 +5",
/**/float([KKK,[sa[1],"y=",sY,"=",-(x-2)^2 +5 ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI2:"グラフ準備",print(["頂点が(2,5)で、点(-1,-4)を通る2次関数は、y=a(x-2)+5で"]) /*~(◆修正)*/,
sl:[a=-1] /*与式にパラメータaがあるとき用*/,
ex21:["ex21, Yのグラフの軸とx軸の交点Px(p,0)=(2,0) << 頂点のx座標 >>",
/**/float([KKK,["Px=",Px:[p,0],[2,0] ] ]) ] /*(◆修正)*/,
print(ex21),
ex22:["ex22, 頂点P(p,q)=(2,5)、y軸交点Y0(0,sb([a=-1,x=0],Y))=(0,1)、描画範囲r=5 << 頂点、y軸の交点,描画範囲 >>",
/**/float([KKK,["頂点P=",P:sb(sl,[p,q]),[2,5],"y軸交点Y0=",Y0:sb(sl,[0,sb(x=0,Y)] ),[0,1],"r=",r:5 ] ]) ] /*(◆修正)*/,
print(ex22),
ex23:["ex23, 軸,x=p,x=2,通過点S(s,t)=(-1,-4) -> sb([a=-1,x=-1],Y)=-4 << グラフの通過点 >>",
/**/float([KKK,["eA=",eA:x=p,x=2,"S=",S:[s:-1,t:-4],sb([a=-1,x=s],Y)=t ,[-1,-4] ] ]) ] /* 通過点をYに代入 *//*(◆修正)*/,
print(ex23),
O:[0,0],A:P,B:Px,C:Y0,D:S /**/,
dO:[-0.1,-0.1]*r,dA:[0.2,-0.1]*r,dB:[0.2,-0.1]*r,dC:[-0.2,0.1]*r,dD:[0.2,0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("P",A+dA),labB:lab("Px",B+dB),labC:lab("Y0",C+dC),labD:lab("S",D+dD)/**/,
print(float([labO,labA,labB,labC,labD ]) ) ,
/**/End:"GJunbi")$
(GKAKUNIN3:"グラフを書いて、視覚的に確認",
yM:r*1.2,xM:yM/5*7, ym:-yM,xm:-xM,
YL:[[sb(sl,Y),xm,xM,black,1]],eA:eA,
T:"For Apex & Point" /**/,
lab:[10,[labO,labA,labB,labC,labD,labO,labO,labO,labO,labO ] ] /**/,
pCR:[[O],[B,C,D]] /**/,
pP:[A] /**/,
print(float([T,YL,eA,pP,pCR,lab,xm,xM,ym,yM] ) ) /**/,
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN4: "4 図形的",print(["頂点が(2,5)で、点(-1,-4)を通る2次関数は?"]) /*(◆修正)*/,
ex41:["ex41, グラフより、頂点P(p,q)=(2,5),通過点(s,sb(x=s,Y))=(-1,-4) << 頂点、通過点を確認 >>",
/**/float([KKK,["P=",P,[2,5],"S=",S,[-1,-4] ] ]) ] /*(◆修正)*/,
/**/print(ex41),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI:"●例題6 401 頂点が(-1,-4)で、(2,5)を通る2次関数は?" /*(◆変更部分)*/,
KOUSATU:"頂点が(-1,-4)だから、平方完成形y=a*(x-p)^2+qを利用して・・・"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号402
/*=WORK:"402 2次関数の決定●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●練習22 402 x=-1を軸とし、2点(0,5)、(2,-11)を通る2次関数は?" /*(◆変更部分)*/,
KOUSATU:"軸がx=-1だから、平方完成形y=a*(x-p)^2+qを利用して・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM):=block(
/**/Draw2d(
/*..*/dimensions=[700,500],
/*..*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*..*/color=YL[1][4],line_width =YL[1][5],explicit(YL[1][1],x,YL[1][2],YL[1][3]) ,
/*..*/color=blue,line_width =3,implicit(eA,x,xm,xM,y,ym,yM),
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM),implicit(x=0,x,xm,xM,y,ym,yM) /* "x,y軸" */,
/*....*/color=red,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[1]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/point_size =2,points(pP)/* "太赤がグラフで、太青が軸・頂点" */,
/*....*/color=black,lab[2][1],lab[2][2],lab[2][3],lab[2][4],lab[2][5],lab[2][6],lab[2][7],
/*....*/lab[2][8],lab[2][9],lab[2][10] ) /* "文字書込" */),
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中文字 */,
ng2pl(p1l,p2l,m,n):=(p1l*n+p2l*m)/(m+n) /*2点と比から内外分点*/,
p2ngl(pl,p1l,p2l):=block([P,p1,p2,ans],
/**/p1:pl-p1l,p2:pl-p2l,P:rat(sqrt(p1.p1)/sqrt(p2.p2)),p1:num(P),p2:denom(P),
/**/print(ng2pl(p1l,p2l,p1,p2)),mes:"内分",
/**/if ng2pl(p1l,p2l,p1,p2)#pl then ((if p1>p2 then p2:-p2 else p1:-p1),mes:"外分"),
/**/ans:[p1,":",p2,mes] /*点を2点の内外分比で表示*/),
xtpl(p1l):=block([ansl],ansl:[p1l[1],-p1l[2]]) /*x軸対称*/,
ytpl(p1l):=block([ansl],ansl:[-p1l[1],p1l[2]]) /*y軸対称*/,
otpl(p1l):=block([ansl],ansl:[-p1l[1],-p1l[2]]) /*原点対称*/,
a12(p1l,p2l):=block([ans],if p2l[1]#p1l[1] then ans:(p2l[2]-p1l[2])/(p2l[1]-p1l[1])
/**/else ans:9999 /*傾き*/),
gl(p1l,p2l):=block([ansl],ansl:[p2l[1]-p1l[1],p2l[2]-p1l[2]]) /*傾き方向*/,
nl(p1l,p2l):=block([ansl],ansl:[p2l[2]-p1l[2],-(p2l[1]-p1l[1])],
/**/ansl:ansl/gcd(ansl[1],ansl[2]) /*垂直方向*/),
dis(p1l,p2l):=block([ans],ans:float(sqrt((p2l-p1l).(p2l-p1l)))) /*距離*/,
pppl(p1l,p2l,p3l):=block([ansl],ansl:((p1l-p2l).(p3l-p2l)/dis(p3l,p2l))*(p3l-p2l)/dis(p3l,p2l)),
sind(t):=sin(t/180*%pi),
cosd(t):=cos(t/180*%pi),
tand(t):=tan(t/180*%pi),
asind(sind):=asin(sind)/%pi*180,
acosd(cosd):=acos(cosd)/%pi*180,
atand(tand):=atan(tand)/%pi*180,
a(p1l,p2l,p3l):=
/**/float(acosd((dis(p1l,p2l)^2+dis(p2l,p3l)^2-dis(p1l,p3l)^2)/(2*dis(p1l,p2l)*dis(p2l,p3l)))),
sb(sl,e):=subst(sl,e),
sb2(sl1,sl2,e):=sb(sl1,sb(sl2,e) ),
/**/End:"Kansuu")$
(TEISUU:"",
Pi:%pi,
deg:25/180*Pi/**/,
End:"Teisuu")$
(TEJUN1: "1 解析的",
ex10:["ex10, x=-1を軸とし、2点(0,5)、(2,-11)を通る2次関数は?",
/*=*/float([KKK,["p=",p:-1,"Y=",Y:a*(x-p)^2+q,a*(x+1)^2 +q,
/**/"x=0のときy=5",Y1:sb(x=0,Y)=5, a+q=5,"x=2のときy=-11",Y2:sb(x=2,Y)=-11, a*9+q=-11 ] ]) ] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, sa=solve([Y1,Y2],{a,q])-> 8*a=-16,a=-2,q=7",
/**/float([KKK,["Y=",sa:solve([Y1,Y2],[a,q]),a=-2,q=7 ]," << 連立方程式 >>" ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, a=-2,q=7,sY=sb(sa[1],Y) -> Y=-2*(x+1)^2 +7 << Yにaの解を代入 >>",
/**/float([KKK,["Y=",sY:sb(sa[1],Y),"=",-2*(x+1)^2 +7 ] ]) ] /*(◆修正)*/,
print(ex12),
ans:["ans, a=-2,q=7で,y=-2*(x+1)^2 +7",
/**/float([KKK,[sa[1],"y=",sY,"=",-2*(x+1)^2 +7 ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI2:"グラフ準備",print(["x=-1を軸とし、2点(0,5)、(2,-11)を通る2次関数は、y=a*(x+1)^2+qで"]) /*~(◆修正)*/,
sl:[a=-2,q=7] /*与式にパラメータaがあるとき用*/,
ex21:["ex21, Yのグラフの軸とx軸の交点Px(p,0)=(-1,0) << 頂点のx座標 >>",
/**/float([KKK,["sl=",sl,"Px=",Px:[p,0],[-1,0] ] ]) ] /*(◆修正)*/,
print(ex21),
ex22:["ex22, 頂点P(p,q)=(-1,7)、y軸交点Y0(0,sb(sl,x=0,Y) )=(0,5)、描画範囲r=11 << 頂点、y軸の交点,描画範囲 >>",
/**/float([KKK,["頂点P=",P:sb(sl,[p,q]),[-1,7],"y軸交点Y0=",Y0:[0,sb2(sl,x=0,Y) ],[0,5],"r=",r:11 ] ]) ] /*(◆修正)*/,
print(ex22),
ex23:["ex23, 軸,x=p,x=-1,通過点S1(s1,t1)=(0,5),S2(s2,t2)=(2,-11) ->
(0,sb2(sl,x=0,Y)] )=(0,5),(2,sb(sl,x=2,Y) )=(2,-11) << グラフの通過点 >>",
/**/float([KKK,["eA=",eA:x=p,x=-1,"S1=",S1:[s1:0,t1:5],[0,sb2(sl,x=s1,Y) ],
"S2=",S2:[s2:2,t2:-11],[2,sb2(sl,x=s2,Y) ] ] ]) ] /* 通過点をYに代入 *//*(◆修正)*/,
print(ex23),
O:[0,0],A:P,B:Px,C:Y0,D:S1,E:S2 /**/,
dO:[-0.1,-0.1]*r,dA:[0.2,-0.1]*r,dB:[0.2,-0.1]*r,dC:[-0.2,0.1]*r,dD:[0.2,0.1]*r,dE:[0.2,0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("P",A+dA),labB:lab("Px",B+dB),labC:lab("Y0",C+dC),labD:lab("S1",D+dD),
labE:lab("S2",E+dE)/**/,
print(float([labO,labA,labB,labC,labD,labE ]) ) ,
/**/End:"GJunbi")$
(GKAKUNIN3:"グラフを書いて、視覚的に確認",
yM:r*1.2,xM:yM/5*7, ym:-yM,xm:-xM,
YL:[[sb(sl,Y),xm,xM,black,1]],eA:eA,
T:"For Apex & Point" /**/,
lab:[10,[labO,labA,labB,labC,labD,labE,labO,labO,labO,labO ] ] /**/,
pCR:[[O],[B,C,D,E]] /**/,
pP:[A] /**/,
print(float([T,YL,eA,pP,pCR,lab,xm,xM,ym,yM] ) ) /**/,
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN4: "4 図形的",print(["x=-1を軸とし、2点(0,5)、(2,-11)を通る2次関数は?"]) /*(◆修正)*/,
ex41:["ex41, グラフより、軸x=-1,通過点(s1,sb2(sl,x=s1,Y))=(0,5),(s2,sb2(sl,x=s2,Y))=(2,-11) << 頂点、通過点を確認 >>",
/**/float([KKK,["eA=",eA,"S1=",S1,[0,5],"S2=",S2,[2,-11] ] ]) ] /*(◆修正)*/,
/**/print(ex41),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI:"●練習22 402 軸x=1をもち、2点(-1,-4)、(2,5)を通る2次関数は?" /*(◆変更部分)*/,
KOUSATU:"軸がx=1だから、平方完成形y=a*(x-p)^2+qを利用して・・・"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
B 放物線上の3点から関数を決定
▼コマンド番号403
/*=WORK:"403 3元連立1次方程式の解法●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●例10 403 次の3元連立1次方程式,
x -y +z=2, 4*x +2*y +z=-1, 9*x +3*y +z=2 の解は?" /* "(◆修正部分)" */,
KOUSATU:"zを消去するとか、定数と見るとかして、・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,YL,eA,pP,pCR,lab,xm,xM,ym,yM):=block(
/**/Draw2d(
/*..*/dimensions=[700,500],
/*..*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*..*/color=YL[1][4],line_width =YL[1][5],explicit(YL[1][1],x,YL[1][2],YL[1][3]) ,
/*..*/color=YL[2][4],line_width =YL[2][5],explicit(YL[2][1],x,YL[2][2],YL[1][3]) ,
/*..*/color=YL[3][4],line_width =YL[3][5],explicit(YL[3][1],x,YL[3][2],YL[1][3]) ,
/*..*/color=blue,line_width =3,implicit(eA,x,xm,xM,y,ym,yM),
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM),implicit(x=0,x,xm,xM,y,ym,yM) /* "x,y軸" */,
/*....*/color=red,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =false,point_size =1,points(pCR[1]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/point_size =2,points(pP)/* "太赤がグラフで、太青が軸・頂点" */,
/*....*/color=black,lab[2][1],lab[2][2],lab[2][3],lab[2][4],lab[2][5],lab[2][6],lab[2][7],
/*....*/lab[2][8],lab[2][9],lab[2][10] ) /* "文字書込" */),
lab(nam,p):=label([nam,p[1],p[2]]) /* 図中文字 */,
ng2pl(p1l,p2l,m,n):=(p1l*n+p2l*m)/(m+n) /*2点と比から内外分点*/,
p2ngl(pl,p1l,p2l):=block([P,p1,p2,ans],
/**/p1:pl-p1l,p2:pl-p2l,P:rat(sqrt(p1.p1)/sqrt(p2.p2)),p1:num(P),p2:denom(P),
/**/print(ng2pl(p1l,p2l,p1,p2)),mes:"内分",
/**/if ng2pl(p1l,p2l,p1,p2)#pl then ((if p1>p2 then p2:-p2 else p1:-p1),mes:"外分"),
/**/ans:[p1,":",p2,mes] /*点を2点の内外分比で表示*/),
xtpl(p1l):=block([ansl],ansl:[p1l[1],-p1l[2]]) /*x軸対称*/,
ytpl(p1l):=block([ansl],ansl:[-p1l[1],p1l[2]]) /*y軸対称*/,
otpl(p1l):=block([ansl],ansl:[-p1l[1],-p1l[2]]) /*原点対称*/,
a12(p1l,p2l):=block([ans],if p2l[1]#p1l[1] then ans:(p2l[2]-p1l[2])/(p2l[1]-p1l[1])
/**/else ans:9999 /*傾き*/),
gl(p1l,p2l):=block([ansl],ansl:[p2l[1]-p1l[1],p2l[2]-p1l[2]]) /*傾き方向*/,
nl(p1l,p2l):=block([ansl],ansl:[p2l[2]-p1l[2],-(p2l[1]-p1l[1])],
/**/ansl:ansl/gcd(ansl[1],ansl[2]) /*垂直方向*/),
dis(p1l,p2l):=block([ans],ans:float(sqrt((p2l-p1l).(p2l-p1l)))) /*距離*/,
pppl(p1l,p2l,p3l):=block([ansl],ansl:((p1l-p2l).(p3l-p2l)/dis(p3l,p2l))*(p3l-p2l)/dis(p3l,p2l)),
sind(t):=sin(t/180*%pi),
cosd(t):=cos(t/180*%pi),
tand(t):=tan(t/180*%pi),
asind(sind):=asin(sind)/%pi*180,
acosd(cosd):=acos(cosd)/%pi*180,
atand(tand):=atan(tand)/%pi*180,
a(p1l,p2l,p3l):=
/**/float(acosd((dis(p1l,p2l)^2+dis(p2l,p3l)^2-dis(p1l,p3l)^2)/(2*dis(p1l,p2l)*dis(p2l,p3l)))),
sb(sl,e):=subst(sl,e),
sb2(sl1,sl2,e):=sb(sl1,sb(sl2,e) ),
/**/End:"Kansuu")$
(TEISUU:"",
Pi:%pi,
deg:25/180*Pi/**/,
End:"Teisuu")$
(TEJUN1: "1 解析的",
ex10:["ex10, x -y +z=2, 4*x +2*y +z=-1, 9*x +3*y +z=2 の解は?",
/*=*/float([KKK,["e1=",e1: x -y +z=2,"e2=",e2:4*x +2*y +z=-1,"e3=",e3:9*x +3*y +z=2 ] ]) ] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, e12=e2-e1 -> 3*x+3*y=-3, e13=e3-e1 -> 8*x+4*y=0,",
/**/float([KKK,["e12=",e12:e2-e1,3*x+3*y=-3,"e13=",e13:e3-e1,8*x+4*y=0 ]," << 連立方程式 >>" ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, sxy=solve([e12,e13],[x,y] ) -> x=1, y=-2, -> sz=solve([sb(sxy[1],e1),z) -> z=-1 << Yにaの解を代入 >>",
/**/float([KKK,["sxy=",sxy:solve([e12,e13],[x,y]) ,"x=1, y=-2","sz=",sz:solve(sb(sxy[1],e1),z),"z=-1" ] ]) ] /*(◆修正)*/,
print(ex12),
ans:["ans, x=1, y=-2, z=-1",
/**/float([KKK,["sxyz=",sxyz:solve([e1,e2,e3],[x,y,z]) ] ]) ] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI2:"x -y +z=2, 4*x +2*y +z=-1, 9*x +3*y +z=2 の解は?" /*~(◆修正)*/,
sl:[z=-2] /*与式にパラメータがあるとき用*/,
ex21:["ex21, e11:sb(sl,rhs(solve(e1,y)[1] ) ), y=x+z-2 ,Y1=(0,z-2),<< yで解き,Y1,r >>",
/**/float([KKK,["sl=",sl,"e11=",e11:sb(sl,rhs(solve(e1,y)[1] ) ),sb(sl,x+z-2),
"Y1=",Y1:[0,sb2(sl,x=0,e11)],[0,sb(sl,z-2)] ] ]),r:5 ] /*(◆修正)*/,
print(ex21),
ex22:["ex22, e21:sb(sl,rhs(solve(e2,y)[1] ) ), y=(-4*x-z-1)/2 ,P12=((-z+1)/2,(z-3)/2),<< yで解き,P12 >>",
/**/float([KKK,["sl=",sl,"e21=",e21:sb(sl,rhs(solve(e2,y)[1] ) ),sb(sl,-1/2*(4*x+z+1) ),
"P12=",P12:sb(sl,[rhs((s12:solve([e1,e2],[x,y])[1])[1]),rhs(s12[2]) ] ),sb(sl,[(-z+1)/2,(z-3)/2]) ] ]) ] /*(◆修正)*/,
print(ex22),
ex23:["ex23, e31:sb(sl,rhs(solve(e3,y)[1] ) ), y=(-9*x-z+2)/3 ,P13=((-z+2)/3,(2*z-4)/3),<< yで解き,P13 >>",
/**/float([KKK,["sl=",sl,"e31=",e31:sb(sl,rhs(solve(e3,y)[1] ) ),sb(sl,-1/3*(9*x+z-2) ),
"P13=",P13:sb(sl,[rhs((s13:solve([e1,e3],[x,y])[1])[1]),rhs(s13[2]) ] ),sb(sl,[(-z+2)/3,(2*z-4)/3]) ] ]) ] /*(◆修正)*/,
print(ex23),
O:[0,0],A:Y1,B:P12,C:P13 /**/,
dO:[-0.1,-0.1]*r,dA:[0.2,-0.1]*r,dB:[0.2,-0.1]*r,dC:[-0.2,0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("Y1",A+dA),labB:lab("P12((-z+1)/2,)",B+dB),labC:lab("P13((-z+2)/3,)",C+dC) /**/,
print(float([labO,labA,labB,labC ]) ) ,
/**/End:"GJunbi")$
(GKAKUNIN3:"グラフを書いて、視覚的に確認",
yM:r*1.2,xM:yM/5*7, ym:-yM,xm:-xM,
EXPL:[[e11,xm,xM,black,1],[e21,xm,xM,black,1],[e31,xm,xM,black,1]],IMP:x=0,
T:"For Apex & Point" /**/,
lab:[10,[labO,labA,labB,labC,labO,labO,labO,labO,labO,labO ] ] /**/,
pCR:[[A],[B,C]] /**/,
pP:[O] /**/,
print(float([T,EXPL,IMP,pP,pCR,lab,xm,xM,ym,yM] ) ) /**/,
gr(T,EXPL,IMP,pP,pCR,lab,xm,xM,ym,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN4: "4 図形的",print(["x -y +z=2, 4*x +2*y +z=-1, 9*x +3*y +z=2 の解は?"]) /*(◆修正)*/,
ex41:["ex41, グラフより、P12,P13が一致するには、(-z+1)/2=(-z+2)/3 -> z=-1,x=1,y=-2 << 3直線が1点で交わる >>",
/**/float([KKK,["sxyz=",solve([e1,e2,e3],[x,y,z]),"x=",1,"y=",-2,"z=",-1 ] ]) ] /*(◆修正)*/,
/**/print(ex41),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI:"●例10 403 次の3元連立1次方程式,
x -y +z=-4, 4*x +2*y +z=-7, 9*x +3*y +z=5 の解は?" /* "(◆修正部分)" */,
/*
*/
*/END:"Finish"$
▼コマンド番号404
●練習23
3元連立1次方程式の解法●●●●●●●●●●●●●●●●
kill(all) /* "404 3元連立1次方程式の解法(Maxima on lineでは削除)" */$
MONDAI:"404 次の3元連立1次方程式の解は";
e1:a +b +c=0 /* "(◆修正部分)" */;
e2:4*a +2*b +c=0 /* "(◆修正部分)" */;
e3:9*a +3*b +c=4 /* "(◆修正部分)" */;
e21:e2-e1 /* "e2からe1を引いて" */;
e31:e3-e1 /* "e3からe1を引いて" */;
aL:solve([e21,e31],[a,b]) /* "e21,e31からa,bについて解いて" */;
e10:subst(aL[1],e1) /* "a,bの値をe1に代入して" */;
cL:solve(e10,c) /* "cについて解いて" */;
aL:[[aL[1][1],aL[1][2],cL[1]]] /* "a,b,cの解のリスト" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
e1:a -b +c=1 /* "(◆修正部分)" */;
e2:4*a -2*b +c=-6 /* "(◆修正部分)" */;
e3:9*a +3*b +c=9 /* "(◆修正部分)" */;
▼コマンド番号405
●例題7
2次関数の決定●●●●●●●●●●●●●●●●
kill(all) /* "405 2次関数の決定(Maxima on lineでは削除)" */$
MONDAI:"404 3点(1,5)、(2,1)、(3,-7)を通る2次関数は" /* "(◆修正部分)" */;
pP1:[[1,5]];pP2:[[2,1]];pP3:[[3,-7]] /* "指定の通過点3つをもち(◆修正時変更++++)" */;
Y0:a*x^2 +b*x +c /* "2次関数をa,b,cで表して" */;
eP1:subst(x=pP1[1][1],Y0)=pP1[1][2] /* "指定の点1を通るので" */;
eP2:subst(x=pP2[1][1],Y0)=pP2[1][2] /* "指定の点2を通るので" */;
eP3:subst(x=pP3[1][1],Y0)=pP3[1][2] /* "指定の点3を通るので" */;
aL:solve([eP1,eP2,eP3],[a,b,c]) /* "a,b,cについて解いて" */;
Y:subst(aL[1],Y0) /* "a,b,cの値をY0に代入して" */;
kakuninn:"グラフでチェックするために";
Y1:a*(x +b/(2*a))^2 -(b^2-4*a*c)/(4*a) $
eA:x=-b/(2*a) $
pP:[[-b/(2*a),-(b^2-4*a*c)/(4*a)]] $
Y1:subst(aL[1],Y1)
/* "平方完成して" */;
eA:subst(aL[1],eA)
/* "軸と" */;
pP:subst(aL[1],pP)
/* "頂点と" */;
totu:"n" /* "●上に凸:n、下に凸:u を確認して●(◆修正時変更++++)" */;
xS:-5;xL:5;yS:-10;yL:10 /* "グラフ描画範囲を確認して(◆修正時変更++++)" */;
kakuninn:"グラフでチェックすると、";
wxdraw2d(yrange=[yS,yL] /* "()" */,
/**/line_width =3,
/**/color=red,explicit(Y,x,xS,xL) /* "()" */,
/**/color=blue,point_type =6,
/**/line_width =3,implicit(eA,x,xS,xL,y,yS,yL),
/**/point_size =2,points(pP)
/**//* "太赤が定義域のグラフで、太青が軸・頂点" */,
/**/color=green,point_size =2,points(pP1)
/**//* "通過点" */,
/**/color=green,point_size =2,points(pP2)
/**//* "通過点" */,
/**/color=green,point_size =2,points(pP3)
/**//* "通過点" */,
/**/color=black,line_width =1,
/**/implicit(y=0,x,xS,xL,y,yS,yL) /* "(x軸)" */,
/**/implicit(x=0,x,xS,xL,y,yS,yL) /* "(y軸)" */
/**/) /* "赤が定義域外" */;
print(pP) /* "頂点の座標" */;
print(pP1) /* "通過点1の座標" */;
print(pP2) /* "通過点2の座標" */;
print(pP3) /* "通過点3の座標" */;
print(y=Y);
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"3点(2,-2)、(3,5)、(-1,1)を通る2次関数は" /* "(◆修正部分)" */;
:
補充問題
▼コマンド番号20201
●補充問題4
2次関数の最大・最小●●●●●●●●●●●●●●●●
kill(all) /* "20201 2次関数の最大・最小(Maxima on lineでは削除)" */$
MONDAI:"20201 下の関数の最小値について、";
gr2(T,Y,J,P,xm,xM,ym,yM):=block([Z],
/**/Z:solve(Y=0,x) /* "ゼロ点を求めて" */,
/**/if imagpart(rhs(Z[1]))#0 then Z:"なし" /* "確認し" */,
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "凹凸と値域を確認し" */,
/*....*/color=red,
/*....*/line_width =3,explicit(Y,x,xm,xM) /* "Yを太赤で描き" */,
/*....*/color=blue,point_type =6,
/*....*/line_width =3,implicit(J,x,xm,xM,y,ym,yM) /* "軸と" */,
/*....*/point_size =2,points(P) /* "頂点を描き" */,
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM) /* "x軸と" */,
/*....*/implicit(x=0,x,xm,xM,y,ym,yM)) /* "y軸を描く" */,
/**/print("y=",Y," 太赤がグラフ、太青が軸・頂点"),
/**/print(J," 軸"),
/**/print(P[1]," 頂点"),
/**/print(Z," ゼロ点")
/**/)$
Y0:x^2 +2*m*x +m /* "この関数について(◆修正部分)" */$
MONNDAI1:"最小値をmの式で表せ" /* "(◆修正部分)" */$
MONNDAI2:"最小値が-2なら、mの値は" /* "(◆修正部分)" */$
Y:(x +m)^2 -m^2 +m
/* "平方完成して(◆修正時変更++++)" */;
eA:x=-m /* "軸は(◆修正時変更++++)" */;
pP:[[rhs(eA),subst(x=rhs(eA),Y)]]
/* "頂点を確認して" */;
KAITOU1:"最小値y=-m^2+m (x=-m)" /* "◆◆最小値,xの値を確認すると◆◆(◆修正時変更++++)" */;
mL:solve(subst(x=rhs(eA),Y)=-2,m) /* "◆◆最小値を-2として、mを解くと◆◆(◆修正時変更++++)" */;
M:1 /* "mの解を、リストの中の何個目か指定して(◆修正時変更++++)" */;
Y:subst(mL[M],Y)
/* "指定したmを関数と" */;
eA:subst(mL[M],eA)
/* "軸と" */;
pP:subst(mL[M],pP)
/* "頂点に代入" */;
totu:"u" /* "●上に凸:n、下に凸:u を確認して●(◆修正時変更++++)" */;
tugi:5 /* "ここまで、問題ないなら、tugiを5として、進む" */;
if tugi=5 then(
/**/kakuninn:"グラフでチェック",
/**/gr2(totu,Y,eA,pP,-5,5,-10,10));
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
Y0:-x^2 +2*m*x +m /* "この関数について(◆修正部分)" */$
MONNDAI1:"最大値をmの式で表せ" /* "(◆修正部分)" */$
MONNDAI2:"最大値が6なら、mの値は" /* "(◆修正部分)" */$
▼コマンド番号20202
●補充問題5
2次関数の最大・最小●●●●●●●●●●●●●●●●
kill(all) /* "20202 2次関数の最大・最小(Maxima on lineでは削除)" */$
MONDAI:"20202 下の関数の最小値について、";
gr21(Y,xL,eL,xR,eR,xm,xM,ym,yM):=block([T:"u",J,P,Z],
/**/if subst(x=1000,Y)>0 then T:"u" else T:"n" /* "凹:u,凸:nを確認し" */,
/**/Z:solve(Y=0,x) /* "ゼロ点を求めて" */,
/**/if imagpart(rhs(Z[1]))#0 then Z:"なし" /* "確認し" */,
/**/J:solve(diff(Y)=0,x)[1] /* "軸を確認し" */,
/**/P:[[rhs(J),subst(J,Y)]] /* "頂点を確認し、グラフを書く" */,
/**/pebL:[[xm,ym]],if eL=1 then pebL:endcons([xL,subst(x=xL,Y)],pebL),
/**/if eR=1 then pebL:endcons([xR,subst(x=xR,Y)],pebL),
/**/pibL:[[xm,ym]],if eL=0 then pibL:endcons([xL,subst(x=xL,Y)],pibL),
/**/if eL=0 then pibL:endcons([xR,subst(x=xR,Y)],pibL),
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "凹凸と値域を確認し" */,
/*....*/color=red,
/*....*/line_width =1,explicit(Y,x,xm,xM) /* "Yを細赤で描き" */,
/*....*/line_width =3,explicit(Y,x,xL,xR) /* "Y(定義域)を太赤で描き" */,
/*....*/point_type = filled_circle,point_size = 2,points(pebL) /* "境界点(含)を描き" */,
/*....*/point_type = circle,point_size = 2,points(pibL) /* "境界点(不含)を描き" */,
/*....*/color=white,point_type = filled_circle,point_size = 2,points([[xm,ym]])
/*....*//* "境界点(ダミー)を消し" */,
/*....*/color=blue,point_type =6,
/*....*/line_width =3,implicit(J,x,xm,xM,y,ym,yM) /* "軸と" */,
/*....*/point_size =2,points(P) /* "頂点を描き" */,
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM) /* "x軸と" */,
/*....*/implicit(x=0,x,xm,xM,y,ym,yM)) /* "y軸を描く" */,
/**/print("y=",Y," 太赤がグラフ、太青が軸・頂点"),
/**/print(J," 軸"),
/**/print(P[1]," 頂点"),
/**/print(Z," ゼロ点"),
/**/print(rest(pebL)," 境界点")
/**/)$
Y0:x^2 -2*a*x /* "この関数(0<=x<=2)について" */$
MONNDAI:"a<0の場合の最小値を求めよ。" /* "(◆修正部分)" */$
xL:0;xR:2 /* "定義域を確認して" */;
Y:(x -a)^2 -a^2
/* "平方完成して" */;
eJ:x=a /* "軸を確認" */;
pP:[[rhs(eJ),subst(x=rhs(eJ),Y)]]
/* "頂点を確認" */;
totu:"u" /* "上に凸:n、下に凸:u を確認" */;
xP:0 /* "軸・頂点が定義域内か外かを確認、最小を与えるxは(◆修正時変更++++)" */;
yP:subst(x=xP,Y0) /* "そのxをYに代入して" */;
kaitou:"最小値y=0 (x=0)" /* "◆◆最小値,xの値を確認すると◆◆(◆修正時変更++++)" */;
A:-1 /* "例えば、a=-1として(◆修正時変更++++)" */;
Y:subst(a=A,Y) /* "a=Aを関数に代入" */;
eJ:subst(a=A,eJ) /* "軸に代入" */;
pP:subst(a=A,pP) /* "頂点に代入" */;
kakuninn:"グラフでチェック";
gr21(Y,xL,1,xR,1,-5,5,-10,10) /* "定義域が境界を含む(1)、含まない(0)" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
monndai2:"0<=a<=2の場合の最小値を求めよ。" /* "(◆修正部分)" */$
▼コマンド番号20203
●補充問題6
2次関数の決定●●●●●●●●●●●●●●●●
kill(all) /* "20203 2次関数の決定(Maxima on lineでは削除)" */$
MONDAI:"20203 下の問題において、";
gr2(T,Y,J,P,Q,xm,xM,ym,yM):=block([Z],
/**/Z:solve(Y=0,x) /* "ゼロ点を求めて" */,
/**/if imagpart(rhs(Z[1]))#0 then Z:"なし" /* "確認し" */,
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "凹凸と値域を確認し" */,
/*....*/color=red,
/*....*/line_width =3,explicit(Y,x,xm,xM) /* "Yを太赤で描き" */,
/*....*/color=blue,point_type =6,
/*....*/line_width =3,implicit(J,x,xm,xM,y,ym,yM) /* "軸と" */,
/*....*/point_size =2,points(P) /* "頂点を描き" */,
/*....*/point_size =1,points(Q) /* "頂点を描き" */,
/*....*/color=black,line_width =1,
/*....*/implicit(y=0,x,xm,xM,y,ym,yM) /* "x軸と" */,
/*....*/implicit(x=0,x,xm,xM,y,ym,yM)) /* "y軸を描く" */,
/**/print("y=",Y," 太赤がグラフ、太青が軸・頂点"),
/**/print(J," 軸"),
/**/print(P[1]," 頂点"),
/**/print(Z," ゼロ点")
/**/)$
MONNDAI:"3点(3,0)、(-1,0)、(2,6)を通る2次関数は" /* "(◆修正部分)" */;
pQ:[[3,0],[-1,0],[2,6]] /* "通る点リスト(◆修正部分)" */;
Y0:a*(x-pQ[1][1])*(x-pQ[2][1]) /* "2点(3,0)、(-1,0)を通る2次関数は(◆修正部分)" */;
aL:solve(subst(x=pQ[3][1],Y0)=pQ[3][2],a) /* "点(2,6)を通るので、aは(◆修正時変更++++)" */;
Y:expand(subst(aL[1],Y0)) /* "求めたaを代入して、展開●この式により次行を変更●" */;
Y:-2*(x-1)^2 +2 +6 /* "平方完成して(◆修正時変更++++)" */;
eJ:x=1 /* "軸は(◆修正時変更++++)" */;
pP:[[rhs(eJ),subst(x=rhs(eJ),Y)]]
/* "頂点を確認して" */;
totu:"n" /* "●上に凸:n、下に凸:u を確認して●(◆修正時変更++++)" */;
kakuninn:"グラフでチェック";
gr2(totu,Y,eJ,pP,pQ,-5,5,-10,10)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
monndai2:"グラフの頂点がy=2*x^2+4*x+1と同じで、y軸と(0,2)で交わる2次関数は" /* "(◆修正部分)" */;
Y00:2*(x+1)^2-2+1 /* "平方完成して(◆修正部分)" */;
pP:[[-1,-1]] /* "頂点を確認して(◆修正部分)" */;
pQ:[[-1,-1],[-1,-1],[0,2]] /* "通る点リスト、1,2つめに頂点(-1,-1)、3つめに(0,2)(◆修正部分)" */;
Y0:a*(x +1)^2-1 /* "この頂点を通る2次関数は(◆修正部分)" */;