:
Maxima数学I自習教材開発
教材の概要
2次関数 3)2次方程式と2次不等式
5.2次方程式
6.2次関数のグラフとx軸の位置関係
7.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
:
第3節2次方程式と2次不等式
5.2次方程式
A 因数分解を使う解き方
▼コマンド番号501
●例11
因数分解で解く●●●●●●●●●●●●●●●●
kill(all) /* "501 因数分解で解く(Maxima on lineでは削除)" */$
MONDAI:"501 下の問題の方程式について";
gr20(Y,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)]] /* "頂点を確認し、グラフを書く" */,
/**/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(MONDAI1),
/**/print("y=",Y," 太赤がグラフ、太青が軸・頂点"),
/**/print(J," 軸"),
/**/print(P[1]," 頂点"),
/**/print(Z," ゼロ点")
/**/)$
xp(e1,e2,M):=block([bL,k,jM],
/**/jM:hipow(expand(e1*e2),M) /* "積の次数を確認し" */,
/**/bL:["","..","...."] /* "出力の空白を設定し" */,
/**/e:expand(e1*e2),
/**/(print(e1) /* "第1因子" */,
/**/print(e2) /* "第2因子を縦に並べ" */,
/**/for k:0 thru jM do(
/*....*/print(bL[k+1],coeff(e,M,(jM-k)), bL[jM-k+1],jM-k,"次の係数")
/*....*/) /* "xの各次数の係数を(◆直前の2式から求め◆)" */,
/**/print(rat(e,M)))) /* "整理する" */$
MONDAI1:"方程式x^2 -2*x -3 =0 の解は" /* "(◆修正部分)" */;
e:x^2 -2*x -3 /* "方程式の左辺を(◆修正部分)" */;
e11:x-3 /* "第1因子(◆修正時訂正)" */;
e12:x+1 /* "第2因子を確認して(◆修正時訂正)" */;
xp(e11,e12,x) /* "展開して確認して" */;
e1:factor(e) /* "因数分解を確認" */;
xL0:[solve(e11=0,x)[1],solve(e12=0,x)[1]] /* "各因子を0にするxを求めて" */;
xL:solve(e=0,x) /* "maximaの直接処理と比較して" */;
chekku:"グラフでチェック"$
gr20(e,-5,5,-10,10)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"方程式x^2 +2*x -3 =0 の解は" /* "(◆修正部分)" */;
e:x^2 +2*x -3 /* "方程式の左辺を(◆修正部分)" */;
▼コマンド番号502
●練習25
因数分解で解く●●●●●●●●●●●●●●●●
kill(all) /* "502 因数分解で解く(Maxima on lineでは削除)" */$
MONDAI:"502 下の問題の方程式について";
gr20(Y,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)]] /* "頂点を確認し、グラフを書く" */,
/**/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(MONDAI1),
/**/print("y=",Y," 太赤がグラフ、太青が軸・頂点"),
/**/print(J," 軸"),
/**/print(P[1]," 頂点"),
/**/print(Z," ゼロ点")
/**/)$
xp(e1,e2,M):=block([bL,k,jM],
/**/jM:hipow(expand(e1*e2),M) /* "積の次数を確認し" */,
/**/bL:["","..","...."] /* "出力の空白を設定し" */,
/**/e:expand(e1*e2),
/**/(print(e1) /* "第1因子" */,
/**/print(e2) /* "第2因子を縦に並べ" */,
/**/for k:0 thru jM do(
/*....*/print(bL[k+1],coeff(e,M,(jM-k)), bL[jM-k+1],jM-k,"次の係数")
/*....*/) /* "xの各次数の係数を(◆直前の2式から求め◆)" */,
/**/print(rat(e,M)))) /* "整理する" */$
MONDAI1:"x^2 -5*x +6 =0 の解は" /* "(◆修正部分)" */;
e:x^2 -5*x +6 /* "方程式の左辺を(◆修正部分)" */;
e11:x-3 /* "第1因子(◆修正時訂正)" */;
e12:x-2 /* "第2因子を確認して(◆修正時訂正)" */;
xp(e11,e12,x) /* "展開して確認して" */$
e1:factor(e) /* "因数分解を確認" */;
xL0:[solve(e11=0,x)[1],solve(e12=0,x)[1]] /* "各因子を0にするxを求めて" */;
xL:solve(e=0,x) /* "maximaの直接処理と比較して" */;
chekku:"グラフでチェック"$
gr20(e,-5,5,-10,10)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"3*x^2 -4*x -4 =0 の解は" /* "(◆修正部分)" */;
e:3*x^2 -4*x -4 /* "方程式の左辺を(◆修正部分)" */;
B 2次方程式の解の公式
▼コマンド番号503
●例12
解の公式で解く●●●●●●●●●●●●●●●●
kill(all) /* "503 解の公式で解く(Maxima on lineでは削除)" */$
MONDAI:"503 下の問題の方程式について";
gr20(Y,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)]] /* "頂点を確認し、グラフを書く" */,
/**/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(MONDAI1),
/**/print("y=",Y," 太赤がグラフ、太青が軸・頂点"),
/**/print(J," 軸"),
/**/print(P[1]," 頂点"),
/**/print(Z," ゼロ点")
/**/)$
MONDAI1:"3*x^2 -7*x +1 =0 の解は" /* "(◆修正部分)" */;
e:3*x^2 -7*x +1 /* "方程式の左辺から(◆修正部分)" */;
x1:1/(2*(3))*(-(-7) +sqrt((-7)^2-4*(3)*(1))) /* "解の公式による大きい方(◆修正時訂正)" */;
x2:1/(2*(3))*(-(-7) -sqrt((-7)^2-4*(3)*(1))) /* "解の公式による小さい方(◆修正時訂正)" */;
xL:solve(e=0,x) /* "maximaの解を確認し"*/;
chekku:"グラフでチェック"$
gr20(e,-5,5,-10,10)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"3*x^2 +7*x +1 =0 の解は" /* "(◆修正部分)" */;
e:3*x^2 +7*x +1 /* "方程式の左辺から(◆修正部分)" */;
▼コマンド番号504
/*WORK:"504 解の公式で解く●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●練習26 504 x^2 +7*x +4 =0 の解は?" /*(◆変更部分)*/,
KOUSATU:"解の公式に当てはめると、a=1,b=7,c=4,・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,c0,c1,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=c0[1],
/*....*/implicit(c0[2],x,xm,xM,y,ym,yM),
/*....*/color=c1[1],
/*....*/implicit(c1[2],x,xm,xM,y,ym,yM),
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print("x^2 +7*x +4 =0 の解は?") /*~(◆修正)*/,
ex10:["ex10, e:x^2 +7*x +4 =0として、a=1,b=7,c=4",
/*=*/float([KKK,Tejun1:["e:",e:x^2+7*x+4=0,"a=",a:1,"b=",b:7,"c=",c:4 ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, x1=(-b-sqrt(b^2-4*a*c))/(2*a)=(-7-sqrt(7^2-4*1*4))/(2*1)=(-7-sqrt(33))/2] << 解の公式 >>",
/**/float([KKK,["x1=",x1:(-b-sqrt(b^2-4*a*c))/(2*a),"=",(-7-sqrt(33))/2 ]] )] /*(◆修正)*/,
print(ex11),
ex12:["ex12, x2=(-b+sqrt(b^2-4*a*c))/(2*a)=(-7+sqrt(7^2-4*1*4))/(2*1)=(-7+sqrt(33))/2] << 解の公式 >>",
/**/float([KKK,["x2=",x2:(-b+sqrt(b^2-4*a*c))/(2*a),"=",(-7+sqrt(33))/2 ]] )] /*(◆修正)*/,
print(ex12),
ex13:["ex13, x1=(-7-sqrt(33))/2,x2=(-7+sqrt(33))/2 << まとめ >>",
/**/float([KKK,["x1=",(-7-sqrt(33))/2,"x2=",(-7+sqrt(33))/2 ]] )] /*(◆修正)*/,
print(ex13),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print(Tejun1),print("e:x^2 +7*x +4 =0として、a=1,b=7,c=4") /*~(◆修正)*/,
O:[0,0],A:[x1,0],B:[x2,0],xp:-b/(2*a),yp:subst(x=xp,lhs(e)),C:[xp,yp],D:[xp,0],r:10 /*(◆修正)*/,
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 /**/,
labO:lab("O",O+dO), labA:lab("X1",A+dA), labB:lab("X2",B+dB), labC:lab("P",C+dC) , labD:lab("Q",D+dD) ,
print(float([labO,labA,labB,labC,labD] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("e:x^2 +7*x +4 =0として、a=1,b=7,c=4") /*~(◆修正)*/,
yL:r*1.2,xL:yL/4.8*6.8,
c0:[red,y=lhs(e)],c1:[blue,x=xp],
T:"For x1,x2" /*(◆修正)*/,
/*O:[xL,yL],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labC,labD,labO,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O]],[false,[A,B]]] /**/,
pB:[[false,[C,D]]] /**/,
print(float(["print",T,c0,c1,pB,pCR,lab,-xL,xL,-yL,yL] ) ) /**/,
gr(T,c0,c1,pB,pCR,lab,-xL,xL,-yL,yL) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("e:x^2 +7*x +4 =0として、a=1,b=7,c=4") /*~(◆修正)*/,
ex21:["ex21, 軸xp=-b/(2*a)=-7/2,頂点y座標yp=a*(-b/(2*a))^2+b*(-b/(2*a))+4=(-b^2+4*a*c)/(4*a)=33/4,
/**/解xのxpからのずれdx=sqrt(|yp|/a)=sqrt(b^2-4*a*c)/(2*a)=sqrt(33)/2 << 軸、頂点、解の関係 >>",
/**/"頂点からのx,yのずれは2乗に比例" ,
/**/float([KKK,["xp=",-b/(2*a),"=",(x1+x2)/2,"yp=",(-b^2+4*a*c)/(4*a),"=",C[2],"dx=",dx:sqrt(b^2-4*a*c)/(2*a),"=",dis(A,D) ]]) ] /*(◆修正)*/,
/**/print(ex21),
ex22:["ex22, x1=xp-dx=(-7-sqrt(33))/2,x2:xp+dx=(-7+sqrt(33))/2 ","解" ,
/**/float([KKK,["x1=",xp-dx,"=",A[1],"x2=",xp+dx,"=",B[1] ]]) ] /*(◆修正)*/,
/**/print(ex22),
ans:["x1=(-7-sqrt(33))/2,x2=(-7+sqrt(33))/2","結論",float([A[1],B[1]] )] /*(◆修正)*/,
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"●練習26 504 9*x^2 -12*x +4 =0 の解は" /* "(◆変更部分)" */,
KOUSATU:"解の公式に当てはめると、a=9,b=-12,c=4,・・・"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号505
/*WORK:"505 解の公式で解く(b=2b'のとき)●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●例13 505 5*x^2 +2*x -1 =0 の解は?" /*(◆変更部分)*/,
KOUSATU:"b=2b'の解の公式に当てはめると、a=5,b1=1,c=-1,・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,c0,c1,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=c0[1],
/*....*/implicit(c0[2],x,xm,xM,y,ym,yM),
/*....*/color=c1[1],
/*....*/implicit(c1[2],x,xm,xM,y,ym,yM),
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print("5*x^2 +2*x -1 =0 の解は?") /*~(◆修正)*/,
ex10:["ex10, e:5*x^2 +2*x -1 =0として、a=5,b1=1,c=-1",
/*=*/float([KKK,Tejun1:["e:",e:5*x^2 +2*x -1 =0,"a=",a:5,"b1=",b1:1,"c=",c:-1 ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, x1=(-b1-sqrt(b1^2-a*c))/a=(-1-sqrt(1^2-5*(-1)))/5=(-1-sqrt(6))/5] << 2b’の解の公式
>>",
/**/float([KKK,["x1=",x1:(-b1-sqrt(b1^2-a*c))/a,"=",(-1-sqrt(6))/5 ]] )] /*(◆修正)*/,
print(ex11),
ex12:["ex12, x2=(-b1+sqrt(b1^2-a*c))/a=(-1+sqrt(1^2-5*(-1)))/5)=(-1+sqrt(5))/5] << 解の公式 >>",
/**/float([KKK,["x2=",x2:(-b1+sqrt(b1^2-a*c))/a,"=",(-1+sqrt(6))/5 ]] )] /*(◆修正)*/,
print(ex12),
ex13:["ex13, x1=(-1-sqrt(6))/5,x2=(-1+sqrt(6))/5 << まとめ >>",
/**/float([KKK,["x1=",(-1-sqrt(6))/5,"x2=",(-1+sqrt(6))/5 ]] )] /*(◆修正)*/,
print(ex13),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print(Tejun1),print("e:5*x^2 +2*x -1 =0として、a=5,b1=1,c=-1") /*~(◆修正)*/,
O:[0,0],A:[x1,0],B:[x2,0],xp:-b1/a,yp:subst(x=xp,lhs(e)),C:[xp,yp],D:[xp,0],r:1.2 /*(◆修正)*/,
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 /**/,
labO:lab("O",O+dO), labA:lab("X1",A+dA), labB:lab("X2",B+dB), labC:lab("P",C+dC) , labD:lab("Q",D+dD) ,
print(float([labO,labA,labB,labC,labD] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("e:5*x^2 +2*x -1 =0として、a=5,b1=1,c=-1") /*~(◆修正)*/,
yL:r*1.2,xL:yL/4.8*6.8,
c0:[red,y=lhs(e)],c1:[blue,x=xp],
T:"For b=2*b'" /**/,
/*O:[xL,yL],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labC,labD,labO,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O]],[false,[A,B]]] /**/,
pB:[[false,[C,D]]] /**/,
print(float(["print",T,c0,c1,pB,pCR,lab,-xL,xL,-yL,yL] ) ) /**/,
gr(T,c0,c1,pB,pCR,lab,-xL,xL,-yL,yL) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("e:5*x^2 +2*x -1 =0として、a=5,b1=1,c=-1") /*~(◆修正)*/,
ex21:["ex21, 軸xp=-b1/a=-1/5,頂点y座標yp=a*(-b1/a)^2+2*b1*(-b1/a)-1=(-b1^2+a*c)/a=-6/5,
/**/解xのxpからのずれdx=sqrt(|yp|/a)=sqrt(b1^2-a*c)/a=sqrt(6)/5 << 軸、頂点、解の関係 >>",
/**/"頂点からのx,yのずれは2乗に比例" ,
/**/float([KKK,["xp=",-b1/a,"=",(x1+x2)/2,"yp=",(-b1^2+a*c)/a,"=",C[2],"dx=",dx:sqrt(b1^2-a*c)/a,"=",dis(A,D) ]]) ] /**/,
/**/print(ex21),
ex22:["ex22, x1=xp-dx=(-1-sqrt(6))/5,x2:xp+dx=(-1+sqrt(6))/5 ","解" ,
/**/float([KKK,["x1=",xp-dx,"=",A[1],"x2=",xp+dx,"=",B[1] ]]) ] /*(◆修正)*/,
/**/print(ex22),
ans:["x1=(-1-sqrt(6))/5,x2=(-1+sqrt(6))/5","結論",float([A[1],B[1]] )] /*(◆修正)*/,
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"例13 505 5*x^2 -4*x -1 =0 の解は?" /* "(◆変更部分)" */,
KOUSATU:"b=2b'の解の公式に当てはめると、a=5,b1=-2,c=-1,・・・"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号506
/*WORK:"506 解の公式で解く(b=2b'のとき)●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●練習27 506 x^2 +2*x -2 =0 の解は?" /*(◆変更部分)*/,
KOUSATU:"b=2b'の解の公式に当てはめると、a=1,b1=1,c=-2,・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,c0,c1,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=c0[1],
/*....*/implicit(c0[2],x,xm,xM,y,ym,yM),
/*....*/color=c1[1],
/*....*/implicit(c1[2],x,xm,xM,y,ym,yM),
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print("x^2 +2*x -2 =0 の解は?") /*~(◆修正)*/,
ex10:["ex10, e:x^2 +2*x -2 =0として、a=1,b1=1,c=-2",
/*=*/float([KKK,Tejun1:["e:",e:x^2 +2*x -2 =0,"a=",a:1,"b1=",b1:1,"c=",c:-2 ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, x1=(-b1-sqrt(b1^2-a*c))/a=(-1-sqrt(1^2-1*(-2)))/1=-1-sqrt(3)] << 2b’の解の公式>>",
/**/float([KKK,["x1=",x1:(-b1-sqrt(b1^2-a*c))/a,"=",-1-sqrt(3) ]] )] /*(◆修正)*/,
print(ex11),
ex12:["ex12, x2=(-b1+sqrt(b1^2-a*c))/a=(-1+sqrt(1^2-1*(-2)))/1)=-1+sqrt(3)] << 解の公式 >>",
/**/float([KKK,["x2=",x2:(-b1+sqrt(b1^2-a*c))/a,"=",-1+sqrt(3) ]] )] /*(◆修正)*/,
print(ex12),
ans:["ans, x1=-1-sqrt(3),x2=-1+sqrt(3) << まとめ >>",
/**/float([KKK,["x1=",-1-sqrt(3),"x2=",-1+sqrt(3) ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print(Tejun1),print("e:x^2 +2*x -2 =0として、a=1,b1=1,c=-2") /*~(◆修正)*/,
O:[0,0],A:[x1,0],B:[x2,0],xp:-b1/a,yp:subst(x=xp,lhs(e)),C:[xp,yp],D:[xp,0],r:3 /*(◆修正)*/,
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 /**/,
labO:lab("O",O+dO), labA:lab("X1",A+dA), labB:lab("X2",B+dB), labC:lab("P",C+dC) , labD:lab("Q",D+dD) ,
print(float([labO,labA,labB,labC,labD] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("e:x^2 +2*x -2 =0として、a=1,b1=1,c=-2") /*~(◆修正)*/,
yL:r*1.2,xL:yL/4.8*6.8,
c0:[red,y=lhs(e)],c1:[blue,x=xp],
T:"x^2 +2*x -2 =0" /*◆修正*/,
/*O:[xL,yL],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labC,labD,labO,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O]],[false,[A,B]]] /**/,
pB:[[false,[C,D]]] /**/,
print(float(["print",T,c0,c1,pB,pCR,lab,-xL,xL,-yL,yL] ) ) /**/,
gr(T,c0,c1,pB,pCR,lab,-xL,xL,-yL,yL) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("e:x^2 +2*x -2 =0として、a=1,b1=1,c=-2") /*~(◆修正)*/,
ex21:["ex21, 軸xp=-b1/a=-1,頂点y座標yp=a*(-b1/a)^2+2*b1*(-b1/a)+c=(-b1^2+a*c)/a=-3,
/**/解xのxpからのずれdx=sqrt(|yp|/a)=sqrt(b1^2-a*c)/a=sqrt(3) << 軸、頂点、解の関係 >>",
/**/"頂点からのx,yのずれは2乗に比例" ,
/**/float([KKK,["xp=",-b1/a,"=",(x1+x2)/2,"yp=",(-b1^2+a*c)/a,"=",C[2],"dx=",dx:sqrt(b1^2-a*c)/a,"=",dis(A,D) ]]) ] /*(◆修正)*/,
/**/print(ex21),
ex22:["ex22, x1=xp-dx=-1-sqrt(3),x2:xp+dx=-1+sqrt(3) ","解" ,
/**/float([KKK,["x1=",xp-dx,"=",A[1],"x2=",xp+dx,"=",B[1] ]]) ] /*(◆修正)*/,
/**/print(ex22),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"練習27 506 3*x^2 -4*x -2 =0 の解は?" /* "(◆変更部分)" */,
KOUSATU:"b=2b'の解の公式に当てはめると、a=3,b1=-4,c=-2,・・・"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
C 2次方程式の係数と実数解
▼コマンド番号507
/*=WORK:"507 2次方程式の実数解の個数●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●例14 507 x^2 +7*x +9 =0 の実数解の個数は?" /*(◆変更部分)*/,
KOUSATU:"解の公式に当てはめると、a=1,b=7,c=9,・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,c0,c1,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=c0[1],
/*....*/implicit(c0[2],x,xm,xM,y,ym,yM),
/*....*/color=c1[1],
/*....*/implicit(c1[2],x,xm,xM,y,ym,yM),
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print("x^2 +7*x +9 =0 の解は?") /*~(◆修正)*/,
ex10:["ex10, e:x^2 +7*x +9 =0として、a=1,b=7,c=9",
/*=*/float([KKK,Tejun1:["e:",e:x^2 +7*x +9 =0,"a=",a:1,"b=",b:7,"c=",c:9 ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, De=b^2-4*a*c=7^2-4*1*9=13 De>0] << 判別式>>",
/**/float([KKK,["De=",De:b^2-4*a*c,"=",13 ]] )] /*(◆修正)*/,
print(ex11),
ex12:["ex12, x1=rhs(solve(e,x)[1]),x2=rhs(solve(e,x)[2]) ] << 方程式の解(答案では略 判別式=0ならどちらも[1])>>",
/**/float([KKK,["x1=",x1:rhs(solve(e,x)[1]),"x2=",x2:rhs(solve(e,x)[2]) ]] )] /*(◆修正)*/,
print(ex12),
ans:["ans, De>0 -> 実数解2個 << 判別式が正 >>",
/**/float([KKK,["De=",b^2-4*a*c,">0 2つの実数解" ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print(Tejun1),print("e:x^2 +7*x +9 =0として、a=1,b=7,c=9") /*~(◆修正)*/,
O:[0,0],A:[x1,0],B:[x2,0],xp:-b/(2*a),yp:subst(x=xp,lhs(e)),C:[xp,yp],D:[xp,0],r:9 /*(◆修正)*/,
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 /**/,
labO:lab("O",O+dO), labA:lab("X1",A+dA), labB:lab("X2",B+dB), labC:lab("P",C+dC) , labD:lab("Q",D+dD) ,
print(float([labO,labA,labB,labC,labD] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("e:x^2 +7*x +9 =0として、a=1,b=7,c=9") /*~(◆修正)*/,
yL:r*1.2,xL:yL/4.8*6.8,
c0:[red,y=lhs(e)],c1:[blue,x=xp],
T:"x^2 +7*x +9 =0" /*◆修正*/,
/*O:[xL,yL],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labC,labD,labO,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O]],[false,[A,B]]] /**/,
pB:[[false,[C,D]]] /**/,
print(float(["print",T,c0,c1,pB,pCR,lab,-xL,xL,-yL,yL] ) ) /**/,
gr(T,c0,c1,pB,pCR,lab,-xL,xL,-yL,yL) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("e:x^2 +7*x +9 =0として、a=1,b=7,c=9") /*~(◆修正)*/,
ex21:["ex21, a=1,下に凸,軸xp=-b/(2*a)=-7/2,頂点y座標yp=a*(-b/(2*a))^2+b*(-b/(2*a))+c=(-b^2+4*a*c)/(4*a)=13/4,
/**/下に凸で、頂点はx軸より下。グラフは、x軸と軸を挟む2か所で交わる。 << 軸、頂点、解の関係 >>",
/**/float([KKK,["a=",a,"xp=",-b/(2*a),"=",(x1+x2)/2,"yp=",(-b^2+4*a*c)/(2*a),"=",C[2],
"dx=",dx:sqrt(b^2-4*a*c)/(2*a),"=",dis(A,D) ]]) ] /*(◆修正)*/,
/**/print(ex21),
ex22:["ex22,下に凸で頂点がx軸より下→2つの実数解","解" ,
/**/float([KKK,["a=",a,"P=",C ] ]) ] /*(◆修正)*/,
/**/print(ex22),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"●例14 507 4*x^2 -12*x +9 =0 の実数解の個数は?" /* "(◆変更部分)" */,
KOUSATU:"解の公式に当てはめると、a=4,b=-12,c=9,・・・"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号508
/*=WORK:"508 2次方程式の実数解の個数●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●練習28 508 x^2 +3*x -5 =0 の実数解の個数は?" /*(◆変更部分)*/,
KOUSATU:"解の公式に当てはめると、a=1,b=3,c=-5,・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,c0,c1,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=c0[1],
/*....*/implicit(c0[2],x,xm,xM,y,ym,yM),
/*....*/color=c1[1],
/*....*/implicit(c1[2],x,xm,xM,y,ym,yM),
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print("x^2 +3*x -5 =0 の解は?") /*~(◆修正)*/,
ex10:["ex10, e:x^2 +3*x -5 =0として、a=1,b=3,c=-5",
/*=*/float([KKK,Tejun1:["e:",e:x^2 +3*x -5 =0,"a=",a:1,"b=",b:3,"c=",c:-5 ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, De=b^2-4*a*c=3^2-4*1*(-5)=29 De>0] << 判別式>>",
/**/float([KKK,["De=",De:b^2-4*a*c,"=",29 ]] )] /*(◆修正)*/,
print(ex11),
ex12:["ex12, x1=rhs(solve(e,x)[1]),x2=rhs(solve(e,x)[2]) ] << 方程式の解(答案では略 判別式=0ならどちらも[1])>>",
/**/float([KKK,["x1=",x1:rhs(solve(e,x)[1]),"x2=",x2:rhs(solve(e,x)[2]) ]] )] /*(◆修正)*/,
print(ex12),
ans:["ans, De>0 -> 実数解2個 << 判別式が正 >>",
/**/float([KKK,["De=",b^2-4*a*c,">0 2つの実数解" ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print(Tejun1),print("e:x^2 +3*x -5 =0として、a=1,b=3,c=-5") /*~(◆修正)*/,
O:[0,0],A:[x1,0],B:[x2,0],xp:-b/(2*a),yp:subst(x=xp,lhs(e)),C:[xp,yp],D:[xp,0],r:7 /*(◆修正)*/,
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 /**/,
labO:lab("O",O+dO), labA:lab("X1",A+dA), labB:lab("X2",B+dB), labC:lab("P",C+dC) , labD:lab("Q",D+dD) ,
print(float([labO,labA,labB,labC,labD] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("e:x^2 +3*x -5 =0として、a=1,b=3,c=-5") /*~(◆修正)*/,
yL:r*1.2,xL:yL/4.8*6.8,
c0:[red,y=lhs(e)],c1:[blue,x=xp],
T:"x^2 +3*x -5 =0" /*◆修正*/,
/*O:[xL,yL],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labC,labD,labO,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O]],[false,[A,B]]] /**/,
pB:[[false,[C,D]]] /**/,
print(float(["print",T,c0,c1,pB,pCR,lab,-xL,xL,-yL,yL] ) ) /**/,
gr(T,c0,c1,pB,pCR,lab,-xL,xL,-yL,yL) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("e:x^2 +3*x -5 =0として、a=1,b=3,c=-5") /*~(◆修正)*/,
ex21:["ex21, a=1,下に凸,軸xp=-b/(2*a)=-3/2,頂点y座標yp=a*(-b/(2*a))^2+b*(-b/(2*a))+c=(-b^2+4*a*c)/(4*a)=-29/4,
/**/下に凸で、頂点はx軸より下。グラフは、x軸と軸を挟む2か所で交わる。 << 軸、頂点、解の関係 >>",
/**/float([KKK,["a=",a,"xp=",-b/(2*a),"=",(x1+x2)/2,"yp=",(-b^2+4*a*c)/(4*a),"=",C[2],"dx=",dx:sqrt(b^2-4*a*c)/(2*a),"=",dis(A,D) ]]) ] /*(◆修正)*/,
/**/print(ex21),
ex22:["ex22,下に凸で頂点がx軸より下→2つの実数解","解" ,
/**/float([KKK,["a=",a,"P=",C ] ]) ] /*(◆修正)*/,
/**/print(ex22),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"●練習28 508 x^2 +2*sqrt(3)*x +3 =0 の実数解の個数は?" /* "(◆変更部分)" */,
KOUSATU:"解の公式に当てはめると、a=1,b=2*sart(3),c=3,・・・"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号509
/*=WORK:"509 2つの実数解をもつ範囲●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●例題8・練習29 509 x^2 -2*x +m =0 が2つの実数解をもつmの範囲は?" /*(◆変更部分)*/,
KOUSATU:"解の公式に当てはめると、a=1,b=-2,c=m,・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,c0,c1,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=c0[1],
/*....*/implicit(c0[2],x,xm,xM,y,ym,yM),
/*....*/color=c1[1],
/*....*/implicit(c1[2],x,xm,xM,y,ym,yM),
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print("x^2 -2*x +m =0 の解が2つの実数解をもつmの範囲は?") /*~(◆修正)*/,
ex10:["ex10, e:x^2 -2*x +m =0として、a=1,b=-2,c=m",
/*=*/float([KKK,Tejun1:["e:",e:x^2 -2*x +m =0,"a=",a:1,"b=",b:-2,"c=",c:m ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, De=b^2-4*a*c=(-2)^2-4*1*m=4-4*m >0] << 判別式>>",
/**/float([KKK,["De=",De:b^2-4*a*c,"=",4-4*m >0 ]] )] /*(◆修正)*/,
print(ex11),
ex12:["ex12, 4*m<4, m<1 << 判別式>0)>>",
/**/float([KKK,[Sm:(load(fourier_elim),fourier_elim( [De>0], [m])),Sm1:m<1 ] ]) ] /*(◆修正)*/,
print(ex12),
ans:["ans, m<1 -> 実数解2個 << 判別式が正 >>",
/**/float([KKK,["Sm:",Sm," 2つの実数解" ]] )] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print(Tejun1),print("e:x^2 -2*x +m =0をx^2-2*x=-mとし、c0:y=x^2-2*x,c1:y=-mとして、a=1,b=-2,c=0,a1=0,b1=-m") /*~(◆修正)*/,
subl:[m=-2],x1:subst(subl,rhs(solve(e,x)[1]) ),x2:subst(subl,rhs(solve(e,x)[2]) ) /*subl:mの例、
判別式=0ならx1,x2ともに[1]*//*(◆修正)*/,
O:[0,0],A:subst(subl,[x1,-m]),B:subst(subl,[x2,-m]),E:subst(subl,[0,-m]),
xp:-b/(2*a),yp:subst(x=xp,lhs(e-m)),C:[xp,yp],D:[xp,0],r:2 /*r:描画の範囲*//*(◆修正)*/,
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("X1",A+dA),labB:lab("X2",B+dB),labC:lab("P",C+dC),labD:lab("Q",D+dD),labE:lab("y=-m",E+dE),
print(float([labO,labA,labB,labC,labD,labE] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("e:x^2 -2*x +m =0をx^2-2*x=-mとし、
c0:y=x^2-2*x、c1:y=-mとして、a=1,b=-2,c=0,a1=0,b1=-m") /*~(◆修正)*/,
yL:r*1.2,xL:yL/4.8*6.8,
c0:[red,subst(subl,(y-lhs(e-m) )*(y+m)=0 ) ],c1:[blue,x-xp=0 ],
T:"x^2 -2*x =-m" /*◆修正*/,
/*O:[xL,yL],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labC,labD,labE,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O,E]],[false,[A,B]]] /**/,
pB:[[false,[C,D]]] /**/,
print(float(["print",T,c0,c1,pB,pCR,lab,-xL,xL,-yL,yL] ) ) /**/,
gr(T,c0,c1,pB,pCR,lab,-xL,xL,-yL,yL) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("e:x^2 -2*x -m =0をx^2-2*x=-nとし、
c0:y=x^2-2*x,c1:y=-mとして、a=1,b=-2,c=0,a1=0,b1=-m") /*~(◆修正)*/,
ex21:["ex21, a=1,下に凸,軸xp=-b/(2*a)=1,頂点y座標yp=a*(-b/(2*a))^2+b*(-b/(2*a))+c=(-b^2+4*a*c)/(4*a)=-1,
/**/下に凸で、頂点より上にy=-mがあると2交点で交わる。-m>-1、m<1 << 軸、頂点、解の関係 >>",
/**/float([KKK,["a=",a,"xp=",-b/(2*a),"=",(x1+x2)/2,"yp=",(-b^2+4*a*c)/(4*a),
"=",C[2],"<",-m,"m<",-C[2],-1 ]]) ] /*(◆修正)*/,
/**/print(ex21),
ex22:["ex22,m<1 ⇔下に凸で頂点がy=-mより下⇔2つの実数解","解" ,
/**/float([KKK,["m<",-C[2],"=",1 ] ]) ] /*(◆修正)*/,
/**/print(ex22),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"例題8・練習29 509 x^2 -4*x +m =0 の実数解の個数は?" /* "(◆変更部分)" */,
KOUSATU:"解の公式に当てはめると、a=1,b=-4,c=m,・・・"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号510
●例題9・練習30
重解をもつ条件く●●●●●●●●●●●●●●●●
kill(all) /* "510 重解をもつ条件(Maxima on lineでは削除)" */$
MONDAI:"510 下の問題の方程式について";
gr20(Y,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)]] /* "頂点を確認し、グラフを書く" */,
/**/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(MONDAI1),
/**/print("y=",Y," 太赤がグラフ、太青が軸・頂点"),
/**/print(J," 軸"),
/**/print(P[1]," 頂点"),
/**/print(Z," ゼロ点")
/**/)$
MONDAI1:"x^2 +m*x +m =0 が重解を持つ条件とその重解は" /* "(◆修正部分)" */;
e:x^2 +m*x +m /* "方程式の左辺から(◆修正部分)" */;
D:(m)^2-4*(1)*(m) /* "判別式により(◆修正時訂正)" */;
hjJ:D=0 /* "実数解の条件から(◆修正時訂正)" */;
mL:solve(hjJ, m) /* "mについて不等式を解いて" */;
e1:subst(mL[1],e) /* " 解の1つを、代入して" */;
chekku:"グラフでチェック"$
print(mL[1]);
gr20(e1,-5,5,-10,10)$
e2:subst(mL[2],e) /* " もう一つの解を、代入して" */;
chekku:"グラフでチェック"$
print(mL[2]);
gr20(e2,-5,5,-10,10)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"x^2 +(m+2)*x +m +5 =0 が重解を持つ条件とその重解は" /* "(◆修正部分)" */;
e:x^2 +(m+2)*x +m +5 /* "方程式の左辺から(◆修正部分)" */;
:
6.2次関数のグラフとx軸の位置関係
A 2次関数のグラフとx軸の共有点の座標
▼コマンド番号601
/*=WORK:"601 グラフとx軸の共有点の座標●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●例15・16 601 y=x^2 -4*x -5 とx軸の共有点の座標は?" /*(◆変更部分)*/,
KOUSATU:"y=0と連立させて、a=1,b=-4,c=-5,・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,cR,cBC,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=cR[1],line_width=2,
/*....*/implicit(cR[2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[1][1],
/*....*/implicit(cBC[1][2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[2][1],
/*....*/implicit(cBC[2][2],x,xm,xM,y,ym,yM),
/*....*/color=black,line_width=1,
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print("y =x^2 -4*x -5 とx軸の共有点の座標は?") /*~(◆修正)*/,
ex10:["ex10, e:y=x^2 -4*x -5 として、a=1,b=-4,c=-5",
/*=*/float([KKK,Tejun1:["e:",e:y=x^2 -4*x -5,"a=",a:1,"b=",b:-4,"c=",c:-5 ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, y=0 -> x^2-4*x-5=0 ] << y=0(x軸)と連立>>",
/**/float([KKK,[rhs(e),"=",0 ]] )] /*(◆修正)*/,
print(ex11),
ex12:["ex12, x^2-4*x-5=(x+1)*(x-5)=0, x1=-1,x2=5 << 方程式を解く)>>",
/**/float([KKK,[Sx:solve(rhs(e)=0,x),Sx1:[x1:-1,x2:5] ] ]) ] /*(◆修正)*/,
print(ex12),
ans:["ans, y=0 ->x1=-1, x2=5 -> (-1,0),(5,0)が共有点 << 解 >>",
/**/float([KKK,[Sx,"=",Sx1 ] ]) ] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print(Tejun1),print("e:x^2 -4*x -5 =0として、") /*~(◆修正)*/,
c0:y=x^2-4*x-5,c1:y=0 /*(◆修正)*/,
O:[0,0],A:[x1,0],B:[x2,0],
xp:-b/(2*a),yp:subst(x=xp,rhs(c0)),C:[xp,yp],D:[xp,0],r:10 /*r:描画の範囲*//*(◆修正)*/,
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],dF:[0.1,-0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("X1",A+dA),labB:lab("X2",B+dB),labC:lab("P",C+dC),labD:lab("Q",D+dD),
labE:lab("E",E+dE),labF:lab("F",F+dF),
print(float([labO,labA,labB,labC,labD] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("e:x^2 -4*x -5 =0とし、") /*~(◆修正)*/,
yL:r*1.2,xL:yL/4.8*6.8,
cR:[red,y-rhs(c0)=0 ],cBC:[[blue,x=-b/(2*a) ],[cyan,y=rhs(c1) ] ],
T:"x^2 -4*x -5=0" /*◆修正*/,
/*O:[xL,yL],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labC,labD,labO,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O]],[false,[A,B]]] /**/,
pB:[[false,[C,D]]] /**/,
print(float(["print",T,cR,cBC,pB,pCR,lab,-xL,xL,-yL,yL] ) ) /**/,
gr(T,cR,cBC,pB,pCR,lab,-xL,xL,-yL,yL) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("e:x^2 -4*x -5 =0とし,") /*~(◆修正)*/,
ex21:["ex21, x1(-1,0)、x2(5,0)で、c0とc1が確かに交わっている。<< グラフから >>",
/**/float([KKK,[" x1=",x1,"=",-1," x2=",x2,"=",5 ] ]) ] /*(◆修正)*/,
/**/print(ex21),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"例15・16 601 y=x^2 -4*x +4 とx軸の共有点の座標は?" /* "(◆変更部分)" */,
KOUSATU:"y=0と連立させて、a=1,b=-4,c=4,・・・"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号602
/*=WORK:"602 グラフとx軸の共有点の座標●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●練習31 602 y=x^2 -x -6 とx軸の共有点の座標は?" /*(◆変更部分)*/,
KOUSATU:"y=0と連立させて、a=1,b=-1,c=-6,・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,cR,cBC,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=cR[1],line_width=2,
/*....*/implicit(cR[2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[1][1],
/*....*/implicit(cBC[1][2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[2][1],
/*....*/implicit(cBC[2][2],x,xm,xM,y,ym,yM),
/*....*/color=black,line_width=1,
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print("y =x^2 -x -6 とx軸の共有点の座標は?") /*~(◆修正)*/,
ex10:["ex10, y=0と連立させて、a=1,b=-1,c=-6",
/*=*/float([KKK,Tejun1:["e:",e:y=x^2 -x -6,"a=",a:1,"b=",b:-1,"c=",c:-6 ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, y=0 -> x^2-x-6=0 ] << y=0(x軸)と連立>>",
/**/float([KKK,[rhs(e),"=",0 ]] )] /*(◆修正)*/,
print(ex11),
ex12:["ex12, x^2-x-6=(x+2)*(x-3)=0, x1=-2,x2=3 << 方程式を解く)>>",
/**/float([KKK,[Sx:solve(rhs(e)=0,x),Sx1:[x1:-2,x2:3] ] ]) ] /*(◆修正)*/,
print(ex12),
ans:["ans, y=0 ->x1=-2, x2=3 -> (-2,0),(3,0)が共有点 << 解 >>",
/**/float([KKK,[Sx,"=",Sx1 ] ]) ] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print(Tejun1),print("e:x^2 -x -6 =0として、") /*~(◆修正)*/,
c0:y=x^2-x-6,c1:y=0 /*(◆修正)*/,
O:[0,0],A:[x1,0],B:[x2,0],
xp:-b/(2*a),yp:subst(x=xp,rhs(c0)),C:[xp,yp],D:[xp,0],r:10 /*r:描画の範囲*//*(◆修正)*/,
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],dF:[0.1,-0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("X1",A+dA),labB:lab("X2",B+dB),labC:lab("P",C+dC),labD:lab("Q",D+dD),
labE:lab("E",E+dE),labF:lab("F",F+dF),
print(float([labO,labA,labB,labC,labD] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("e:x^2 -x -6 =0とし、") /*~(◆修正)*/,
yL:r*1.2,xL:yL/4.8*6.8,
cR:[red,y-rhs(c0)=0 ],cBC:[[blue,x=-b/(2*a) ],[cyan,y=rhs(c1) ] ],
T:"y=x^2 -x -6" /*◆修正*/,
/*O:[xL,yL],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labC,labD,labO,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O]],[false,[A,B]]] /**/,
pB:[[false,[C,D]]] /**/,
print(float(["print",T,cR,cBC,pB,pCR,lab,-xL,xL,-yL,yL] ) ) /**/,
gr(T,cR,cBC,pB,pCR,lab,-xL,xL,-yL,yL) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("e:x^2 -x -6 =0とし,") /*~(◆修正)*/,
ex21:["ex21, x1(-2,0)、x2(3,0)で、c0とc1が確かに交わっている。<< グラフから >>",
/**/float([KKK,[" x1=",x1,"=",-2," x2=",x2,"=",3 ] ]) ] /*(◆修正)*/,
/**/print(ex21),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"練習31 602 y=2*x^2 +4*x +2 とx軸の共有点の座標は?" /* "(◆変更部分)" */,
KOUSATU:"y=0と連立させて、a=2,b=4,c=2,・・・"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
6.2次関数のグラフとx軸の位置関係
B 2次関数のグラフとx軸の位置関係
▼コマンド番号603
/*=WORK:"603 グラフとx軸の共有点の位置関係●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●例17 603 y=x^2 +5*x +3 とx軸の共有点の個数は?" /*(◆変更部分)*/,
KOUSATU:"y=0と連立させて、a=1,b=5,c=3,・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,cR,cBC,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=cR[1],line_width=2,
/*....*/implicit(cR[2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[1][1],
/*....*/implicit(cBC[1][2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[2][1],
/*....*/implicit(cBC[2][2],x,xm,xM,y,ym,yM),
/*....*/color=black,line_width=1,
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print("y =x^2 +5*x +3 とx軸の共有点の座標は?") /*~(◆修正)*/,
ex10:["ex10, y=0と連立させて、a=1,b=5,c=3",
/*=*/float([KKK,Tejun1:["e:",e:y=x^2 +5*x +3,"a=",a:1,"b=",b:5,"c=",c:3 ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, y=0 -> x^2 +5*x +3=0 ] << y=0(x軸)と連立>>",
/**/float([KKK,[rhs(e),"=",0 ]] )] /*(◆修正)*/,
print(ex11),
ex12:["ex12, x^2 +5*x +3=0, De=13>0 << 判別式>0)>>",
/**/float([KKK,[De:b^2-4*a*c,13 ] ]) ] /*(◆修正)*/,
print(ex12),
ans:["ans, De>0 ->共有点は2個 << 解 >>",
/**/float([KKK,["De=",De,">",0 ] ]) ] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print(Tejun1),print("e1:x^2 +5*x +3 =0として、") /*~(◆修正)*/,
c0:y=x^2 +5*x +3,c1:y=0,e1:rhs(e)=0,Sx:solve(e1,x),
if De<0 then (x1:0,x2:x1) elseif De=0 then (x1:rhs(Sx[1]),x2:x1) else (x1:rhs(Sx[1]),x2:rhs(Sx[2])) ,
O:[0,0],A:[x1,0],B:[x2,0],
xp:-b/(2*a),yp:subst(x=xp,rhs(c0)),C:[xp,yp],D:[xp,0],r:10 /*r:描画の範囲*//*(◆修正)*/,
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],dF:[0.1,-0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("X1",A+dA),labB:lab("X2",B+dB),labC:lab("P",C+dC),labD:lab("Q",D+dD),
labE:lab("E",E+dE),labF:lab("F",F+dF) /*虚数解なら"X1","X2"を" "に*//*(◆修正)*/,
print(float([labO,labA,labB,labC,labD] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("e1:x^2 +5*x +3 =0とし、") /*~(◆修正)*/,
yL:r*1.2,xL:yL/4.8*6.8,
cR:[red,y-rhs(c0)=0 ],cBC:[[blue,x=-b/(2*a) ],[cyan,y=rhs(c1) ] ],
T:"y=x^2 +5*x +3" /*◆修正*/,
/*O:[xL,yL],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labC,labD,labO,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O]],[false,[A,B]]] /**/,
pB:[[false,[C,D]]] /**/,
print(float(["print",T,cR,cBC,pB,pCR,lab,-xL,xL,-yL,yL] ) ) /**/,
gr(T,cR,cBC,pB,pCR,lab,-xL,xL,-yL,yL) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("e1:x^2 +5*x +3 =0とし,") /*~(◆修正)*/,
ex21:["ex21, 2点で、c0とc1が確かに交わっている。<< グラフから >>",
/**/float([KKK,[" X1=",[x1,0],"X2=",[x2,0] ] ]) ] /*(◆修正)*/,
/**/print(ex21),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"例17 603 y=-2*x^2 +x -1 とx軸の共有点の個数は?" /* "(◆変更部分)" */,
KOUSATU:"y=0と連立させて、a=-2,b=1,c=-1,・・・"/*~(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号604
/*=WORK:"604 グラフとx軸の共有点の位置関係●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●練習32 604 y=x^2 +3*x +3 とx軸の共有点の個数は?" /*~(◆変更部分)*/,
KOUSATU:"y=0と連立させて、a=1,b=3,c=3,・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,cR,cBC,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=cR[1],line_width=2,
/*....*/implicit(cR[2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[1][1],
/*....*/implicit(cBC[1][2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[2][1],
/*....*/implicit(cBC[2][2],x,xm,xM,y,ym,yM),
/*....*/color=black,line_width=1,
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print("y =x^2 +3*x +3 とx軸の共有点の座標は?") /*~(◆修正)*/,
ex10:["ex10, y=0と連立させて、a=1,b=3,c=3",
/*=*/float([KKK,Tejun1:["e:",e:y=x^2 +3*x +3,"a=",a:1,"b=",b:3,"c=",c:3 ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, y=0 -> x^2 +3*x +3=0 ] << y=0(x軸)と連立>>"/*~*/,
/**/float([KKK,[rhs(e),"=",0 ]] )] /*(◆修正)*/,
print(ex11),
ex12:["ex12, x^2 +3*x +3=0, De=-3<0 << 判別式>0)>>"/*~*/,
/**/float([KKK,[De:b^2-4*a*c,-3 ] ]) ] /*(◆修正)*/,
print(ex12),
ans:["ans, De>0 ->共有点は0個 << 解 >>",
/**/float([KKK,["De=",De,"<",0 ] ]) ] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print(Tejun1),print("e1:x^2 +3*x +3 =0として、") /*~(◆修正)*/,
c0:y=x^2 +3*x +3,c1:y=0,e1:rhs(e)=0,Sx:solve(e1,x),
if De<0 then (x1:0,x2:x1) elseif De=0 then (x1:rhs(Sx[1]),x2:x1) else (x1:rhs(Sx[1]),x2:rhs(Sx[2])) ,
O:[0,0],A:[x1,0],B:[x2,0],
xp:-b/(2*a),yp:subst(x=xp,rhs(c0)),C:[xp,yp],D:[xp,0],r:10 /*r:描画の範囲*//*(◆修正)*/,
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],dF:[0.1,-0.1]*r /**/,
labO:lab("O",O+dO),labA:lab(" ",A+dA),labB:lab(" ",B+dB),labC:lab("P",C+dC),labD:lab("Q",D+dD),
labE:lab("E",E+dE),labF:lab("F",F+dF) /*虚数解なら"X1","X2"を" "に*//*(◆修正)*/,
print(float([labO,labA,labB,labC,labD] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("e1:x^2 +3*x +3 =0とし、") /*~(◆修正)*/,
yL:r*1.2,xL:yL/4.8*6.8,
cR:[red,y-rhs(c0)=0 ],cBC:[[blue,x=-b/(2*a) ],[cyan,y=rhs(c1) ] ],
T:"y=x^2 +3*x +3" /*~◆修正*/,
/*O:[xL,yL],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labC,labD,labO,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O]],[false,[A,B]]] /**/,
pB:[[false,[C,D]]] /**/,
print(float(["print",T,cR,cBC,pB,pCR,lab,-xL,xL,-yL,yL] ) ) /**/,
gr(T,cR,cBC,pB,pCR,lab,-xL,xL,-yL,yL) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("e1:x^2 +3*x +3 =0とし,") /*~(◆修正)*/,
ex21:["ex21, c0とc1が確かに交わっていない。<< グラフから >>",
/**/float([KKK,[" a=",a,"P=",C,"下に凸で頂点はx軸より上" ] ]) ] /*(◆修正)*/,
/**/print(ex21),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"●練習32 604 y=1/2*x^2 -2*x +2 とx軸の共有点の個数は?" /*~ "(◆変更部分)" */,
KOUSATU:"y=0と連立させて、a=1/2,b=-2,c=2,・・・"/*(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号605
/*=WORK:"605 グラフとx軸の共有点の位置関係●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●例題10・練習32 605 y=x^2 -3*x +m がx軸と異なる2点で交わるのは?" /*~(◆変更部分)*/,
KOUSATU:"y=0と連立させて、a=1,b=-3,c=m,・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,cR,cBC,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=cR[1],line_width=2,
/*....*/implicit(cR[2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[1][1],
/*....*/implicit(cBC[1][2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[2][1],
/*....*/implicit(cBC[2][2],x,xm,xM,y,ym,yM),
/*....*/color=black,line_width=1,
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print("y =x^2 -3*x +m がx軸と異なる2点で交わるのは?") /*~(◆修正)*/,
ex10:["ex10, y=0と連立させて、a=1,b=-3,c=m",
/*=*/float([KKK,Tejun1:["e:",e:y=x^2 -3*x +m,"a=",a:1,"b=",b:-3,"c=",c:m ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, y=0 -> x^2 -3*x +m =0 ] << y=0(x軸)と連立>>"/*~*/,
/**/float([KKK,[rhs(e),"=",0 ]] )] /*(◆修正)*/,
print(ex11),
ex12:["ex12, x^2 -3*x +m=0, De=9-4*m>0 << 判別式>0)>>"/*~*/,
/**/float([KKK,["De=",De:expand(b^2-4*a*c),9-4*m ] ]) ] /*(◆修正)*/,
print(ex12),
ex13:["ex13, 9>4*m -> m<9/4 << 判別式>0)>>"/*~*/,
/**/float([KKK,[Sm:(load(fourier_elim),fourier_elim( [De>0], [m])),m<9/4 ] ]) ] /*(◆修正)*/,
print(ex13),
ans:["ans, m<9/4 << 解 >>",
/**/float([KKK,["Sm=",Sm,m<9/4] ]) ] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print(Tejun1),print("c0:y=x^2 -3*x, c1:y=-mとして、") /*~(◆修正)*/,
subl:[m=1],c0:subst(subl,y=x^2 -3*x),c1:subst(subl,y=-m),e1:rhs(e)=0,Sx:solve(subst(subl,c0=c1),x),sDe:subst(subl,De),
if sDe<0 then (x1:0,x2:x1) elseif sDe=0 then (x1:rhs(Sx[1]),x2:x1) else (x1:rhs(Sx[1]),x2:rhs(Sx[2])) ,
O:[0,0],A:[x1,subst(x=x1,rhs(c0) )],B:[x2,subst(x=x2,subst(subl,rhs(c0)))],
a:coeff(rhs(c0),x,2),b:coeff(rhs(c0),x,1),c:coeff(rhs(c0),x,0),print([a,b,c]),
xp:subst(subl,-b/(2*a)), yp:subst(subl,subst(x=xp,rhs(c0)) ), C:[xp,yp],D:[xp,0],r:3 /*r:描画の範囲*//*(◆修正)*/,
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],dF:[0.1,-0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("X1",A+dA),labB:lab("X2",B+dB),labC:lab("P",C+dC),labD:lab("Q",D+dD),
E:[0,subst(subl,-m)],labE:lab("-m",E+dE),labF:lab("F",F+dF) /*虚数解なら"X1","X2"を" "に*//*(◆修正)*/,
print(float([labO,labA,labB,labC,labD,labE] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("c0:y=x^2 -3*x, c1:y=-mとして、") /*~(◆修正)*/,
yL:r*1.2,xL:yL/4.8*6.8,
cR:[red,y-rhs(c0)=0 ],cBC:[[blue,x=subst(subl,-b/(2*a) ) ],[cyan,y=rhs(c1) ] ],
T:"y=x^2 -3*x +m (m=1)" /*~◆修正*/,
/*O:[xL,yL],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labC,labD,labE,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O]],[false,[A,B,E]]] /**/,
pB:[[false,[C,D]]] /**/,
print(float(["print",T,cR,cBC,pB,pCR,lab,-xL,xL,-yL,yL] ) ) /**/,
gr(T,cR,cBC,pB,pCR,lab,-xL,xL,-yL,yL) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("c0:y=x^2 -3*x, c1:y=-mとして,") /*~(◆修正)*/,
ex21:["ex21, -m>-9/4、即ち、m<9/4ならc0とc1が確かに交わる。<< グラフから >>",
/**/float([KKK,["a=",a,"Sm:",Sm,"P=",C,"で、下に凸で頂点はx軸より下" ] ]) ] /*(◆修正)*/,
/**/print(ex21),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"●例題10・練習32 605 y=x^2 +5*x +m +2 がx軸と共有点を持たないときは?" /*~ "(◆変更部分)" */,
KOUSATU:"y=0と連立させて、a=1,b=5,c=m+2,・・・"/*(◆変更部分)*/,
/*
*/
*/END:"Finish"$
▼コマンド番号606
/*=WORK:"606 グラフとx軸の共有点の位置関係●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●発展例1・例2 606 y=x^2-4*x+5 とy=x+1の共有点の座標は?" /*~(◆変更部分)*/,
KOUSATU:"y=0と連立させて、a=1,b=-5,c=4,・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,cR,cBC,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=cR[1],line_width=2,
/*....*/implicit(cR[2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[1][1],
/*....*/implicit(cBC[1][2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[2][1],
/*....*/implicit(cBC[2][2],x,xm,xM,y,ym,yM),
/*....*/color=black,line_width=1,
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print("y=x^2-4*x+5 とy=x+1の共有点の座標は?") /*~(◆修正)*/,
ex10:["ex10, 連立させて、a=1,b=-4,c=5",
/*=*/float([KKK,Tejun1:["e1:",e1:y=x^2 -4*x +5,"e2:",e2:y=x +1,"-> e:",e:e1-e2,"=",x^2-5*x+4=0,
"a=",a:1,"b=",b:-5,"c=",c:4 ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, x^2 -5*x +4=0, De=25-16=9>0 << 判別式=平方数 -> 因数分解)>>"/*~*/,
/**/float([KKK,["De=",De:expand(b^2-4*a*c),"=",9 ] ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, (x-1)*(x-4)=0 -> x1=1, x2=4 << 2実解 )>>"/*~*/,
/**/float([KKK,[Sx:solve(e,x),"=",[x1:1,x2:4] ] ]) ] /*(◆修正)*/,
print(ex12),
ex13:["ex13, y1=1+1=2, y2=4+1=5 -> X1=[1,2], X2=[4,5] << 2交点 )>>"/*~*/,
/**/float([KKK,["y1=",y1:rhs(subst(Sx[1],e2)),"y2=",y2:rhs(subst(Sx[2],e2)),
X1:[x1,y1],"=",[1,2],X2:[x2,y2],"=",[4,5] ] ]) ] /*(◆修正)*/,
print(ex13),
ans:["ans, X1=[1,2], X2=[4,5] << 解 >>",
/**/float([KKK,["X1=",X1,"=",[1,2],"X2=",X2,"=",[4,5] ] ]) ] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print(Tejun1),print("c0:y=x^2-4*x+5, c1:y=x+1として、") /*~(◆修正)*/,
c0:e1,c1:e2,Sx:solve(c0-c1=0,x),
if De<0 then (x1:0,x2:x1) elseif De=0 then (x1:rhs(Sx[1]),x2:x1) else (x1:rhs(Sx[1]),x2:rhs(Sx[2])) ,
O:[0,0],A:[x1,subst(x=x1,rhs(c0) )],B:[x2,subst(x=x2,rhs(c0) ) ],
a:coeff(rhs(c0),x,2),b:coeff(rhs(c0),x,1),c:coeff(rhs(c0),x,0),print([a,b,c]),
xp:-b/(2*a), yp:subst(x=xp,rhs(c0) ), C:[xp,yp],D:[xp,0],r:5 /*r:描画の範囲*//*(◆修正)*/,
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],dF:[0.1,-0.1]*r /**/,
labO:lab("O",O+dO),labA:lab("X1",A+dA),labB:lab("X2",B+dB),labC:lab("P",C+dC),labD:lab("Q",D+dD),
E:[0,0],labE:lab("E",E+dE),labF:lab("F",F+dF) /*虚数解なら"X1","X2"を" "に*//*(◆修正)*/,
print(float([labO,labA,labB,labC,labD] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("c0:y=x^2-4*x+5, c1:y=x+1として、") /*~(◆修正)*/,
yL:r*1.2,xL:yL/4.8*6.8,
cR:[red,y-rhs(c0)=0 ],cBC:[[blue,x=-b/(2*a) ],[cyan,y=rhs(c1) ] ],
T:"y=x^2-4*x+5, y=x+1" /*~◆修正*/,
/*O:[xL,yL],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labC,labD,labO,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O]],[false,[A,B]]] /**/,
pB:[[false,[C,D]]] /**/,
print(float(["print",T,cR,cBC,pB,pCR,lab,-xL,xL,-yL,yL] ) ) /**/,
gr(T,cR,cBC,pB,pCR,lab,-xL,xL,-yL,yL) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("c0:y=x^2-4*x+5, c1:y=x+1として,") /*~(◆修正)*/,
ex21:["ex21, X1-[1,2], X2=[4,5]でc0とc1が確かに交わる。<< グラフから >>",
/**/float([KKK,["Sx:",Sx,"-> a=",a,"P=",C,
"で、下に凸で頂点はx軸より下","X1=",X1,"X2=",X2,"で交わる" ] ]) ] /*(◆修正)*/,
/**/print(ex21),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"●●発展例1・例2 606 y=x^2-4*x+5 とy=2*x-4の共有点の座標は?" /*~ "(◆変更部分)" */,
KOUSATU:"連立させて、a=1,b=-6,c=9,・・・"/*(◆変更部分)*/,
/*
*/
*/END:"Finish"$
:
7.2次不等式
A 1次不等式と1次関数
▼コマンド番号701
/*=WORK:"701 1次不等式の解●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●例18・練習34 701 2*x -4 <0の解は?" /*~(◆変更部分)*/,
KOUSATU:"不等式変形ルールに従うと、・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,cR,cBC,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=cBC[1][1],
/*....*/implicit(cBC[1][2],x,xm,xM,y,ym,yM),
/*....*/color=cR[1][1],line_width=2,
/*....*/explicit(cR[1][2],x,cR[1][3],cR[1][4]),
/*....*/color=cR[2][1],line_width=2,
/*....*/explicit(cR[2][2],x,cR[2][3],cR[2][4]),
/*....*/color=black,line_width=1,
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print("2*x -4 <0の解は?") /*~(◆修正)*/,
ex10:["ex10, e:2*x-4 <0",
/*=*/float([KKK,Tejun1:["e:",e:2*x-4<0,"-> a=",a:coeff(lhs(e),x,1),
"b=",b:coeff(lhs(e),x,0),"e1:",e1:lhs(e)-b<rhs(e)-b,2*x<4 ]])] /*~(◆修正)*/,
print(ex10),
ex11:["ex11, e2:if(a>0)then lhs(e1)/a < rhs(e1)/a else lhs(e1)/a > rhs(e1)/a,x<2 << aが負なら不等号が逆 >>"/*~*/,
/**/float([KKK,["e2:",e2:if(a>0)then lhs(e1)/a < rhs(e1)/a else lhs(e1)/a > rhs(e1)/a,x<2 ] ]) ] /*(◆修正)*/,
print(ex11),
ans:["ans, (load(fourier_elim),fourier_elim( [e], [x])),x<2 << 解 >>",
/**/float([KKK,["sx:",(load(fourier_elim),fourier_elim( [e], [x])),sx:[x<2] ],e,fourier_elim( [e], [x]) ]) ] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print("2*x -4 <0の解は?") /*~(◆修正)*/,
fx:lhs(e),x1:rhs(sx[1]),print([fx,x1]),
O:[0,0],A:[x1,subst(x=x1,fx) ],
B:[0,subst(x=0,fx) ],r:5 /*r:描画の範囲*//*(◆修正)*/,
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] /**/,
labO:lab("O",O+dO),labA:lab("X1",A+dA),labB:lab("B",B+dB),labC:lab("P",C+dC),labD:lab("Q",D+dD),
C:[0,0],D:[0,0],labC:lab("O",C+dC),labD:lab("O",D+dD),
E:[0,0],labE:lab("E",E+dE) /*虚数解なら"X1","X2"を" "に*//*(◆修正)*/,
print(float([labO,labA,labB] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("2*x -4 <0の解は?") /*~(◆修正)*/,
yL:r*1.2,xL:yL/4.8*6.8,print("e2",e2,"sx",sx),
cR:[[red, fx,-xL,rhs(sx[1])],[cyan, 0,-xL,rhs(sx[1])]],cBC:[[blue,y=fx ],[blue,y=0 ] ] /*~◆修正*/,
T:"y =2*x -4 <0" /*~◆修正*/,
/*O:[xL,yL],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labO,labO,labO,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O]],[false,[A,B]]] /**/,
pB:[[false,[O]]] /**/,
print(float(["print",T,cR,cBC,pB,pCR,lab,-xL,xL,-yL,yL] ) ) /**/,
gr(T,cR,cBC,pB,pCR,lab,-xL,xL,-yL,yL) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("2*x -4 <0の解は?") /*~(◆修正)*/,
ex21:["ex21, y=2*x-4は、x<2で、y =2*x-4 <0 << グラフから >>",
/**/float([KKK,[e2,x<2,"で、y=",e,2*x-4<0 ] ]) ] /*(◆修正)*/,
/**/print(ex21),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"●例18・練習34 701 4*x -3 >=0の解は?" /*~ "(◆変更部分)" */,
/*
*/
*/END:"Finish"$
B 2次不等式と2次関数
/*=WORK:"702 2次関数の値の符号●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●例19 702 y=x^2-6*x +5 の値の符号がーとなるのは?" /*~(◆変更部分)*/,
KOUSATU:"2次式の場合は、・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,cR,cBC,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=cBC[1][1],line_width=cBC[1][3],
/*....*/implicit(cBC[1][2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[2][1],line_width=cBC[2][3],
/*....*/implicit(cBC[2][2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[3][1],line_width=cBC[2][3],
/*....*/implicit(cBC[3][2],x,xm,xM,y,ym,yM),
/*....*/color=cR[1][1],line_width=cR[1][5],
/*....*/explicit(cR[1][2],x,cR[1][3],cR[1][4]),
/*....*/color=cR[2][1],line_width=cR[2][5],
/*....*/explicit(cR[2][2],x,cR[2][3],cR[2][4]),
/*....*/color=black,line_width=1,
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print("y=x^2-6*x +5 の値の符号がーとなるのは?") /*~(◆修正)*/,
ex10:["ex10, e:x^2-6*x +5 < 0",
/*=*/float([KKK,Tejun1:["e:",e:x^2-6*x +5< 0,"-> a=",a:coeff(lhs(e),x,2),"b=",b:coeff(lhs(e),x,1),"sgn:",sgn:"<",
"c=",c:coeff(lhs(e),x,0),"Dhan:",Dhan:b^2-4*a*c,"=",16 ]])] /*係数、判別式*//*~(◆修正)*/,
print(ex10),
ex11:["ex11, Dhan>0 -> x1:(-b-sqrt(Dhan))/2 =1, x2:(-b+sqrt(Dhan)/2 =5 << 判別式正なら2解 >>"/*~*/,
/**/float([KKK,["x1:",x1:(-b-sqrt(Dhan))/2," =",1,"x2:",x2:(-b+sqrt(Dhan))/2," =",5 ] ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, a >0,e < 0 -> Kx:[x1 < x , x < x2] =[1 < x, x < 5] << a正なら2解の間が負 >>"/*~*/,
/**/float([KKK,["Kx:",Kx:(load(fourier_elim),fourier_elim( [e], [x]) ),"=",[1 < x, x < 5] ] ]) ] /*(◆修正)*/,
print(ex12),
ans:["ans, Kx,[1 < x, x < 5] << 解 >>",
/**/float([KKK,["Kx:",Kx,[1 < x, x < 5] ] ]) ] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print("y=x^2-6*x +5 の値の符号がーとなるのは?") /*~(◆修正)*/,
fx:lhs(e),print([fx,x1,x2]),
O:[0,0],A:[x1,subst(x=x1,fx) ],B:[x2,subst(x=x2,fx) ],
print([C:[px:-b/(2*a),py:subst(x=px,fx)],[3,-4],D:[px,0],[3,0],La:x=px,r:5 ]) /*頂点,軸,r:描画の範囲*//*(◆修正)*/,
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] /**/,
labO:lab("O",O+dO),labA:lab("X1",A+dA),labB:lab("X2",B+dB),labC:lab("P",C+dC),labD:lab("Q",D+dD),
E:[0,0],labE:lab("E",E+dE) /*虚数解なら"X1","X2"を" "に*//*(◆修正)*/,
print(float([labO,labA,labB,labC,labD] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("y=x^2-6*x +5 の値の符号がーとなるのは?") /*~(◆修正)*/,
yM:r*1.2,xM:yM/4.8*6.8,print(Kx,x1,x2),
cR:[[red, 0,x1,x2,2],[blue, fx,x1,x2,2]],cBC:[[black,y=0,2 ],[cyan,y=fx,1 ],[blue,La,2 ] ] /*cR:陽関数,cBC:陰関数*//*~◆修正*/,
T:"y =x^2-6*x +5 x< 0" /*グラフタイトル*//*~◆修正*/,
/*O:[xM,yM],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labC,labD,labO,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O]],[false,[A,B]]] /*pCR[1]:cyan,pCR[2]:red 点*//**/,
pB:[[false,[C,D]]] /*pB:blue 点*//**/,
print(float(["print",T,cR,cBC,pB,pCR,lab,-xM,xM,-yM,yM] ) ) /**/,
gr(T,cR,cBC,pB,pCR,lab,-xM,xM,-yM,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("y=x^2-6*x +5 の値の符号がーとなるのは?") /*~(◆修正)*/,
ex21:["ex21, y=x^2-6*x +5は、1< x,x< 5で、y =x^2-6*x +5 < 0, << グラフから >>",
/**/float([KKK,[Kx,[1< x,x< 5],"-> y=",fx,x^2-6*x +5< 0 ] ]) ] /*(◆修正)*/,
/**/print(ex21),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"●例19 702 y=x^2-6*x +5 の値の符号が+となるのは?" /*~ "(◆変更部分)" */,
/*
*/
*/END:"Finish"$
C 2次不等式の解き方
▼コマンド番号703
/*=WORK:"703 2次不等式の解き方●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●例20・練習35 703 (x-2)*(x-4) > 0を解くと?" /*~(◆変更部分)*/,
KOUSATU:"2次式の場合は、・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,cR,cBC,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=cBC[1][1],line_width=cBC[1][3],
/*....*/implicit(cBC[1][2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[2][1],line_width=cBC[2][3],
/*....*/implicit(cBC[2][2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[3][1],line_width=cBC[2][3],
/*....*/implicit(cBC[3][2],x,xm,xM,y,ym,yM),
/*....*/color=cR[1][1],line_width=cR[1][5],
/*....*/explicit(cR[1][2],x,cR[1][3],cR[1][4]),
/*....*/color=cR[2][1],line_width=cR[2][5],
/*....*/explicit(cR[2][2],x,cR[2][3],cR[2][4]),
/*....*/color=black,line_width=1,
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print(" (x-2)*(x-4) > 0を解くと?") /*~(◆修正)*/,
ex10:["ex10, e:(x-2)*(x-4) > 0",
/*=*/float([KKK,Tejun1:["e:",e:(x-2)*(x-4) > 0,"-> a=",a:coeff(expand(lhs(e)),x,2),"b=",b:coeff(expand(lhs(e)),x,1),
"c=",c:coeff(expand(lhs(e)),x,0),"Dhan=",Dhan:b^2-4*a*c ]])] /*係数、判別式*//*~(◆修正)*/,
print(ex10),
ex11:["ex11, x1:(-b-sqrt(Dhan))/2 =2, x2:(-b+sqrt(Dhan)/2 =4 << 因数分解から2解 >>"/*~*/,
/**/float([KKK,["x1:",x1:(-b-sqrt(Dhan))/2," =",2,"x2:",x2:(-b+sqrt(Dhan))/2," =",4 ] ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, a >0,e > 0 -> Kx:[x < x1 , x1 < x] =[x < 2, 4 < x] << a正なら2解の間が負 >>"/*~*/,
/**/float([KKK,["Kx:",Kx:(load(fourier_elim),fourier_elim( [e], [x]) ),"=",[x < 2, 4 < x] ] ]) ] /*(◆修正)*/,
print(ex12),
ans:["ans, Kx,[x < 2, 4 < x] << 解 >>",
/**/float([KKK,["Kx:",Kx,[x < 2, 4 < x] ] ]) ] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print("y=(x-2)*(x-4) > 0を解くと?") /*~(◆修正)*/,
fx:lhs(e),print([fx,x1,x2]),
O:[0,0],A:[x1,subst(x=x1,fx) ],B:[x2,subst(x=x2,fx) ],
print([C:[px:-b/(2*a),py:subst(x=px,fx)],[3,-4],D:[px,0],[3,0],La:x=px,r:5 ]) /*頂点,軸,r:描画の範囲*//*(◆修正)*/,
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] /**/,
labO:lab("O",O+dO),labA:lab("X1",A+dA),labB:lab("X2",B+dB),labC:lab("P",C+dC),labD:lab("Q",D+dD),
E:[0,0],labE:lab("E",E+dE) /*虚数解なら"X1","X2"を" "に*//*(◆修正)*/,
print(float([labO,labA,labB,labC,labD] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("y=(x-2)*(x-4) > 0を解くと?") /*~(◆修正)*/,
yM:r*1.2,xM:yM/4.8*6.8,print(Kx,x1,x2),
cR:[[red, 0,x1,x2,2],[blue, fx,x1,x2,2]],cBC:[[black,y=0,2 ],[cyan,y=fx,1 ],[blue,La,2 ] ] /*cR:陽関数,cBC:陰関数*//*~◆修正*/,
T:"y =(x-2)*(x-4) > 0" /*グラフタイトル*//*~◆修正*/,
/*O:[xM,yM],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labC,labD,labO,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O]],[false,[A,B]]] /*pCR[1]:cyan,pCR[2]:red 点*//**/,
pB:[[false,[C,D]]] /*pB:blue 点*//**/,
print(float(["print",T,cR,cBC,pB,pCR,lab,-xM,xM,-yM,yM] ) ) /**/,
gr(T,cR,cBC,pB,pCR,lab,-xM,xM,-yM,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("y=(x-2)*(x-4) > 0を解くと?") /*~(◆修正)*/,
ex21:["ex21, y=(x-2)*(x-4)は、x < 2, 4 < xで、y =(x-2)*(x-4) > 0, << グラフから >>",
/**/float([KKK,[Kx,[x < 2, 4 < x],"-> y=",fx,(x-2)*(x-4) > 0 ] ]) ] /*(◆修正)*/,
/**/print(ex21),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"●例20・練習35 703 x*(x+1) < 0を解くと?" /*~ "(◆変更部分)" */,
/*
*/
*/END:"Finish"$
▼コマンド番号704
/*=WORK:"704 2次不等式の解き方●●●●"$*/
/*(kill(all),CHECK:"(インストールMaximaでは、行頭の/*を行末へ移動すること)")$
*/
(MONDAI:"●練習36 704 x^2 -5*x +6 >0を解くと?" /*~(◆変更部分)*/,
KOUSATU:"2次式の場合は、・・・"/*~(◆変更部分)*/,
End:"Mondai")$
(KANSUU:"",
gr(T,cR,cBC,pB,pCR,lab,xm,xM,ym,yM):=block(
/**/wxdraw2d(
/*....*/title =T, yrange=[ym,yM] /* "タイトルと値域" */,
/*....*/color=cBC[1][1],line_width=cBC[1][3],
/*....*/implicit(cBC[1][2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[2][1],line_width=cBC[2][3],
/*....*/implicit(cBC[2][2],x,xm,xM,y,ym,yM),
/*....*/color=cBC[3][1],line_width=cBC[2][3],
/*....*/implicit(cBC[3][2],x,xm,xM,y,ym,yM),
/*....*/color=cR[1][1],line_width=cR[1][5],
/*....*/explicit(cR[1][2],x,cR[1][3],cR[1][4]),
/*....*/color=cR[2][1],line_width=cR[2][5],
/*....*/explicit(cR[2][2],x,cR[2][3],cR[2][4]),
/*....*/color=black,line_width=1,
/*....*/color=black,
/*....*/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 =pCR[2][1],point_size =1,points(pCR[2][2]) /* "点pCR[2]を赤で" */,
/*....*/color=cyan,point_type =7,line_width=2,
/*....*/points_joined =pCR[1][1],point_size =1,points(pCR[1][2]) /* "点pCR[1]をシアンで" */,
/*....*/color=blue,point_type =6,
/*....*/points_joined =pB[1][1],point_size =1,points(pB[1][2]) /* "点pBを青で" */,
/*....*/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[2][11],lab[2][12],lab[2][13],lab[2][14],lab[2][15],
/*....*/lab[2][16],lab[2][17],lab[2][18],lab[2][19]) /* "文字書込" */),
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 解析的",print(" x^2 -5*x +6 >0を解くと?") /*~(◆修正)*/,
ex10:["ex10, e:x^2 -5*x +6 > 0",
/*=*/float([KKK,Tejun1:["e:",e:x^2 -5*x +6 > 0,"-> a=",a:coeff(expand(lhs(e)),x,2),"b=",b:coeff(expand(lhs(e)),x,1),
"c=",c:coeff(expand(lhs(e)),x,0),"Dhan=",Dhan:b^2-4*a*c ]])] /*係数、判別式*//*~(◆修正)*/,
print(ex10),
ex11:["ex11, (x-2)*(x-3) > 0 -> x1:(-b-sqrt(Dhan))/2 =2, x2:(-b+sqrt(Dhan)/2 =3 << 因数分解から2解 >>"/*~*/,
/**/float([KKK,["x1:",x1:(-b-sqrt(Dhan))/2," =",2,"x2:",x2:(-b+sqrt(Dhan))/2," =",3 ] ]) ] /*(◆修正)*/,
print(ex11),
ex12:["ex12, a >0,e > 0 -> Kx:[x < x1 , x2 < x] =[x < 2, 3 < x] << a正なら2解の間が負 >>"/*~*/,
/**/float([KKK,["Kx:",Kx:(load(fourier_elim),fourier_elim( [e], [x]) ),"=",[x < 2, 3 < x] ] ]) ] /*(◆修正)*/,
print(ex12),
ans:["ans, Kx,[x < 2, 3 < x] << 解 >>",
/**/float([KKK,["Kx:",Kx,[x < 2, 3 < x] ] ]) ] /*(◆修正)*/,
print(ans),
/**/End:"Tejun1")$
(GJUNBI:"グラフ準備",print("y=x^2 -5*x +6 >0を解くと?") /*~(◆修正)*/,
fx:lhs(e),print([fx,x1,x2]),
O:[0,0],A:[x1,subst(x=x1,fx) ],B:[x2,subst(x=x2,fx) ],
print([C:[px:-b/(2*a),py:subst(x=px,fx)],[3,-4],D:[px,0],[3,0],La:x=px,r:3 ]) /*頂点,軸,r:描画の範囲*//*(◆修正)*/,
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] /**/,
labO:lab("O",O+dO),labA:lab("X1",A+dA),labB:lab("X2",B+dB),labC:lab("P",C+dC),labD:lab("Q",D+dD),
E:[0,0],labE:lab("E",E+dE) /*虚数解なら"X1","X2"を" "に*//*(◆修正)*/,
print(float([labO,labA,labB,labC,labD] ) ) ,
/**/End:"GJunbi")$
(GKAKUNIN:"グラフを書いて、視覚的に確認",print("y=x^2 -5*x +6 > 0を解くと?") /*~(◆修正)*/,
yM:r*1.2,xM:yM/4.8*6.8,print(Kx,x1,x2),
cR:[[red, 0,x1,x2,2],[blue, fx,x1,x2,2]],cBC:[[black,y=0,2 ],[cyan,y=fx,1 ],[blue,La,2 ] ] /*cR:陽関数,cBC:陰関数*//*~◆修正*/,
T:"y =x^2 -5*x +6 > 0" /*グラフタイトル*//*~◆修正*/,
/*O:[xM,yM],dO:[0,0],labO:lab(" ",O+dO),*/
lab:[19,[labO,labA,labB,labC,labD,labO,labO,labO,labO,labO,labO,labO,labO,labO ,
/**/labO,labO,labO,labO,labO]] ,
pCR:[[false,[O]],[false,[A,B]]] /*pCR[1]:cyan,pCR[2]:red 点*//**/,
pB:[[false,[C,D]]] /*pB:blue 点*//**/,
print(float(["print",T,cR,cBC,pB,pCR,lab,-xM,xM,-yM,yM] ) ) /**/,
gr(T,cR,cBC,pB,pCR,lab,-xM,xM,-yM,yM) /* "グラフ出力すると" */ /**/,
/**/End:"GKakunin")$
(TEJUN2: "2 図形的",print(Tejun1),print("y=x^2 -5*x +6 > 0を解くと?") /*~(◆修正)*/,
ex21:["ex21, y=x^2 -5*x +6は、x < 2, 3 < xで、y =x^2 -5*x +6 > 0, << グラフから >>",
/**/float([KKK,[Kx,[x < 2, 3 < x],"-> y=",fx,x^2 -5*x +6 > 0 ] ]) ] /*(◆修正)*/,
/**/print(ex21),
/**/print(ans),
/**/End:"Tejun2")$
(MATOME:"",
print(MONDAI),
print(ans),
/**/End:"EndMatome")$
/*=*//*◆◆◆◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
(MONDAI1:"●練習36 704 x^2 +x -2 < 0を解くを解くと?" /*~ "(◆変更部分)" */,
/*
*/
*/END:"Finish"$
▼コマンド番号705
●例題11・練習37
2次不等式を解く●●●●●●●●●●●●●●●●
kill(all) /* "705 2次不等式を解く(Maxima on lineでは削除)" */$
MONDAI:"705 下の問題の不等式について";
gr22(ieY,xm,xM,ym,yM):=block([Y,x1,x2,xL,xS,a2,a1,a0,D],
/**/Y:expand(lhs(ieY)),
/**/xL:solve(Y=0,x) /* "ゼロ点xLを求めて" */,
/**/a2:coeff(Y,x,2) /* "x^2の係数を求めて" */,
/**/a1:coeff(Y,x,1) /* "xの係数を求めて" */,
/**/a0:coeff(Y,x,0) /* "定数を求めて" */,
/**/D:a1^2-4*a2*a0,
/**/eJ:x=-a1/(2*a2),
/**/pP:[[rhs(eJ),subst(eJ,Y)]] /* "y切片を求めて" */,
/**/if a2>0 then(cL:red,cC:blue,cR:red /* "ゼロ点の両外側がグラフ正で赤" */
/*....*/)else(cL:blue,cC:red,cR:blue /* "ゼロ点の間がグラフ正で赤" */
/*....*/),
/**/if D>0 then(
/*........*/if rhs(xL[1])<rhs(xL[2])then(
/*................*/x1:rhs(xL[1]),x2:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)else(
/*................*/x2:rhs(xL[1]),x1:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)
/*....*/)elseif D=0 then(x1:rhs(xL[1]),x2:x1,xS:[[x1,0]]
/*........*/)else(x1:xM,x2:xM,xS:pP,xL:"グラフのゼロ点なし"
/*........*/),
/**/if xm<x1 and x2<xM or x1=xM and x2=xM then(
/*........*/if subst(x=x1,ieY) then pt:7 else pt:6 /* "ゼロ点が解なら●" */,
/*........*/if subst(x=xm,ieY) then (lwL:5,pc:cL) else lwL:1
/*........*//* "ゼロ点の外側が太く、ゼロ点の色も外側と同じ" */,
/*........*/if D>0 and subst(eJ,ieY) then (lwC:5,pc:cC) else lwC:1
/*........*//* "ゼロ点の内側が太く、ゼロ点の色も内側と同じ" */,
/*........*/if D>=0 then ps:4 else (ps:1,pc:cL,pt:6)
/*........*//* "ゼロ点がないときは、頂点を最小表示" */,
/*........*/wxdraw2d(
/*............*/yrange=[ym,yM] /* "凹凸と値域を確認し" */,
/*............*/color=cL,
/*............*/line_width =2,explicit(Y,x,xm,x1) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =2,explicit(Y,x,x2,xM) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =lwL,
/*............*/implicit(y=0,x,xm,x1,y,ym,yM) /* "x軸を描き" */,
/*............*/implicit(y=0,x,x2,xM,y,ym,yM) /* "x軸を描き" */,
/*............*/color=cC,
/*............*/line_width =2,explicit(Y,x,x1,x2) /* "Y中間を中間の色で" */,
/*............*/line_width =lwC,
/*............*/implicit(y=0,x,x1,x2,y,ym,yM) /* "x軸を描き" */,
/*............*/color=black,line_width =1,
/*............*/implicit(x=0,x,xm,xM,y,ym,yM) /* "y軸を描く" */,
/*............*/color=cL,point_type=6,point_size=1,points(pP) /* "頂点を描く" */,
/*............*/color=pc,point_type=pt,point_size=ps,points(xS) /* "ゼロ点を描く" */
/*............*/)
/*....*/)else(print("ゼロ点は範囲外")),
/**/print(MONDAI1),
/**/print(ieY," 不等式"),
/**/print("y=",Y," グラフ"),
/**/print(pP," 頂点"),
/**/xL
/**/)$
MONDAI1:"2*x^2 -5*x -3 >0を解く" /* "(◆修正部分)" */;
e:2*x^2 -5*x -3 >0 /* "(◆修正部分)" */;
xL:gr22(e,-5,5,-10,10);
print((e),"となるxは、グラフから") $
print("(x<-1/2 or 3<x)") /* "(◆修正時訂正)" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"x^2 -5 >0を解く" /* "(◆修正部分)" */;
e:x^2 -5 >0 /* "(◆修正部分)" */;
▼コマンド番号706
●例題12・練習38
2次不等式を解く●●●●●●●●●●●●●●●●
kill(all) /* "706 2次不等式を解く(Maxima on lineでは削除)" */$
MONDAI:"706 下の問題の不等式について";
gr22(ieY,xm,xM,ym,yM):=block([Y,x1,x2,xL,xS,a2,a1,a0,D],
/**/Y:expand(lhs(ieY)),
/**/xL:solve(Y=0,x) /* "ゼロ点xLを求めて" */,
/**/a2:coeff(Y,x,2) /* "x^2の係数を求めて" */,
/**/a1:coeff(Y,x,1) /* "xの係数を求めて" */,
/**/a0:coeff(Y,x,0) /* "定数を求めて" */,
/**/D:a1^2-4*a2*a0,
/**/eJ:x=-a1/(2*a2),
/**/pP:[[rhs(eJ),subst(eJ,Y)]] /* "y切片を求めて" */,
/**/if a2>0 then(cL:red,cC:blue,cR:red /* "ゼロ点の両外側がグラフ正で赤" */
/*....*/)else(cL:blue,cC:red,cR:blue /* "ゼロ点の間がグラフ正で赤" */
/*....*/),
/**/if D>0 then(
/*........*/if rhs(xL[1])<rhs(xL[2])then(
/*................*/x1:rhs(xL[1]),x2:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)else(
/*................*/x2:rhs(xL[1]),x1:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)
/*....*/)elseif D=0 then(x1:rhs(xL[1]),x2:x1,xS:[[x1,0]]
/*........*/)else(x1:xM,x2:xM,xS:pP,xL:"グラフのゼロ点なし"
/*........*/),
/**/if xm<x1 and x2<xM or x1=xM and x2=xM then(
/*........*/if subst(x=x1,ieY) then pt:7 else pt:6 /* "ゼロ点が解なら●" */,
/*........*/if subst(x=xm,ieY) then (lwL:5,pc:cL) else lwL:1
/*........*//* "ゼロ点の外側が太く、ゼロ点の色も外側と同じ" */,
/*........*/if D>0 and subst(eJ,ieY) then (lwC:5,pc:cC) else lwC:1
/*........*//* "ゼロ点の内側が太く、ゼロ点の色も内側と同じ" */,
/*........*/if D>=0 then ps:4 else (ps:1,pc:cL,pt:6)
/*........*//* "ゼロ点がないときは、頂点を最小表示" */,
/*........*/wxdraw2d(
/*............*/yrange=[ym,yM] /* "凹凸と値域を確認し" */,
/*............*/color=cL,
/*............*/line_width =2,explicit(Y,x,xm,x1) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =2,explicit(Y,x,x2,xM) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =lwL,
/*............*/implicit(y=0,x,xm,x1,y,ym,yM) /* "x軸を描き" */,
/*............*/implicit(y=0,x,x2,xM,y,ym,yM) /* "x軸を描き" */,
/*............*/color=cC,
/*............*/line_width =2,explicit(Y,x,x1,x2) /* "Y中間を中間の色で" */,
/*............*/line_width =lwC,
/*............*/implicit(y=0,x,x1,x2,y,ym,yM) /* "x軸を描き" */,
/*............*/color=black,line_width =1,
/*............*/implicit(x=0,x,xm,xM,y,ym,yM) /* "y軸を描く" */,
/*............*/color=cL,point_type=6,point_size=1,points(pP) /* "頂点を描く" */,
/*............*/color=pc,point_type=pt,point_size=ps,points(xS) /* "ゼロ点を描く" */
/*............*/)
/*....*/)else(print("ゼロ点は範囲外")),
/**/print(MONDAI1),
/**/print(ieY," 不等式"),
/**/print("y=",Y," グラフ"),
/**/print(pP," 頂点"),
/**/xL
/**/)$
MONDAI1:"-x^2 +4*x +1 <=0を解く" /* "(◆修正部分)" */;
e:-x^2 +4*x +1 <=0 /* "(◆修正部分)" */;
xL:gr22(e,-5,5,-10,10);
print((e),"となるxは、グラフから") $
print("(x<2-sqrt(5) or 2+sqrt(5)<x)") /* "(◆修正時訂正)" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"-3*x^2 +5*x -1 >=0を解く" /* "(◆修正部分)" */;
e:-3*x^2 +5*x -1 >=0 /* "(◆修正部分)" */;
D 2次不等式の解き方
▼コマンド番号707
●例21・練習39
2次不等式を解く●●●●●●●●●●●●●●●●
kill(all) /* "707 2次不等式を解く(Maxima on lineでは削除)" */$
MONDAI:"707 下の問題の不等式について";
gr22(ieY,xm,xM,ym,yM):=block([Y,x1,x2,xL,xS,a2,a1,a0,D],
/**/Y:expand(lhs(ieY)),
/**/xL:solve(Y=0,x) /* "ゼロ点xLを求めて" */,
/**/a2:coeff(Y,x,2) /* "x^2の係数を求めて" */,
/**/a1:coeff(Y,x,1) /* "xの係数を求めて" */,
/**/a0:coeff(Y,x,0) /* "定数を求めて" */,
/**/D:a1^2-4*a2*a0,
/**/eJ:x=-a1/(2*a2),
/**/pP:[[rhs(eJ),subst(eJ,Y)]] /* "y切片を求めて" */,
/**/if a2>0 then(cL:red,cC:blue,cR:red /* "ゼロ点の両外側がグラフ正で赤" */
/*....*/)else(cL:blue,cC:red,cR:blue /* "ゼロ点の間がグラフ正で赤" */
/*....*/),
/**/if D>0 then(
/*........*/if rhs(xL[1])<rhs(xL[2])then(
/*................*/x1:rhs(xL[1]),x2:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)else(
/*................*/x2:rhs(xL[1]),x1:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)
/*....*/)elseif D=0 then(x1:rhs(xL[1]),x2:x1,xS:[[x1,0]]
/*........*/)else(x1:xM,x2:xM,xS:pP,xL:"グラフのゼロ点なし"
/*........*/),
/**/if xm<x1 and x2<xM or x1=xM and x2=xM then(
/*........*/if subst(x=x1,ieY) then pt:7 else pt:6 /* "ゼロ点が解なら●" */,
/*........*/if subst(x=xm,ieY) then (lwL:5,pc:cL) else lwL:1
/*........*//* "ゼロ点の外側が太く、ゼロ点の色も外側と同じ" */,
/*........*/if D>0 and subst(eJ,ieY) then (lwC:5,pc:cC) else lwC:1
/*........*//* "ゼロ点の内側が太く、ゼロ点の色も内側と同じ" */,
/*........*/if D>=0 then ps:4 else (ps:1,pc:cL,pt:6)
/*........*//* "ゼロ点がないときは、頂点を最小表示" */,
/*........*/wxdraw2d(
/*............*/yrange=[ym,yM] /* "凹凸と値域を確認し" */,
/*............*/color=cL,
/*............*/line_width =2,explicit(Y,x,xm,x1) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =2,explicit(Y,x,x2,xM) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =lwL,
/*............*/implicit(y=0,x,xm,x1,y,ym,yM) /* "x軸を描き" */,
/*............*/implicit(y=0,x,x2,xM,y,ym,yM) /* "x軸を描き" */,
/*............*/color=cC,
/*............*/line_width =2,explicit(Y,x,x1,x2) /* "Y中間を中間の色で" */,
/*............*/line_width =lwC,
/*............*/implicit(y=0,x,x1,x2,y,ym,yM) /* "x軸を描き" */,
/*............*/color=black,line_width =1,
/*............*/implicit(x=0,x,xm,xM,y,ym,yM) /* "y軸を描く" */,
/*............*/color=cL,point_type=6,point_size=1,points(pP) /* "頂点を描く" */,
/*............*/color=pc,point_type=pt,point_size=ps,points(xS) /* "ゼロ点を描く" */
/*............*/)
/*....*/)else(print("ゼロ点は範囲外")),
/**/print(MONDAI1),
/**/print(ieY," 不等式"),
/**/print("y=",Y," グラフ"),
/**/print(pP," 頂点"),
/**/xL
/**/)$
MONDAI1:"x^2 -6*x +9 >0を解く" /* "(◆修正部分)" */;
e:x^2 -6*x +9 >0 /* "(◆修正部分)" */;
xL:gr22(e,-5,5,-10,10);
print((e),"となるxは、グラフから") $
print("(x<3 or 3<x)") /* "(◆修正時訂正)" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"4*x^2 -4*x +1 >=0を解く" /* "(◆修正部分)" */;
e:4*x^2 -4*x +1 >=0 /* "(◆修正部分)" */;
▼コマンド番号708
●例22・練習40
2次不等式を解く●●●●●●●●●●●●●●●●
kill(all) /* "708 2次不等式を解く(Maxima on lineでは削除)" */$
MONDAI:"708 下の問題の不等式について";
gr22(ieY,xm,xM,ym,yM):=block([Y,x1,x2,xL,xS,a2,a1,a0,D],
/**/Y:expand(lhs(ieY)),
/**/xL:solve(Y=0,x) /* "ゼロ点xLを求めて" */,
/**/a2:coeff(Y,x,2) /* "x^2の係数を求めて" */,
/**/a1:coeff(Y,x,1) /* "xの係数を求めて" */,
/**/a0:coeff(Y,x,0) /* "定数を求めて" */,
/**/D:a1^2-4*a2*a0,
/**/eJ:x=-a1/(2*a2),
/**/pP:[[rhs(eJ),subst(eJ,Y)]] /* "y切片を求めて" */,
/**/if a2>0 then(cL:red,cC:blue,cR:red /* "ゼロ点の両外側がグラフ正で赤" */
/*....*/)else(cL:blue,cC:red,cR:blue /* "ゼロ点の間がグラフ正で赤" */
/*....*/),
/**/if D>0 then(
/*........*/if rhs(xL[1])<rhs(xL[2])then(
/*................*/x1:rhs(xL[1]),x2:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)else(
/*................*/x2:rhs(xL[1]),x1:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)
/*....*/)elseif D=0 then(x1:rhs(xL[1]),x2:x1,xS:[[x1,0]]
/*........*/)else(x1:xM,x2:xM,xS:pP,xL:"グラフのゼロ点なし"
/*........*/),
/**/if xm<x1 and x2<xM or x1=xM and x2=xM then(
/*........*/if subst(x=x1,ieY) then pt:7 else pt:6 /* "ゼロ点が解なら●" */,
/*........*/if subst(x=xm,ieY) then (lwL:5,pc:cL) else lwL:1
/*........*//* "ゼロ点の外側が太く、ゼロ点の色も外側と同じ" */,
/*........*/if D>0 and subst(eJ,ieY) then (lwC:5,pc:cC) else lwC:1
/*........*//* "ゼロ点の内側が太く、ゼロ点の色も内側と同じ" */,
/*........*/if D>=0 then ps:4 else (ps:1,pc:cL,pt:6)
/*........*//* "ゼロ点がないときは、頂点を最小表示" */,
/*........*/wxdraw2d(
/*............*/yrange=[ym,yM] /* "凹凸と値域を確認し" */,
/*............*/color=cL,
/*............*/line_width =2,explicit(Y,x,xm,x1) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =2,explicit(Y,x,x2,xM) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =lwL,
/*............*/implicit(y=0,x,xm,x1,y,ym,yM) /* "x軸を描き" */,
/*............*/implicit(y=0,x,x2,xM,y,ym,yM) /* "x軸を描き" */,
/*............*/color=cC,
/*............*/line_width =2,explicit(Y,x,x1,x2) /* "Y中間を中間の色で" */,
/*............*/line_width =lwC,
/*............*/implicit(y=0,x,x1,x2,y,ym,yM) /* "x軸を描き" */,
/*............*/color=black,line_width =1,
/*............*/implicit(x=0,x,xm,xM,y,ym,yM) /* "y軸を描く" */,
/*............*/color=cL,point_type=6,point_size=1,points(pP) /* "頂点を描く" */,
/*............*/color=pc,point_type=pt,point_size=ps,points(xS) /* "ゼロ点を描く" */
/*............*/)
/*....*/)else(print("ゼロ点は範囲外")),
/**/print(MONDAI1),
/**/print(ieY," 不等式"),
/**/print("y=",Y," グラフ"),
/**/print(pP," 頂点"),
/**/xL
/**/)$
MONDAI1:"x^2 -6*x +10>0を解く" /* "(◆修正部分)" */;
e:x^2 -6*x +10 >0 /* "(◆修正部分)" */;
xL:gr22(e,-5,5,-10,10);
print((e),"となるxは、グラフから") $
print("(実数全体)") /* "(◆修正時訂正)" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"2*x^2 +4*x +3 <=0を解く" /* "(◆修正部分)" */;
e:2*x^2 +4*x +3 <=0 /* "(◆修正部分)" */;
E 2次不等式の解き方のまとめ
▼コマンド番号709
●例題13・練習41
2次不等式を解く●●●●●●●●●●●●●●●●
kill(all) /* "709 2次不等式を解く(Maxima on lineでは削除)" */$
MONDAI:"709 下の問題の不等式について";
gr22(ieY,xm,xM,ym,yM):=block([Y,x1,x2,xL,xS,a2,a1,a0,D],
/**/Y:expand(lhs(ieY)),
/**/xL:solve(Y=0,x) /* "ゼロ点xLを求めて" */,
/**/a2:coeff(Y,x,2) /* "x^2の係数を求めて" */,
/**/a1:coeff(Y,x,1) /* "xの係数を求めて" */,
/**/a0:coeff(Y,x,0) /* "定数を求めて" */,
/**/D:a1^2-4*a2*a0,
/**/eJ:x=-a1/(2*a2),
/**/pP:[[rhs(eJ),subst(eJ,Y)]] /* "y切片を求めて" */,
/**/if a2>0 then(cL:red,cC:blue,cR:red /* "ゼロ点の両外側がグラフ正で赤" */
/*....*/)else(cL:blue,cC:red,cR:blue /* "ゼロ点の間がグラフ正で赤" */
/*....*/),
/**/if D>0 then(
/*........*/if rhs(xL[1])<rhs(xL[2])then(
/*................*/x1:rhs(xL[1]),x2:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)else(
/*................*/x2:rhs(xL[1]),x1:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)
/*....*/)elseif D=0 then(x1:rhs(xL[1]),x2:x1,xS:[[x1,0]]
/*........*/)else(x1:xM,x2:xM,xS:pP,xL:"グラフのゼロ点なし"
/*........*/),
/**/if xm<x1 and x2<xM or x1=xM and x2=xM then(
/*........*/if subst(x=x1,ieY) then pt:7 else pt:6 /* "ゼロ点が解なら●" */,
/*........*/if subst(x=xm,ieY) then (lwL:5,pc:cL) else lwL:1
/*........*//* "ゼロ点の外側が太く、ゼロ点の色も外側と同じ" */,
/*........*/if D>0 and subst(eJ,ieY) then (lwC:5,pc:cC) else lwC:1
/*........*//* "ゼロ点の内側が太く、ゼロ点の色も内側と同じ" */,
/*........*/if D>=0 then ps:4 else (ps:1,pc:cL,pt:6)
/*........*//* "ゼロ点がないときは、頂点を最小表示" */,
/*........*/wxdraw2d(
/*............*/yrange=[ym,yM] /* "凹凸と値域を確認し" */,
/*............*/color=cL,
/*............*/line_width =2,explicit(Y,x,xm,x1) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =2,explicit(Y,x,x2,xM) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =lwL,
/*............*/implicit(y=0,x,xm,x1,y,ym,yM) /* "x軸を描き" */,
/*............*/implicit(y=0,x,x2,xM,y,ym,yM) /* "x軸を描き" */,
/*............*/color=cC,
/*............*/line_width =2,explicit(Y,x,x1,x2) /* "Y中間を中間の色で" */,
/*............*/line_width =lwC,
/*............*/implicit(y=0,x,x1,x2,y,ym,yM) /* "x軸を描き" */,
/*............*/color=black,line_width =1,
/*............*/implicit(x=0,x,xm,xM,y,ym,yM) /* "y軸を描く" */,
/*............*/color=cL,point_type=6,point_size=1,points(pP) /* "頂点を描く" */,
/*............*/color=pc,point_type=pt,point_size=ps,points(xS) /* "ゼロ点を描く" */
/*............*/)
/*....*/)else(print("ゼロ点は範囲外")),
/**/print(MONDAI1),
/**/print(ieY," 不等式"),
/**/print("y=",Y," グラフ"),
/**/print(pP," 頂点"),
/**/xL
/**/)$
MONDAI1:"2*x^2 -3*x +4 >0を解く" /* "(◆修正部分)" */;
e:2*x^2 -3*x +4 >0 /* "(◆修正部分)" */;
xL:gr22(e,-5,5,-10,10);
print((e),"となるxは、グラフから") $
print("(実数全体)") /* "(◆修正時訂正)" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"x^2 -3*x +2 > 2*x^2 -xを解く" /* "(◆修正部分)" */;
e:(x^2 -3*x +2)-(2*x^2 -x) > 0 /* "(◆修正部分)" */;
F 2次不等式の応用
▼コマンド番号710
●応用例題4・練習42
2次不等式を解く●●●●●●●●●●●●●●●●
kill(all) /* "710 2次不等式を解く(Maxima on lineでは削除)" */$
MONDAI:"710 下の問題の不等式について";
gr22(ieY,xm,xM,ym,yM):=block([Y,x1,x2,xL,xS,a2,a1,a0,D],
/**/Y:expand(lhs(ieY)),
/**/xL:solve(Y=0,x) /* "ゼロ点xLを求めて" */,
/**/a2:coeff(Y,x,2) /* "x^2の係数を求めて" */,
/**/a1:coeff(Y,x,1) /* "xの係数を求めて" */,
/**/a0:coeff(Y,x,0) /* "定数を求めて" */,
/**/D:a1^2-4*a2*a0,
/**/eJ:x=-a1/(2*a2),
/**/pP:[[rhs(eJ),subst(eJ,Y)]] /* "y切片を求めて" */,
/**/if a2>0 then(cL:red,cC:blue,cR:red /* "ゼロ点の両外側がグラフ正で赤" */
)else(cL:blue,cC:red,cR:blue /* "ゼロ点の間がグラフ正で赤" */
),
/**/if D>0 then(
/*........*/if rhs(xL[1])<rhs(xL[2])then(
/*................*/x1:rhs(xL[1]),x2:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)else(
/*................*/x2:rhs(xL[1]),x1:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)
/*....*/)elseif D=0 then(x1:rhs(xL[1]),x2:x1,xS:[[x1,0]]
/*........*/)else(x1:xM,x2:xM,xS:pP,xL:"グラフのゼロ点なし"
/*........*/),
/**/if xm<x1 and x2<xM or x1=xM and x2=xM then(
/*........*/if subst(x=x1,ieY) then pt:7 else pt:6 /* "ゼロ点が解なら●" */,
/*........*/if subst(x=xm,ieY) then (lwL:5,pc:cL) else lwL:1
/*........*//* "ゼロ点の外側が太く、ゼロ点の色も外側と同じ" */,
/*........*/if D>0 and subst(eJ,ieY) then (lwC:5,pc:cC) else lwC:1
/*........*//* "ゼロ点の内側が太く、ゼロ点の色も内側と同じ" */,
/*........*/if D>=0 then ps:4 else (ps:1,pc:cL,pt:6)
/*........*//* "ゼロ点がないときは、頂点を最小表示" */,
/*........*/wxdraw2d(
/*............*/yrange=[ym,yM] /* "凹凸と値域を確認し" */,
/*............*/color=cL,
/*............*/line_width =2,explicit(Y,x,xm,x1) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =2,explicit(Y,x,x2,xM) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =lwL,
/*............*/implicit(y=0,x,xm,x1,y,ym,yM) /* "x軸を描き" */,
/*............*/implicit(y=0,x,x2,xM,y,ym,yM) /* "x軸を描き" */,
/*............*/color=cC,
/*............*/line_width =2,explicit(Y,x,x1,x2) /* "Y中間を中間の色で" */,
/*............*/line_width =lwC,
/*............*/implicit(y=0,x,x1,x2,y,ym,yM) /* "x軸を描き" */,
/*............*/color=black,line_width =1,
/*............*/implicit(x=0,x,xm,xM,y,ym,yM) /* "y軸を描く" */,
/*............*/color=cL,point_type=6,point_size=1,points(pP) /* "頂点を描く" */,
/*............*/color=pc,point_type=pt,point_size=ps,points(xS) /* "ゼロ点を描く" */
/*............*/)
/*....*/)else(print("ゼロ点は範囲外")),
/**/print(MONDAI1),
/**/print(ieY," 不等式"),
/**/print("y=",Y," グラフ"),
/**/print(pP," 頂点"),
/**/xL
/**/)$
MONDAI1:"方程式2*x^2 +2*m*x +1 =0が実数解をもつとき、定数mの範囲は" /* "(◆修正部分)" */;
D:(m)^2 -(2)*(1) >=0 /* "(◆修正部分)" */;
e:subst(m=x,D) /* "mをxに変えて" */;
xL:gr22(e,-5,5,-10,10);
print((e),"となるmは、グラフから") $
print("(m<-sqrt(2) or sqrt(2)<m)") /* "(◆修正時訂正)" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"方程式2*x^2 +m*x +1 =0が実数解をもつとき、定数mの範囲は" /* "(◆修正部分)" */;
D:(m)^2 -4*(2)*(1) >=0 /* "(◆修正部分)" */;
▼コマンド番号711
●応用例題5・練習43
2次不等式を解く●●●●●●●●●●●●●●●●
kill(all) /* "711 2次不等式を解く(Maxima on lineでは削除)" */$
MONDAI:"711 下の問題の不等式について";
gr22(ieY,xm,xM,ym,yM):=block([Y,x1,x2,xL,xS,a2,a1,a0,D],
/**/Y:expand(lhs(ieY)),
/**/xL:solve(Y=0,x) /* "ゼロ点xLを求めて" */,
/**/a2:coeff(Y,x,2) /* "x^2の係数を求めて" */,
/**/a1:coeff(Y,x,1) /* "xの係数を求めて" */,
/**/a0:coeff(Y,x,0) /* "定数を求めて" */,
/**/D:a1^2-4*a2*a0,
/**/eJ:x=-a1/(2*a2),
/**/pP:[[rhs(eJ),subst(eJ,Y)]] /* "y切片を求めて" */,
/**/if a2>0 then(cL:red,cC:blue,cR:red /* "ゼロ点の両外側がグラフ正で赤" */
)else(cL:blue,cC:red,cR:blue /* "ゼロ点の間がグラフ正で赤" */
),
/**/if D>0 then(
/*........*/if rhs(xL[1])<rhs(xL[2])then(
/*................*/x1:rhs(xL[1]),x2:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)else(
/*................*/x2:rhs(xL[1]),x1:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)
/*....*/)elseif D=0 then(x1:rhs(xL[1]),x2:x1,xS:[[x1,0]]
/*........*/)else(x1:xM,x2:xM,xS:pP,xL:"グラフのゼロ点なし"
/*........*/),
/**/if xm<x1 and x2<xM or x1=xM and x2=xM then(
/*........*/if subst(x=x1,ieY) then pt:7 else pt:6 /* "ゼロ点が解なら●" */,
/*........*/if subst(x=xm,ieY) then (lwL:5,pc:cL) else lwL:1
/*........*//* "ゼロ点の外側が太く、ゼロ点の色も外側と同じ" */,
/*........*/if D>0 and subst(eJ,ieY) then (lwC:5,pc:cC) else lwC:1
/*........*//* "ゼロ点の内側が太く、ゼロ点の色も内側と同じ" */,
/*........*/if D>=0 then ps:4 else (ps:1,pc:cL,pt:6)
/*........*//* "ゼロ点がないときは、頂点を最小表示" */,
/*........*/wxdraw2d(
/*............*/yrange=[ym,yM] /* "凹凸と値域を確認し" */,
/*............*/color=cL,
/*............*/line_width =2,explicit(Y,x,xm,x1) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =2,explicit(Y,x,x2,xM) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =lwL,
/*............*/implicit(y=0,x,xm,x1,y,ym,yM) /* "x軸を描き" */,
/*............*/implicit(y=0,x,x2,xM,y,ym,yM) /* "x軸を描き" */,
/*............*/color=cC,
/*............*/line_width =2,explicit(Y,x,x1,x2) /* "Y中間を中間の色で" */,
/*............*/line_width =lwC,
/*............*/implicit(y=0,x,x1,x2,y,ym,yM) /* "x軸を描き" */,
/*............*/color=black,line_width =1,
/*............*/implicit(x=0,x,xm,xM,y,ym,yM) /* "y軸を描く" */,
/*............*/color=cL,point_type=6,point_size=1,points(pP) /* "頂点を描く" */,
/*............*/color=pc,point_type=pt,point_size=ps,points(xS) /* "ゼロ点を描く" */
/*............*/)
/*....*/)else(print("ゼロ点は範囲外")),
/**/print(MONDAI1),
/**/print(ieY," 不等式"),
/**/print("y=",Y," グラフ"),
/**/print(pP," 頂点"),
/**/xL
/**/)$
MONDAI1:"2次不等式 x^2 +2*m*x +m +2 >0 の解がすべての実数のとき、定数mの範囲は" /* "(◆修正部分)" */;
kousatu:"x^2の係数が正だから、D<0が必要十分である。" /* "(◆修正部分)" */;
D:(m)^2 -(1)*(m+2) <0 /* "(◆修正部分)" */;
e:subst(m=x,D) /* "mをxに変えて" */;
xL:gr22(e,-5,5,-10,10) /* "(◆修正時5を15に訂正)" */$
print((e),"となるmは、グラフから") $
print("(-1< m <2)") /* "(◆修正時訂正)" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"2次不等式 x^2 +m*x +3*m -5 >0 の解がすべての実数のとき、定数mの範囲は" /* "(◆修正部分)" */;
kousatu:"x^2の係数が正だから、D<0が必要十分である。" /* "(◆修正部分)" */;
D:(m)^2 -4*(1)*(3*m-5) <0 /* "(◆修正部分)" */;
G 連立不等式
▼コマンド番号712
●例題14・練習44
連立不等式を解く●●●●●●●●●●●●●●●●
kill(all) /* "712 連立不等式を解く(Maxima on lineでは削除)" */$
MONDAI:"712 下の問題の不等式について";
gr22(ieY,xm,xM,ym,yM):=block([Y,x1,x2,xL,xS,a2,a1,a0,D],
/**/Y:expand(lhs(ieY)),
/**/xL:solve(Y=0,x) /* "ゼロ点xLを求めて" */,
/**/a2:coeff(Y,x,2) /* "x^2の係数を求めて" */,
/**/a1:coeff(Y,x,1) /* "xの係数を求めて" */,
/**/a0:coeff(Y,x,0) /* "定数を求めて" */,
/**/D:a1^2-4*a2*a0,
/**/eJ:x=-a1/(2*a2),
/**/pP:[[rhs(eJ),subst(eJ,Y)]] /* "y切片を求めて" */,
/**/if a2>0 then(cL:red,cC:blue,cR:red /* "ゼロ点の両外側がグラフ正で赤" */
/*....*/)else(cL:blue,cC:red,cR:blue /* "ゼロ点の間がグラフ正で赤" */
/*....*/),
/**/if D>0 then(
/*........*/if rhs(xL[1])<rhs(xL[2])then(
/*................*/x1:rhs(xL[1]),x2:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)else(
/*................*/x2:rhs(xL[1]),x1:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)
/*....*/)elseif D=0 then(x1:rhs(xL[1]),x2:x1,xS:[[x1,0]]
/*........*/)else(x1:xM,x2:xM,xS:pP,xL:"グラフのゼロ点なし"
/*........*/),
/**/if xm<x1 and x2<xM or x1=xM and x2=xM then(
/*........*/if subst(x=x1,ieY) then pt:7 else pt:6 /* "ゼロ点が解なら●" */,
/*........*/if subst(x=xm,ieY) then (lwL:5,pc:cL) else lwL:1
/*........*//* "ゼロ点の外側が太く、ゼロ点の色も外側と同じ" */,
/*........*/if D>0 and subst(eJ,ieY) then (lwC:5,pc:cC) else lwC:1
/*........*//* "ゼロ点の内側が太く、ゼロ点の色も内側と同じ" */,
/*........*/if D>=0 then ps:4 else (ps:1,pc:cL,pt:6)
/*........*//* "ゼロ点がないときは、頂点を最小表示" */,
/*........*/wxdraw2d(
/*............*/yrange=[ym,yM] /* "凹凸と値域を確認し" */,
/*............*/color=cL,
/*............*/line_width =2,explicit(Y,x,xm,x1) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =2,explicit(Y,x,x2,xM) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =lwL,
/*............*/implicit(y=0,x,xm,x1,y,ym,yM) /* "x軸を描き" */,
/*............*/implicit(y=0,x,x2,xM,y,ym,yM) /* "x軸を描き" */,
/*............*/color=cC,
/*............*/line_width =2,explicit(Y,x,x1,x2) /* "Y中間を中間の色で" */,
/*............*/line_width =lwC,
/*............*/implicit(y=0,x,x1,x2,y,ym,yM) /* "x軸を描き" */,
/*............*/color=black,line_width =1,
/*............*/implicit(x=0,x,xm,xM,y,ym,yM) /* "y軸を描く" */,
/*............*/color=cL,point_type=6,point_size=1,points(pP) /* "頂点を描く" */,
/*............*/color=pc,point_type=pt,point_size=ps,points(xS) /* "ゼロ点を描く" */
/*............*/)
/*....*/)else(print("ゼロ点は範囲外")),
/**/print(MONDAI1),
/**/print(ieY," 不等式"),
/**/print("y=",Y," グラフ"),
/**/print(pP," 頂点"),
/**/xL
/**/)$
MONDAI1:"連立不等式 x^2 -4 >0、x^2 -3*x -4<=0 解は" /* "(◆修正部分)" */;
e1:x^2 -4 >0 /* "第1式(◆修正部分)" */;
e2:x^2 -3*x -4<=0 /* "第2式(◆修正部分)" */;
xL1:gr22(e1,-7,7,-10,10);
xL2:gr22(e2,-7,7,-10,10);
print("2つのグラフから") $
print("(2< m <=4)") /* "(◆修正時訂正)" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"連立不等式 x^2 +4*x -12 <0、x^2 +7*x +12 >=0 解は" /* "(◆修正部分)" */;
e1:x^2 +4*x -12 <0 /* "第1式(◆修正部分)" */;
e2:x^2 +7*x +12 >=0 /* "第2式(◆修正部分)" */;
▼コマンド番号713
●練習45
連立不等式を解く●●●●●●●●●●●●●●●●
kill(all) /* "713 連立不等式を解く(Maxima on lineでは削除)" */$
MONDAI:"713 下の問題の不等式について";
gr22(ieY,xm,xM,ym,yM):=block([Y,x1,x2,xL,xS,a2,a1,a0,D],
/**/Y:expand(lhs(ieY)),
/**/xL:solve(Y=0,x) /* "ゼロ点xLを求めて" */,
/**/a2:coeff(Y,x,2) /* "x^2の係数を求めて" */,
/**/a1:coeff(Y,x,1) /* "xの係数を求めて" */,
/**/a0:coeff(Y,x,0) /* "定数を求めて" */,
/**/D:a1^2-4*a2*a0,
/**/eJ:x=-a1/(2*a2),
/**/pP:[[rhs(eJ),subst(eJ,Y)]] /* "y切片を求めて" */,
/**/if a2>0 then(cL:red,cC:blue,cR:red /* "ゼロ点の両外側がグラフ正で赤" */
/*........*/)else(cL:blue,cC:red,cR:blue /* "ゼロ点の間がグラフ正で赤" */
/*........*/),
/**/if D>0 then(
/*........*/if rhs(xL[1])<rhs(xL[2])then(
/*................*/x1:rhs(xL[1]),x2:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)else(
/*................*/x2:rhs(xL[1]),x1:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)
/*....*/)elseif D=0 then(x1:rhs(xL[1]),x2:x1,xS:[[x1,0]]
/*........*/)else(x1:xM,x2:xM,xS:pP,xL:"グラフのゼロ点なし"
/*........*/),
/**/if xm<x1 and x2<xM or x1=xM and x2=xM then(
/*........*/if subst(x=x1,ieY) then pt:7 else pt:6 /* "ゼロ点が解なら●" */,
/*........*/if subst(x=xm,ieY) then (lwL:5,pc:cL) else lwL:1
/*........*//* "ゼロ点の外側が太く、ゼロ点の色も外側と同じ" */,
/*........*/if D>0 and subst(eJ,ieY) then (lwC:5,pc:cC) else lwC:1
/*........*//* "ゼロ点の内側が太く、ゼロ点の色も内側と同じ" */,
/*........*/if D>=0 then ps:4 else (ps:1,pc:cL,pt:6)
/*........*//* "ゼロ点がないときは、頂点を最小表示" */,
/*........*/wxdraw2d(
/*............*/yrange=[ym,yM] /* "凹凸と値域を確認し" */,
/*............*/color=cL,
/*............*/line_width =2,explicit(Y,x,xm,x1) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =2,explicit(Y,x,x2,xM) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =lwL,
/*............*/implicit(y=0,x,xm,x1,y,ym,yM) /* "x軸を描き" */,
/*............*/implicit(y=0,x,x2,xM,y,ym,yM) /* "x軸を描き" */,
/*............*/color=cC,
/*............*/line_width =2,explicit(Y,x,x1,x2) /* "Y中間を中間の色で" */,
/*............*/line_width =lwC,
/*............*/implicit(y=0,x,x1,x2,y,ym,yM) /* "x軸を描き" */,
/*............*/color=black,line_width =1,
/*............*/implicit(x=0,x,xm,xM,y,ym,yM) /* "y軸を描く" */,
/*............*/color=cL,point_type=6,point_size=1,points(pP) /* "頂点を描く" */,
/*............*/color=pc,point_type=pt,point_size=ps,points(xS) /* "ゼロ点を描く" */
/*............*/)
/*....*/)else(print("ゼロ点は範囲外")),
/**/print(MONDAI1),
/**/print(ieY," 不等式"),
/**/print("y=",Y," グラフ"),
/**/print(pP," 頂点"),
/**/xL
/**/)$
MONDAI1:"連立不等式 -2<=x^2 +3*x <=4 の解は" /* "(◆修正部分)" */;
e1:-2 -(x^2 +3*x) <=0 /* "第1式(◆修正部分)" */;
e2:x^2 +3*x -(4)<=0 /* "第2式(◆修正部分)" */;
xL1:gr22(e1,-5,5,-10,10) /* "(◆修正時-5,5をー10,10に訂正)" */$
xL2:gr22(e2,-5,5,-10,10) /* "(◆修正時-5,5をー10,10に訂正)" */$
print("2つのグラフから") $
print("(-4<= x <=-2 or -1<= x <=1)") /* "(◆修正時訂正)" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"連立不等式 10<x^2 +3*x <=2*x +12 の解は" /* "(◆修正部分)" */;
e1:10 -(x^2 +3*x) <0 /* "第1式(◆修正部分)" */;
e2:x^2 +3*x -(12)<=0 /* "第2式(◆修正部分)" */;
▼コマンド番号714
●応用例題6・練習46
連立不等式を解く●●●●●●●●●●●●●●●●
kill(all) /* "714 連立不等式を解く(Maxima on lineでは削除)" */$
MONDAI:"714 下の問題の不等式について";
gr11(ieY,xm,xM,ym,yM):=block([Y,xs,xS,yS,ud],
/**/Y:lhs(ieY)-rhs(ieY),
/**/xs:rhs(solve(Y=0,x)[1]), xS:[xs,0] /* "ゼロ点xsとx切片を求めて" */,
/**/yS:[0,subst(x=0,Y)] /* "y切片を求めて" */,
/**/ud:diff(Y,x) /* "直線の傾きを求めて" */,
/**/if ud>0 then(cL:blue,cR:red /* "ゼロ点の右側がグラフ正で赤" */
/*....*/)else(cL:red,cR:blue /* "ゼロ点の左側がグラフ正で赤とし" */
/*....*/),
/**/if xm<xs and xs<xM then(
/*........*/if subst(x=xs,ieY) then pt:7 else pt:6/* "0点解で●非解で〇" */,
/*........*/if subst(x=xm,ieY) then (lwL:5,pc:cL) else lwL:1/* "0点左側太,0点色同左" */,
/*........*/if subst(x=xM,ieY) then (lwR:5,pc:cR) else lwR:1/* "0点右側太,0点色同右" */,
/*........*/wxdraw2d(
/*............*/yrange=[ym,yM] /* "値域確認し" */,
/*............*/color=cL,line_width =2,explicit(Y,x,xm,xs) /* "0点左側のYと" */,
/*............*/line_width =lwL,implicit(y=0,x,xm,xs,y,ym,yM) /* "x軸を描き" */,
/*............*/color=cR,line_width =2,explicit(Y,x,xs,xM) /* "0点右側のYと" */,
/*............*/line_width =lwR,implicit(y=0,x,xs,xM,y,ym,yM) /* "x軸を描き" */,
/*............*/color=black,line_width =1,implicit(x=0,x,xm,xM,y,ym,yM) /* "y軸を描く" */,
/*............*/color=pc,point_type=pt,point_size=4,points([xS]) /* "ゼロ点を描く" */
/*............*/)
/*....*/)else(print("ゼロ点は範囲外!!!")),
/**/print(MONDAI1),
/**/print("y=",Y," 太赤グラフ"),print(xS," x切片"),print(yS," y切片"),
/**/xS
/**/)$
gr22(ieY,xm,xM,ym,yM):=block([Y,a2,a1,a0,D,eJ,pP,cL,cC,cR,x1,x2,xL,xS,lwL,pt,pc,ps],
/**/Y:expand(lhs(ieY))-expand(rhs(ieY)),
/**/a2:coeff(Y,x,2),a1:coeff(Y,x,1),a0:coeff(Y,x,0) /* "各係数を求め" */,
/**/xL:solve(Y=0,x),D:a1^2-4*a2*a0,eJ:x=-a1/(2*a2) /* "0点,判別式,軸を求め" */,
/**/pP:[[rhs(eJ),subst(eJ,Y)]] /* "頂点を求め" */,
/**/if a2>0 then(cL:red,cC:blue,cR:red)else(cL:blue,cC:red,cR:blue /* "グラフ正赤,負青" */
/*........*/),
/**/if D>0 then(
/*........*/if rhs(xL[1])<rhs(xL[2])then(x1:rhs(xL[1]),x2:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)else(x2:rhs(xL[1]),x1:rhs(xL[2]),xS:[[x1,0],[x2,0]]) /* "0点小さい順に" */
/*....*/)elseif D=0 then(x1:rhs(xL[1]),x2:x1,xS:[[x1,0]] /* "0点2重に" */
/*....*/)else(x1:xM,x2:xM,xS:pP,xL:"グラフの0点無なら頂点表示"
/*....*/),
/**/if xm<x1 and x2<xM or x1=xM and x2=xM then(
/*........*/if subst(x=x1,ieY) then pt:7 else pt:6 /* "0点が解●非解〇" */,
/*........*/if subst(x=xm,ieY) then (lwL:5,pc:cL) else lwL:1 /* "0点の外太,0点色同外" */,
/*........*/if D>0 and subst(eJ,ieY) then (lwC:5,pc:cC) else lwC:1/* "0点の内太,0点色同内" */,
/*........*/if D>=0 then ps:4 else (ps:1,pc:cL,pt:6)/* "0点無時の点表示属性" */
/*....*/)else(print("ゼロ点範囲外!!! グラフの両端調整せよ!!!!")),
/**/if xm<x1 and x2<xM or x1=xM and x2=xM then(
/*........*/wxdraw2d(
/*............*/yrange=[ym,yM] /* "凹凸と値域を確認し" */,
/*............*/color=cL,line_width =2,explicit(Y,x,xm,x1),explicit(Y,x,x2,xM) /* "0点外側を描く。Yと" */,
/*............*/line_width=lwL,implicit(y=0,x,xm,x1,y,ym,yM),implicit(y=0,x,x2,xM,y,ym,yM) /* "x軸" */,
/*............*/color=cC,line_width =2,explicit(Y,x,x1,x2) /* "0点内側を描く。Yと" */,
/*............*/line_width =lwC,implicit(y=0,x,x1,x2,y,ym,yM) /* "x軸" */,
/*............*/color=black,line_width =1,implicit(x=0,x,xm,xM,y,ym,yM) /* "y軸を描く" */,
/*............*/color=cL,point_type=6,point_size=1,points(pP) /* "頂点を描く" */,
/*............*/color=pc,point_type=pt,point_size=ps,points(xS) /* "ゼロ点を描く" */
/*............*/)
/*....*/)else(print("ゼロ点範囲外!!! グラフの両端調整せよ!!!!")),
/**/print(MONDAI1),
/**/print(ieY," 不等式"),print("y=",Y," グラフ"),print(pP," 頂点"),
/**/xL
/**/)$
MONDAI1:"周が20mで縦の長さが横以下の長方形で面積21㎡以上。縦長さxmの範囲は" /* "(◆修正部分)" */;
e11:x>0 /* "第1式(◆修正部分)" */;
e12:x-(10-x)<=0 /* "第2式(◆修正部分)" */;
e2:x*(10-x)>=0 /* "第3式(◆修正部分)" */;
xS1:gr11(e11,-1,9,-10,10);
xS2:gr11(e12,-1,9,-10,10);
xL:gr22(e2,-1,9,-10,10);
print("3つのグラフから") $
print("(3<= x <=5)") /* "(◆修正時訂正)" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"1辺が12cmの正方形の4隅から1辺xcmの正方形を切り取り、箱を作る。
底面の正方形の1辺が6cm以上で側面の長方形の面積が10c㎡以上のとき、xの範囲は" /* "(◆修正部分)" */;
e11:x>0 /* "第1式(◆修正部分)" */;
e12:12 -2*x>=6 /* "第2式(◆修正部分)" */;
e2:x*(12 -2*x)>=10 /* "第3式(◆修正部分)" */;
:
補充問題・章末問題
▼コマンド番号20301
●補充問題7
放物線が切り取るx軸の長さ●●●●●●●●●●●●●●●●
kill(all) /* "20301 放物線y=x^2 +4*x +2が切り取るx軸の長さ(Maxima on lineでは削除)" */$
MONDAI:"20301 次の方程式において";
MONDAI:"放物線y=x^2 +4*x +2が切り取るx軸の長さは";
Y:x^2 +4*x +2 /* "方程式の右辺をYとして" */;
D:(4)^2-4*(1)*(2) /* "判別式の値を求めて" */;
xL:[x=(-(4)+sqrt(D))/(2*(1)),x=(-(4)-sqrt(D))/(2*(1))] /* "解を求めて" */;
x1:rhs(xL[1]) /* "第1解x1" */;
x2:rhs(xL[2]) /* "第2解x2" */;
sa:abs(x1-x2) /* "2解の差を求めて" */;
sa:rat(sa) /* "根号整理" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドに、次を追加して実行し、結果を考察せよ。
sa2wD:rootscontract(sa^2/D) /* "2解の差とDの関係(◆追加部分)" */;
▼コマンド番号20302
●補充問題8
放物線とx軸の共有点の個数●●●●●●●●●●●●●●●●
kill(all) /* "20302 放物線y=x^2 -m*x +m -3/4とx軸の共有点の個数は(Maxima on lineでは削除)" */$
MONDAI:"20302 次の方程式において";
MONDAI:"放物線y=x^2 -m*x +m -3/4とx軸の共有点の個数は"$
Y:x^2 -m*x +m -3/4 /* "方程式の右辺をYとして" */;
D:(m)^2-4*(1)*(m-3/4) /* "判別式の値を求めて" */;
D:rat(D) /* "有理式で整理して" */;
mL:solve(D=0,m) /* "D=0を解いて" */;
kosuu:if D>0 then 2 elseif D=0 then 1 else 0 /* "個数を求めて" */;
zL:[[rhs(mL[1]),subst(mL[1],kosuu)],[rhs(mL[2]),subst(mL[2],kosuu)]] /* "D=0での個数" */;
zL:ev(zL,nouns,numer) /* "D=0での個数を、不等式の評価実行して求めて" */;
wxdraw2d(
/**/yrange=[-5,5],
/**/explicit(kosuu,m,-5,0.99),
/**/explicit(kosuu,m,1.01,2.99),
/**/explicit(kosuu,m,3.01,5),
/**/points(zL)
/**/);
◎上のMaximaコマンドを実行せよ。
◎上のコマンド結果のグラフを考察せよ。
▼コマンド番号20303
●補充問題9
整数解不等式を解く●●●●●●●●●●●●●●●●
kill(all) /* "20303 整数解不等式を解く(Maxima on lineでは削除)" */$
MONDAI:"20303 下の問題の不等式において";
gr22(ieY,xm,xM,ym,yM):=block([Y,x1,x2,xL,xS,a2,a1,a0,D],
/**/Y:expand(lhs(ieY)),
/**/xL:solve(Y=0,x) /* "ゼロ点xLを求めて" */,
/**/a2:coeff(Y,x,2) /* "x^2の係数を求めて" */,
/**/a1:coeff(Y,x,1) /* "xの係数を求めて" */,
/**/a0:coeff(Y,x,0) /* "定数を求めて" */,
/**/D:a1^2-4*a2*a0,
/**/eJ:x=-a1/(2*a2),
/**/pP:[[rhs(eJ),subst(eJ,Y)]] /* "y切片を求めて" */,
/**/if a2>0 then(cL:red,cC:blue,cR:red /* "ゼロ点の両外側がグラフ正で赤" */
/*....*/)else(cL:blue,cC:red,cR:blue /* "ゼロ点の間がグラフ正で赤" */
/*....*/),
/**/if D>0 then(
/*........*/if rhs(xL[1])<rhs(xL[2])then(
/*................*/x1:rhs(xL[1]),x2:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)else(
/*................*/x2:rhs(xL[1]),x1:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)
/*....*/)elseif D=0 then(x1:rhs(xL[1]),x2:x1,xS:[[x1,0]]
/*....*/)else(x1:xM,x2:xM,xS:pP,xL:"グラフのゼロ点なし"
/*....*/),
/**/if xm<x1 and x2<xM or x1=xM and x2=xM then(
/*........*/if subst(x=x1,ieY) then pt:7 else pt:6 /* "ゼロ点が解なら●" */,
/*........*/if subst(x=xm,ieY) then (lwL:5,pc:cL) else lwL:1
/*........*//* "ゼロ点の外側が太く、ゼロ点の色も外側と同じ" */,
/*........*/if D>0 and subst(eJ,ieY) then (lwC:5,pc:cC) else lwC:1
/*........*//* "ゼロ点の内側が太く、ゼロ点の色も内側と同じ" */,
/*........*/if D>=0 then ps:4 else (ps:1,pc:cL,pt:6)
/*........*//* "ゼロ点がないときは、頂点を最小表示" */,
/*........*/wxdraw2d(
/*............*/yrange=[ym,yM] /* "凹凸と値域を確認し" */,
/*............*/color=cL,
/*............*/line_width =2,explicit(Y,x,xm,x1) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =2,explicit(Y,x,x2,xM) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =lwL,
/*............*/implicit(y=0,x,xm,x1,y,ym,yM) /* "x軸を描き" */,
/*............*/implicit(y=0,x,x2,xM,y,ym,yM) /* "x軸を描き" */,
/*............*/color=cC,
/*............*/line_width =2,explicit(Y,x,x1,x2) /* "Y中間を中間の色で" */,
/*............*/line_width =lwC,
/*............*/implicit(y=0,x,x1,x2,y,ym,yM) /* "x軸を描き" */,
/*............*/color=black,line_width =1,
/*............*/implicit(x=0,x,xm,xM,y,ym,yM) /* "y軸を描く" */,
/*............*/color=cL,point_type=6,point_size=1,points(pP) /* "頂点を描く" */,
/*............*/color=pc,point_type=pt,point_size=ps,points(xS) /* "ゼロ点を描く" */
/*............*/)
/*....*/)else(print("ゼロ点は範囲外")),
/**/print(MONDAI1),
/**/print(ieY," 不等式"),
/**/print("y=",Y," グラフ"),
/**/print(pP," 頂点"),
/**/xL
/**/)$
MONDAI1:"不等式 2*x^2 +x -6 <0 の整数解は" /* "(◆修正部分)" */;
e:2*x^2 +x -6 <0 /* "不等式の左辺(◆修正部分)" */;
xL:gr22(e,-5,5,-10,10);
print("グラフから") $
print("(x=-1,0,1)") /* "(◆修正時訂正)" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"不等式 4*x -2 >= x^2 の整数解は" /* "(◆修正部分)" */;
e:4*x -2-x^2 >0 /* "不等式の左辺(◆修正部分)" */;
▼コマンド番号20304
●補充問題10
不等式の解がすべて実数となる条件●●●●●●●●●●●●●●●●
kill(all) /* "20304 不等式の解がすべて実数となる条件は(Maxima on lineでは削除)" */$
MONDAI:"20304 下の問題の不等式において";
gr22(ieY,xm,xM,ym,yM):=block([Y,x1,x2,xL,xS,a2,a1,a0,D],
/**/Y:expand(lhs(ieY)),
/**/xL:solve(Y=0,x) /* "ゼロ点xLを求めて" */,
/**/a2:coeff(Y,x,2) /* "x^2の係数を求めて" */,
/**/a1:coeff(Y,x,1) /* "xの係数を求めて" */,
/**/a0:coeff(Y,x,0) /* "定数を求めて" */,
/**/D:a1^2-4*a2*a0,
/**/eJ:x=-a1/(2*a2),
/**/pP:[[rhs(eJ),subst(eJ,Y)]] /* "y切片を求めて" */,
/**/if a2>0 then(cL:red,cC:blue,cR:red /* "ゼロ点の両外側がグラフ正で赤" */
/*....*/)else(cL:blue,cC:red,cR:blue /* "ゼロ点の間がグラフ正で赤" */
/*....*/),
/**/if D>0 then(
/*........*/if rhs(xL[1])<rhs(xL[2])then(
/*................*/x1:rhs(xL[1]),x2:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)else(
/*................*/x2:rhs(xL[1]),x1:rhs(xL[2]),xS:[[x1,0],[x2,0]]
/*............*/)
/*....*/)elseif D=0 then(x1:rhs(xL[1]),x2:x1,xS:[[x1,0]]
/*....*/)else(x1:xM,x2:xM,xS:pP,xL:"グラフのゼロ点なし"
/*....*/),
/**/if xm<x1 and x2<xM or x1=xM and x2=xM then(
/*........*/if subst(x=x1,ieY) then pt:7 else pt:6 /* "ゼロ点が解なら●" */,
/*........*/if subst(x=xm,ieY) then (lwL:5,pc:cL) else lwL:1
/*........*//* "ゼロ点の外側が太く、ゼロ点の色も外側と同じ" */,
/*........*/if D>0 and subst(eJ,ieY) then (lwC:5,pc:cC) else lwC:1
/*........*//* "ゼロ点の内側が太く、ゼロ点の色も内側と同じ" */,
/*........*/if D>=0 then ps:4 else (ps:1,pc:cL,pt:6)
/*........*//* "ゼロ点がないときは、頂点を最小表示" */,
/*........*/wxdraw2d(
/*............*/yrange=[ym,yM] /* "凹凸と値域を確認し" */,
/*............*/color=cL,
/*............*/line_width =2,explicit(Y,x,xm,x1) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =2,explicit(Y,x,x2,xM) /* "Y全体をゼロ点の外側の色で" */,
/*............*/line_width =lwL,
/*............*/implicit(y=0,x,xm,x1,y,ym,yM) /* "x軸を描き" */,
/*............*/implicit(y=0,x,x2,xM,y,ym,yM) /* "x軸を描き" */,
/*............*/color=cC,
/*............*/line_width =2,explicit(Y,x,x1,x2) /* "Y中間を中間の色で" */,
/*............*/line_width =lwC,
/*............*/implicit(y=0,x,x1,x2,y,ym,yM) /* "x軸を描き" */,
/*............*/color=black,line_width =1,
/*............*/implicit(x=0,x,xm,xM,y,ym,yM) /* "y軸を描く" */,
/*............*/color=cL,point_type=6,point_size=1,points(pP) /* "頂点を描く" */,
/*............*/color=pc,point_type=pt,point_size=ps,points(xS) /* "ゼロ点を描く" */
/*............*/)
/*....*/)else(print("ゼロ点は範囲外")),
/**/print(MONDAI1),
/**/print(ieY," 不等式"),
/**/print("y=",Y," グラフ"),
/**/print(pP," 頂点"),
/**/xL
/**/)$
MONDAI1:"不等式 a*x^2 +2*x +a <0 の解がすべての実数となるaの範囲は" /* "(◆修正部分)" */;
KOUSATU:"x^2の係数aが負なら、D<0が必要十分である。" /* "(◆修正時訂正)" */$
KOUSATU:"x^2の係数aが正なら、D<0でも、すべての実数に対して不等式は正になるので、題意に反する。" /* "(◆修正時訂正)" */$
D:(2)^2 -(a)*(a) <0 /* "(◆修正時訂正)" */$
e:subst(a=x,D) /* "mをxに変えて" */;
xL:gr22(e,-5,5,-10,10);
print((e),"となるaは、グラフから") $
print("(a< 2 or 2 <a)") /* "(◆修正時訂正)" */$
print("a<0とあわせてaは、") $
print("( a< -2 )") /* "(◆修正時訂正)" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"不等式 a*x^2 +2*x +a >0 が解なしとなるaの範囲は" /* "(◆修正部分)" */;
▼コマンド番号20305
●章末問題1
放物線の平行移動●●●●●●●●●●●●●●●●
kill(all) /* "20305 平行移動した放物線は(Maxima on lineでは削除)" */$
MONDAI:"20305 下の問題の方程式において";
gr(Y,xm,xM,ym,yM):=block([Z],
/**/Z:solve(Y=0,x) /* "ゼロ点を求めて" */,
/**/if imagpart(rhs(Z[1]))#0 then Z:"なし" /* "確認し" */,
/**/wxdraw2d(
/*....*/yrange=[ym,yM] /* "値域を確認し" */,
/*....*/color=red,line_width =2,explicit(Y,x,xm,xM) /* "Yを描き" */,
/*....*/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(MONDAI1),
/**/print("y=",Y," 赤がグラフ"),print(Z," ゼロ点")
/**/)$
MONDAI:"y=-2*x^2+3*x+1を、(-2,0),(1,12)を通るように、平行移動せよ。";
Y:-2*x^2+3*x+1 /* "方程式は" */;
Ypq:subst(x=x-p,Y)+q /* "x軸方向にp、y軸方向にq平行移動すると" */;
e1:subst(x=-2,Ypq)=0 /* "(-2,0)を通るので" */;
e2:subst(x=1,Ypq)=12 /* "(12,0)を通るので" */;
e1:expand(e1);
e2:expand(e2);
pqL:solve([e1,e2],[p,q]) /* "連立方程式としてp,qについて解くと" */;
YA:subst(pqL,Ypq) /* "p,qの値をYpqに代入すると" */;
subst(x=-2,YA) /* "(-2,0)を通るか" */;
subst(x=1,YA) /* "(1,12)を通るか" */;
gr(YA,-5,5,-5,15) /* "グラフで確認" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドの実行結果を考察せよ。
▼コマンド番号20306
●章末問題2
放物線の頂点●●●●●●●●●●●●●●●●
kill(all) /* "20306 頂点が一致するのは(Maxima on lineでは削除)" */$
MONDAI:"20306 下の問題の方程式において";
gr(Y,xm,xM,ym,yM):=block([Z],
/**/Z:solve(Y=0,x) /* "ゼロ点を求めて" */,
/**/if imagpart(rhs(Z[1]))#0 then Z:"なし" /* "確認し" */,
/**/wxdraw2d(
/*....*/yrange=[ym,yM] /* "値域を確認し" */,
/*....*/color=red,line_width =2,explicit(Y,x,xm,xM) /* "Yを描き" */,
/*....*/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(MONDAI1),
/**/print("y=",Y," 赤がグラフ"),print(Z," ゼロ点")
/**/)$
MONDAI1:"y=2*x^2+4*x,y=x^2+a*x+bの頂点が一致するような、a,bは";
Y1:2*x^2+4*x /* "最初の方程式は" */;
Y1:2*(x+1)^2-2 /* "平方完成して" */;
pP:[-1,-2] /* "頂点を求めて" */;
Y2:(x+1)^2-2 /* "同じ頂点で、x^2の係数が1のものは" */;
Y2:expand(Y2) /* "展開して" */;
gr(Y1,-5,5,-10,10) /* "グラフで確認" */$
gr(Y2,-5,5,-10,10) /* "グラフで確認" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドの実行結果を考察せよ。
▼コマンド番号20307
●章末問題4
文字定数の2次関数の最小値●●●●●●●●●●●●●●●●
kill(all) /* "20307 文字定数の2次関数の最小値(Maxima on lineでは削除)" */$
MONDAI:"20307 下の問題の関数において";
gr(Y,xm,xM,ym,yM):=block([Z],
/**/Z:solve(Y=0,x) /* "ゼロ点を求めて" */,
/**/if imagpart(rhs(Z[1]))#0 then Z:"なし" /* "確認し" */,
/**/wxdraw2d(
/*....*/yrange=[ym,yM] /* "値域を確認し" */,
/*....*/color=red,line_width =2,explicit(Y,x,xm,xM) /* "Yを描き" */,
/*....*/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(MONDAI1),
/**/print("y=",Y," 赤がグラフ"),print(Z," ゼロ点")
/**/)$
MONDAI1:"y=x^2-m*x+mの最小値kとしてkをmで表し、kの最大値とそのときのmの値は";
Y:x^2-m*x+m /* "関数式は" */;
Y:(x-m/2)^2-m^2/4+m /* "平方完成して" */;
pP:[m/2,-m^2/4+m] /* "頂点を求めて" */;
k:-1/4*m^2+m /* "kをmで表して" */;
k:-1/4*(m-2)^2+1 /* "平方完成して" */;
KAITOU:"m=2のとき、kの最大値1" /* "kの最大値" */;
Y2:subst(m=2,Y) /* "m=2のときのY" */;
Y1:subst(m=1,Y) /* "m=1のときのY" */;
print("m=2 のとき")$
gr(Y2,-5,5,-10,10) /* "グラフで確認" */$
print("m=1 のとき")$
gr(Y1,-5,5,-10,10) /* "グラフで確認" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドの実行結果を考察せよ。
▼コマンド番号20308
●章末問題12
文字係数の2次不等式●●●●●●●●●●●●●●●●
kill(all) /* "20308 文字係数の2次不等式(Maxima on lineでは削除)" */$
MONDAI:"20307 下の問題の不等式において";
gr(Y,xm,xM,ym,yM):=block([Z],
/**/Z:solve(Y=0,x) /* "ゼロ点を求めて" */,
/**/if imagpart(rhs(Z[1]))#0 then Z:"なし" /* "確認し" */,
/**/wxdraw2d(
/*....*/yrange=[ym,yM] /* "値域を確認し" */,
/*....*/color=red,line_width =2,explicit(Y,x,xm,xM) /* "Yを描き" */,
/*....*/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(MONDAI1),
/**/print("y=",Y," 赤がグラフ"),print(Z," ゼロ点")
/**/)$
MONDAI1:"2次不等式x^2-a*x-2*a^2<0を、a>0として解け" /* "(◆修正部分)" */;
assume(a>0) /* "(◆修正部分)" */;
ie:x^2-a*x-2*a^2 /* "左辺の式は" */;
D:(-a)^2-4*(1)*(-2*a^2) /* "a>0で、判別式は正か(◆修正時訂正)" */;
xL:solve(ie=0,x) /* "ie=0の解を求めて" */;
KOUSATU:"D>0なら、ie=0は、2つの異なる解があって" ;
x1:rhs(xL[1]);x2:rhs(xL[2]) /* "解をx1,x2として" */;
if x1>x2 then( x3:x1,x1:x2,x2:x3) /* "x1<x2として" */;
KAITOU:"a>0のとき、不等式の解は";
print(x1,"<x <",x2) /* "(◆修正時訂正)" */$
Y:subst(a=1,ie) /* "a=1として" */;
gr(Y,-5,5,-10,10) /* "グラフで確認" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI1:"2次不等式x^2-a*x-2*a^2<0を、a<0として解け" /* "(◆修正部分)" */;
assume(a<0) /* "(◆修正部分)" */;
▼コマンド番号20309
●章末問題13
文字係数の2次関数のゼロ点●●●●●●●●●●●●●●●●
kill(all) /* "20309 文字係数の2次関数のゼロ点(Maxima on lineでは削除)" */$
MONDAI:"20309 下の問題の関数において";
gr(Y,xm,xM,ym,yM):=block([Z],
/**/Z:solve(Y=0,x) /* "ゼロ点を求めて" */,
/**/if imagpart(rhs(Z[1]))#0 then Z:"なし" /* "確認し" */,
/**/wxdraw2d(
/*....*/yrange=[ym,yM] /* "値域を確認し" */,
/*....*/color=red,line_width =2,explicit(Y,x,xm,xM) /* "Yを描き" */,
/*....*/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(MONDAI1),
/**/print("y=",Y," 赤がグラフ"),print(Z," ゼロ点")
/**/)$
MONDAI1:"2次関数y=x^2-2*m*x+1がx軸の正の部分で異なる2点で交わるには、mは";
e:x^2-2*m*x+1 /* "右辺の式は" */;
KOUSATU:"x軸の正の部分で異なる2点で交わる必要十分条件は、判別式、軸、y切片が";
D:(-m)^2-(1)*(1) /* "判別式は" */;
e1:D>0 /* "正" */;
J:-(-2*m)/(2*(1)) /* "グラフの放物線の軸は" */;
e2:J>0 /* "正" */;
yS:subst(x=0,e) /* "グラフのy切片は" */;
e3:yS>0 /* "正" */;
e1x:subst(m=x,lhs(e1)) /* "e1の左辺のmをxに変え" */;
e2x:subst(m=x,lhs(e2)) /* "e2の左辺のmをxに変え" */;
gr(e1x,-5,5,-10,10) /* "e1のグラフと" */$
gr(e2x,-5,5,-10,10) /* "e2のグラフで確認して" */$
KAITOU:"a>0のとき、不等式の解は";
print("m > ",1) /* "(◆修正時訂正)" */$
Y:subst(m=2,e) /* "m=2として" */;
gr(Y,-5,5,-10,10) /* "グラフで確認、2つのゼロ点はともに正" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドの実行結果を考察せよ。