:
Maxima数学II自習教材開発
教材の概要
3 図形と方程式 1)点と直線
1.直線上の点
2.平面上の点
3.直線の方程式
4.2直線の関係
301.補充問題
Maxima数学II自習教材試行報告用紙(Word)
Maxima数学II自習教材試行報告用紙(PDF)
:
教材の概要
活動時間
自宅での予習か授業初めの5分程度
活動概要
1 タブレット等を用いてトライ
1) 教科書の該当ページを開く
2) このWebページを開く
3) Maxima on lineのWebページを開く
4) 該当コマンドをMaximaOnLineにコピペして、実行
2 自分なりの感触、着想
1) 自分なりに、実行結果を見て、気づいたり感じたりすることがないか、考えてみる。
2) ワークシートに、考えてみたこと(意見・質問・感じたこと)を書く
3) ワークシートを、事前に提出する場合は、課題提出フォームを使うこと。
3 問題の雰囲気を2で感じてから、授業へ
1) 班活動などで自分の考えを仲間に伝える
2) 仲間の考えを受け止める
3) 筋が通って、見通しのよい解法、数学的な論点をうまく処理した解法をまとめる
参照テキスト
数研出版新編数学II
:
1.直線上の点
A. 数直線上の点
◆コマンド番号101
●2点間の距離
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・例1・練習1 101 A(6)、B(1)の間の距離は"/*(◆修正部分1)*/$
KOUSATU:"大きい方から小さい方を引くと、・・・"/**/;
KANSUU:"";
TEJUN:""$
p01:6;p02:1/*(◆修正部分2)*/;
p1:min(p01,p02);p2:max(p01,p02);
dis12:p2-p1/**/;
ansl:[dis12]/**/;
KAKUNIN:"図で確認"/**/$
pL:[[p1,0],[p2,0]];
xm:-10;xM:10;ym:-3;yM:3;
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=blue,explicit(0,x,xm,pL[1][1]-0.01) /* "()" */,
/**/color=blue,explicit(0,x,pL[2][1]+0.01,xM),
/**/line_width =3,
/**/color=red,explicit(0,x,pL[1][1],pL[2][1]) /* "()" */,
/**/line_width =1,
/**/color=red,
/**/point_type = filled_circle,
/**/point_size = 2,points(pL)
/**/) /* "赤が定義域での関数(◆修正時y,y2の定義域変更)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"大きい方から小さい方を引くと、( )となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例1・練習1 101 A(-2)、B(3)の間の距離は"/*(◆修正部分1)*/$
p01:-2;p02:3/*(◆修正部分2)*/;
B. 内分と外分
◆コマンド番号102
●内分点と外分点
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・練習2 102 数直線上の3点A(1)、B(7)、C(3)について、線分ABにとって、Cは"/*(◆修正部分1)*/$
KOUSATU:"CがABの内側にあれば内分点、外側にあれば外分点で、・・・"/**/;
KANSUU:"";
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点の内外分比で表示*/$
TEJUN:""$
p01:1;p02:7;p03:3/**/;
p1:min(p01,p02);p2:max(p01,p02)/*(◆修正部分2)*/;
ngl:p2ngl(p03,p01,p02)/*(◆修正部分2)*/;
ansl:ngl/**/;
KAKUNIN:"図で確認"/**/$
pL:[[p01,0],[p02,0],[p03,0]];
xm:-10;xM:10;ym:-3;yM:3;
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=blue,explicit(0,x,xm,p1-0.01) /* "()" */,
/**/color=blue,explicit(0,x,p2+0.01,xM),
/**/line_width =3,
/**/color=red,explicit(0,x,p1,p2) /* "()" */,
/**/line_width =1,
/**/color=red,
/**/point_type = filled_circle,
/**/point_size = 2,points(pL)
/**/) /* "赤が線分の関数(◆修正時y,y2の定義域変更)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"この場合は、( )点となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・練習2 102 数直線上の3点A(1)、B(7)、C(3)について、線分CBにとって、Aは"/*(◆修正部分1)*/$
p1:min(p02,p03);p2:max(p02,p03)/*(◆修正部分2)*/;
ngl:p2ngl(p01,p03,p02)/*(◆修正部分2)*/;
◆コマンド番号103
●内分点と外分点
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・例2・練習3 103 数直線上の2点A(3)、B(6)について、線分ABを2:1に内分する点P、2:1に外分する点Qは"/*(◆修正部分1)*/$
KOUSATU:"内分、外分の公式により、・・・"/**/;
KANSUU:"";
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点の内外分比で表示*/$
TEJUN:""$
p1:3;p2:6/*(◆修正部分2)*/;
p01:min(p1,p2);p02:max(p1,p2);
p3:ng2pl(p1,p2,2,1)/*(◆修正部分3)*/;
p4:ng2pl(p1,p2,2,-1)/*(◆修正部分3)*/;
ansl:[p3,p4]/**/;
KAKUNIN:"図で確認"/**/$
pL:[[p1,0],[p2,0],[p3,0],[p4,0]];
xm:-10;xM:10;ym:-3;yM:3;
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=blue,explicit(0,x,xm,p01-0.01) /* "()" */,
/**/color=blue,explicit(0,x,p02+0.01,xM),
/**/line_width =3,
/**/color=red,explicit(0,x,p01,p02) /* "()" */,
/**/line_width =1,
/**/color=red,
/**/point_type = filled_circle,
/**/point_size = 2,points(pL)
/**/) /* "赤が線分の関数(◆修正時y,y2の定義域変更)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"内分の公式により、Pは( )となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例2・練習3 103 数直線上の2点A(4)、B(8)について、線分ABを3:2に内分する点P、2:3に外分する点Qは"/*(◆修正部分1)*/$
p1:4;p2:8/*(◆修正部分2)*/;
p3:ng2pl(p1,p2,3,2)/*(◆修正部分3)*/;
p4:ng2pl(p1,p2,-2,3)/*(◆修正部分3)*/;
:
2.平面上の点
A. 座標平面上の点
◆コマンド番号201
●線対称、点対称
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・練習5 201 点P(-2,3)について、x軸に関して対称な点Q、、y軸に関して対称な点Rは"/*(◆修正部分1)*/$
KOUSATU:"x軸対称なら、x座標は変わらず、・・・"/*(◆修正部分1)*/;
KANSUU:"";
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]])/*原点対称*/$
TEJUN:""$
p1L:[-2,3]/**/;
p2L:xtpl(p1L);p3L:ytpl(p1L)/*(◆修正部分2)*/;
ansl:[p2L,p3L,"[x軸対称、y軸対称]"]/*(◆修正部分2)*/;
KAKUNIN:"図で確認"/**/$
xm:-10;xM:10;ym:-10;yM:10;
yL:[[0,ym],[0,yM]];
poL:[p1L];pL:[p2L,p3L]/*poL元の点、pL求める点(◆修正部分3)*/;
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,
/**/color=blue,point_type = filled_circle,point_size = 2,points(poL),
/**/color=red,point_type = filled_circle,point_size = 2,points(pL)
/**/) /* "青が元の点(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"x軸対称なら、x座標は変わらず、y座標が変わってy=( )となり、・・・"/*(◆修正部分4)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・練習5 201 点P(-2,3)について、原点に関して対称な点Rは"/*(◆修正部分1)*/$
KOUSATU:"原点対称なら、x座標もy座標も変って、・・・"/*(◆修正部分1)*/;
p2L:otpl(p1L)/*(◆修正部分2)*/;
ansl:[p2L,"[原点対称]"]/*(◆修正部分2)*/;
poL:[p1L];pL:[p2L]/*poL元の点、pL求める点(◆修正部分3)*/;
SUJIMITI:"原点対称なら、x座標もy座標も変って、x=( )、・・・"/*(◆修正部分4)*/;
B. 2点間の距離
◆コマンド番号202
●2点間の距離
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・例3・練習6 202 2点A(2,-1)、B(4,3)の間の距離は"/*(◆修正部分1)*/$
KOUSATU:"三平方の定理により、・・・"/**/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
p1L:[2,-1];p2L:[4,3]/*(◆修正部分2)*/;
if a12(p1L,p2L)>=0 then p3L:[max(p1L[1],p2L[1]),min(p1L[2],p2L[2])] else p3L:[max(p1L[1],p2L[1]),max(p1L[2],p2L[2])]/**/;
ansl:[dis(p1L,p2L),"[距離]"]/**/;
KAKUNIN:"図で確認"/**/$
xm:-10;xM:10;ym:-10;yM:10;
yL:[[0,ym],[0,yM]];
poL:[p1L,p2L,p3L,p1L];pL:[p3L]/*p1L,p2L元の点、p3L直角点*/;
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,
/**/points_joined=true,color=blue,point_type = filled_circle,point_size = 2,points(poL),
/**/color=red,point_type = filled_circle,point_size = 1,points(pL)
/**/) /* "青が元の点(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"三平方の定理により、x方向の差( )と、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例3・練習6 202 2点E(5,-2)、F(3,-2)の間の距離は"/*(◆修正部分1)*/$
p1L:[5,-2];p2L:[3,-2]/*(◆修正部分2)*/;
C. 内分点、外分点の座標
◆コマンド番号203
●内分点、外分点の座標
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・例4・練習7 203 2点A(-1,6)、B(4,1)を結ぶ線分ABについて、3:2に内分する点P、5:2に外分する点Qは"/*(◆修正部分1)*/$
KOUSATU:"内分・外分の公式により、・・・"/**/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
p1L:[-1,6];p2L:[4,1]/**/;
p3L:ng2pl(p1L,p2L,3,2);p4L:ng2pl(p1L,p2L,5,-2)/*(◆修正部分2)*/;
ansl:[p3L,p4L,"[内分点、外分点]"]/*(◆修正部分2)*/;
KAKUNIN:"図で確認"/**/$
xm:-10;xM:10;ym:-10;yM:10/*(◆修正部分3)*/;
poL:[p1L,p2L];pL:[p3L,p4L]/*p1L,p2L元の点、(◆修正部分3)*/;
yL:[[0,ym],[0,yM]];
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,
/**/points_joined=true,color=blue,point_type = filled_circle,point_size = 2,points(poL),
/**/points_joined=false,color=red,point_type = filled_circle,point_size = 2,points(pL)
/**/) /* "青が元の点(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"内分・外分の公式により、内分点のx座標は( )となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例4・練習7 203 2点A(-1,6)、B(4,1)を結ぶ線分ABについて、2:3に外分する点Qは"/*(◆修正部分1)*/$
p3L:ng2pl(p1L,p2L,-2,3)/*(◆修正部分2)*/;
ansl:[p3L,"[外分点]"]/*(◆修正部分2)*/;
xm:-15;xM:5;ym:-0;yM:20/*(◆修正部分3)*/;
poL:[p1L,p2L];pL:[p3L]/*p1L,p2L元の点、(◆修正部分3)*/;
◆コマンド番号204
●内分点、外分点の座標
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・例題1・練習8 204 3点A(x1,y1)、B(x2,y2)、C(x3,y3)の三角形ABCで、辺BCの中点M、線分AMを2:1に内分する点Gは"/*(◆修正部分1)*/$
KOUSATU:"内分・外分の公式により、・・・"/*(◆修正部分1)*/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
p1L:[x1,y1];p2L:[x2,y2];p3L:[x3,y3]/*/*(◆修正部分2)*/*/;
p4L:ng2pl(p2L,p3L,1,1);p5L:ng2pl(p1L,p4L,2,1)/*(◆修正部分2)*/;
ansl:[p5L,"[求める点(重心)]"]/**/;
KAKUNIN:"図で確認"/**/$
xm:-10;xM:10;ym:-10;yM:10/**/;
sxl:[x1=2,y1=5,x2=1,y2=2,x3=5,y3=1]/**/;
poL:[p1L,p2L,p3L,p1L];pL:[p1L,p4L,p5L]/*p1L,p2L,p3L元の点*/;
poL:subst(sxl,poL);pL:subst(sxl,pL);
yL:[[0,ym],[0,yM]];
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,
/**/points_joined=true,color=blue,point_type = filled_circle,point_size = 2,points(poL),
/**/points_joined=true,color=red,point_type = filled_circle,point_size = 2,points(pL)
/**/) /* "青が元の点(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"内分・外分の公式により、求める点のx座標は( )となり、・・・"/*(◆修正部分3)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例題1・練習8 204 3点A(-2,4)、B(0,-3)、C(2,1)の三角形ABCで、重心の座標Gは"/*(◆修正部分1)*/$
KOUSATU:"重心の公式により、・・・"/*(◆修正部分1)*/;
p1L:[-2,4];p2L:[0,-3];p3L:[2,1]/*/*(◆修正部分2)*/*/;
p4L:ng2pl(p2L,p3L,1,1);p5L:(p1L+p2L+p3L)/3/*(◆修正部分2)*/;
SUJIMITI:"重心の公式により、重心のx座標は( )となり、・・・"/*(◆修正部分3)*/;
研究. 座標平面を利用した図形の性質の証明
◆コマンド番号205
●中線定理
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・研究・練習1 205 3点A(a,b)、B(-c,0)、C(c,0)の三角形ABCで、辺BCの中点M、線分AMのとき、
AB^2+AC^2=2*(AM^2+BM^2)"/*(◆修正部分1)*/$
KOUSATU:"左辺、右辺を座標で表現し、・・・"/*(◆修正部分1)*/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
p1L:[a,b];p2L:[-c,0];p3L:[c,0];p4L:[0,0]/*/*(◆修正部分2)*/*/;
AB:dis(p1L,p2L);AC:dis(p1L,p3L);AM:dis(p1L,p4L);BM:dis(p2L,p4L)/*(◆修正部分2)*/;
Le:AB^2+AC^2;Le1:expand(Le);Re:2*(AM^2+BM^2);Re1:expand(Re)/*(◆修正部分2)*/;
ansl:[Le1,Re1,"[左辺、右辺]"]/**/;
KAKUNIN:"確認"/**/$
mes:"成立";if Le1#Re1 then mes:"不成立";kknnl:[ansl,mes,"[解答、成立・不成立]"];
xm:-10;xM:10;ym:-10;yM:10/**/;
sxl:[a=2,b=5,c=3]/**/;
poL:[p1L,p2L,p3L,p1L];pL:[p1L,p4L,p2L]/*p1L,p2L,p3L元の点*/;
poL:subst(sxl,poL);pL:subst(sxl,pL);
yL:[[0,ym],[0,yM]];
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,
/**/points_joined=true,color=blue,point_type = filled_circle,point_size = 2,points(poL),
/**/points_joined=true,color=red,point_type = filled_circle,point_size = 1,points(pL)
/**/) /* "青が元の点(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"左辺、右辺を座標で表現すると、左辺は( )となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・研究・練習1 205 3点A(a,b)、B(-c,0)、C(c,0)の三角形ABCで、辺BCを1:2に内分する点がDのとき、
2*AB^2+AC^2=3*(AD^2+2*BD^2)"/*(◆修正部分1)*/$
p1L:[a,b];p2L:[-c,0];p3L:[c,0];p4L:ng2pl(p2L,p3L,1,2)/*/*(◆修正部分2)*/*/;
AB:dis(p1L,p2L);AC:dis(p1L,p3L);AD:dis(p1L,p4L);BD:dis(p2L,p4L)/*(◆修正部分2)*/;
Le:2*AB^2+AC^2;Le1:expand(Le);Re:3*(AD^2+2*BD^2);Re1:expand(Re)/*(◆修正部分2)*/;
:
3.直線の方程式
A. x,yの1次方程式の表す図形
◆コマンド番号301
●1次方程式の表す図形
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・例5・練習9 301 2*x+y-4=0の表す図形は"/*(◆修正部分1)*/$
KOUSATU:"y=と変形できる場合は、・・・"/*(◆修正部分1)*/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
e1:2*x+y-4=0;yce1:coeff(expand(lhs(e1)),y,1)/*(◆修正部分2)*/;
if yce1#0 then( sLl:solve(e1,y),ansl:[coeff(rhs(sLl[1]),x,1),subst(x=0,sLl[1]),sLl,"[傾き、y切片、方程式、の直線]"] )
/**/else( sLl:solve(e1,x), ansl:[sLl[1],sLl,"[x切片,方程式、のx軸に垂直な直線]"]);
KAKUNIN:"確認"/**/$
xm:-10;xM:10;ym:-10;yM:10/**/;
if length(ansl)=4 then(
/**/p1L:[0,rhs(ansl[2])],xce1:coeff(rhs(subst(y=0,ansl[3][1])),x,1),
/**/if xce1=0 then (p2L:p1L,p3L:[xm,rhs(ansl[2])],p4L:[xM,rhs(ansl[2])],l1:explicit(0,x,xm,xM))
/**/else (p2L:[rhs(solve(subst(y=0,ansl[3]),x)[1]),0],p3L:p1L,p4L:p1L,l1:explicit(rhs(ansl[3][1]),x,xm,xM)))
else (p1L:[rhs(ansl[1]),0],p2L:[rhs(ansl[1]),0],p3L:[rhs(ansl[1]),ym],p4L:[rhs(ansl[1]),yM],l1:explicit(0,x,xm,xM));
poL:[p1L,p2L];pL:[p3L,p4L]/*p1L,p2L,切片*/;
yL:[[0,ym],[0,yM]];
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,l1,
/**/points_joined=false,color=blue,point_type = filled_circle,point_size = 2,points(poL),
/**/points_joined=true,color=red,point_type = filled_circle,point_size = 1,points(pL)
/**/) /* "青が元の点(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"y=と変形できる場合、方程式は( )となり、・・・"/*(◆修正部分3)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例5・練習9 301 3*x-y+1=0の表す図形は"/*(◆修正部分1)*/$
KOUSATU:"y=と変形できる場合は、・・・"/*(◆修正部分1)*/;
e1:3*x-y+1=0;yce1:coeff(expand(lhs(e1)),y,1)/*(◆修正部分2)*/;
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例5・練習9 301 y+1=0の表す図形は"/*(◆修正部分1)*/$
KOUSATU:"y=と変形できる場合は、・・・"/*(◆修正部分1)*/;
e1:y+1=0;yce1:coeff(expand(lhs(e1)),y,1)/*(◆修正部分2)*/;
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例5・練習9 301 x-2=0の表す図形は"/*(◆修正部分1)*/$
KOUSATU:"y=と変形できない場合は、・・・"/*(◆修正部分1)*/;
e1:x-2=0;yce1:coeff(expand(lhs(e1)),y,1)/*(◆修正部分2)*/;
SUJIMITI:"y=と変形できない場合、方程式は( )となり、・・・"/*(◆修正部分3)*/;
p1L:[a,b];p2L:[-c,0];p3L:[c,0];p4L:ng2pl(p2L,p3L,1,2)/*/*(◆修正部分2)*/*/;
AB:dis(p1L,p2L);AC:dis(p1L,p3L);AD:dis(p1L,p4L);BD:dis(p2L,p4L)/*(◆修正部分2)*/;
Le:2*AB^2+AC^2;Le1:expand(Le);Re:3*(AD^2+2*BD^2);Re1:expand(Re)/*(◆修正部分2)*/;
B. 直線の方程式のいろいろな形
◆コマンド番号302
●傾きと直線の方程式
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・例6・練習10 302 点(1,3)を通り、傾きが2の直線の方程式は"/*(◆修正部分1)*/$
KOUSATU:"比例式ではx-1:y-3=1:2であるから、等式に変えると、・・・"/*(◆修正部分1)*/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
p0L:[1,3];m:2;e1:y-p0L[2]=m*(x-p0L[1])/*(◆修正部分2)*/;
e12:expand(e1)-coeff(lhs(e1),y,0);yce1:coeff(expand(lhs(e1)),y,1)/**/;
if yce1#0 then( sLl:solve(e1,y),ansl:[coeff(rhs(sLl[1]),x,1),subst(x=0,sLl[1]),sLl,"[傾き、y切片、方程式、の直線]"] )
/**/else( sLl:solve(e1,x), ansl:[sLl[1],sLl,"[x切片,方程式、のx軸に垂直な直線]"]);
KAKUNIN:"確認"/**/$
xm:-10;xM:10;ym:-10;yM:10/**/;
if length(ansl)=4 then(
/**/p1L:[0,rhs(ansl[2])],xce1:coeff(rhs(subst(y=0,ansl[3][1])),x,1),
/**/if xce1=0 then (p2L:p1L,p3L:[xm,rhs(ansl[2])],p4L:[xM,rhs(ansl[2])],l1:explicit(0,x,xm,xM))
/**/else (p2L:[rhs(solve(subst(y=0,ansl[3]),x)[1]),0],p3L:p1L,p4L:p1L,l1:explicit(rhs(ansl[3][1]),x,xm,xM)))
else (p1L:[rhs(ansl[1]),0],p2L:[rhs(ansl[1]),0],p3L:[rhs(ansl[1]),ym],p4L:[rhs(ansl[1]),yM],l1:explicit(0,x,xm,xM));
poL:[p0L,p1L];pL:[p2L,p3L,p4L]/*p0L,p2L,通る点、y切片*/;
yL:[[0,ym],[0,yM]];
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,l1,
/**/points_joined=false,color=blue,point_type = filled_circle,point_size = 2,points(poL),
/**/points_joined=true,color=red,point_type = filled_circle,point_size = 1,points(pL)
/**/) /* "青が元の点(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"比例式ではx-1:y-3=1:2であるから、等式に変えると、方程式は( )となり、・・・"/*(◆修正部分3)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例6・練習10 302 点(-3,1)を通り、傾きが-2の直線の方程式は"/*(◆修正部分1)*/$
KOUSATU:"比例式ではx+3:y-1=1:-2であるから、等式に変えると、・・・"/*(◆修正部分1)*/;
p0L:[-3,1];m:-2;e1:y-p0L[2]=m*(x-p0L[1])/*(◆修正部分2)*/;
SUJIMITI:"比例式ではx+3:y-1=1:-2であるから、等式に変えると、方程式は( )となり、・・・"/*(◆修正部分3)*/;
◆コマンド番号303
●通る2点と直線の方程式
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・例7・練習11 303 2点(1,2),(3,-4)を通る直線の方程式は"/*(◆修正部分1)*/$
KOUSATU:"比例式ではx-1:y-2=3-1:-4-2であるから、等式に変えると、・・・"/*(◆修正部分1)*/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
p0L:[1,2];p1L:[3,-4];e1L:[x-p0L[1],":",y-p0L[2],"=",p1L[1]-p0L[1],":",p1L[2]-p0L[2]]/*(◆修正部分2)*/;
e1:e1L[3]*e1L[5]=e1L[1]*e1L[7];e11:expand(e1);
e12:e11-coeff(lhs(e11),y,0);yce1:coeff(expand(lhs(e12)),y,1)/**/;
if yce1#0 then( sLl:solve(e1,y),ansl:[coeff(rhs(sLl[1]),x,1),subst(x=0,sLl[1]),sLl,"[傾き、y切片、方程式、の直線]"] )
/**/else( sLl:solve(e1,x), ansl:[sLl[1],sLl,"[x切片,方程式、のx軸に垂直な直線]"]);
KAKUNIN:"確認"/**/$
xm:-10;xM:10;ym:-10;yM:10/**/;
if length(ansl)=4 then(
/**/kp1L:[0,rhs(ansl[2])],xce1:coeff(rhs(subst(y=0,ansl[3][1])),x,1),
/**/if xce1=0 then (kp2L:kp1L,kp3L:[xm,rhs(ansl[2])],kp4L:[xM,rhs(ansl[2])],l1:explicit(0,x,xm,xM))
/**/else (kp2L:[rhs(solve(subst(y=0,ansl[3]),x)[1]),0],kp3L:kp2L,kp4L:kp2L,l1:explicit(rhs(ansl[3][1]),x,xm,xM)))
else (kp1L:[rhs(ansl[1]),0],kp2L:[rhs(ansl[1]),0],kp3L:[rhs(ansl[1]),ym],kp4L:[rhs(ansl[1]),yM],l1:explicit(0,x,xm,xM));
poL:[p0L,p1L];pL:[kp1L,kp2L,kp3L,kp4L]/*p0L,p1L,通る点*/;
yL:[[0,ym],[0,yM]];
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,l1,
/**/points_joined=false,color=blue,point_type = filled_circle,point_size = 2,points(poL),
/**/points_joined=true,color=red,point_type = filled_circle,point_size = 1,points(pL)
/**/) /* "青が元の点(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"比例式ではx-1:y-3=1:2であるから、等式に変えると、方程式は( )となり、・・・"/*(◆修正部分3)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例7・練習11 303 2点(3,-1),(3,4)を通る直線の方程式は"/*(◆修正部分1)*/$
KOUSATU:"比例式ではx-3:y-(-1)=3-3:-4-(-1)であるから、等式に変えると、・・・"/*(◆修正部分1)*/;
p0L:[3,-1];p1L:[3,4];e1L:[x-p0L[1],":",y-p0L[2],"=",p1L[1]-p0L[1],":",p1L[2]-p0L[2]]/*(◆修正部分2)*/;
SUJIMITI:"比例式ではx-3:y-(-1)=3-3:-4-(-1)であるから、等式に変えると、方程式は( )となり、・・・"/*(◆修正部分3)*/;
◆コマンド番号304
●2切片と直線の方程式
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・練習12 304 x切片が3、y切片が2の方程式は"/**/$
KOUSATU:"(3,0),(0,2)を通るので、比例式ではx-3:y=0-3:2-0であるから、等式に変えると、・・・"/**/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
p0L:[3,0];p1L:[0,2];e1L:[x-p0L[1],":",y-p0L[2],"=",p1L[1]-p0L[1],":",p1L[2]-p0L[2]]/**/;
e1:e1L[3]*e1L[5]=e1L[1]*e1L[7];e11:expand(e1);e12:(e11-coeff(rhs(e11),x,1)*x)/coeff(rhs(e11),x,0);e12:expand(e12);
e13:e11/coeff(lhs(e11),y,1);
ansl:[e12,"[x切片・y切片の方程式]"];
KAKUNIN:"確認"/**/$
xm:-10;xM:10;ym:-10;yM:10/**/;
kp1L:p0L;kp2L:p1L;kp3L:kp1L;kp4L:kp2L;l1:explicit(rhs(e13),x,xm,xM);
poL:[p0L,p1L];pL:[kp1L,kp2L,kp3L,kp4L]/*p0L,p1L,通る点*/;
yL:[[0,ym],[0,yM]];
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,l1,
/**/points_joined=false,color=blue,point_type = filled_circle,point_size = 2,points(poL),
/**/points_joined=true,color=red,point_type = filled_circle,point_size = 1,points(pL)
/**/) /* "青が元の点(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"比例式ではx-3:y=0-3:2-0であるから、等式に変えると、方程式は( )となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行し、結果を考察せよ。
:
4.2直線の関係
A. 2直線の平行、垂直
◆コマンド番号401
●2直線の平行
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・例8・練習13 401 y=2*x+3,y=2*x-1は"/*(◆修正部分1)*/$
KOUSATU:"傾きが等しいので、・・・"/**/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
e1:y=2*x+3;e2:y=2*x-1;cxe1:coeff(rhs(e1),x,1);cxe2:coeff(rhs(e2),x,1)/*(◆修正部分2)*/;
if cxe1=cxe2 then mes:"平行" elseif cxe1*cxe2=-1 then mes:"垂直" else mes:"平行でも垂直でもない";
ansl:[cxe1,cxe2,mes,"[傾き1、傾き2、平行・垂直]"];
KAKUNIN:"確認"/**/$
xm:-10; xM:10; ym:-10; yM:10/**/;
p1L:[0,subst(x=0,rhs(e1))]; if cxe1#0 then p11L:[rhs(solve(subst(y=0,e1),x)[1]),0] else p11L:p1L;
p2L:[0,subst(x=0,rhs(e2))]; if cxe2#0 then p21L:[rhs(solve(subst(y=0,e2),x)[1]),0] else p21L:p2L;
l1:explicit(rhs(e1),x,xm,xM); l2:explicit(rhs(e2),x,xm,xM);
poL:[p1L,p2L]; pL:[p11L,p21L]/*poL,y切片*/;
yL:[[0,ym],[0,yM]];
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,l1,l2,
/**/points_joined=false, color=blue, point_type=filled_circle, point_size=2, points(poL),
/**/points_joined=false, color=red, point_type=filled_circle, point_size=1, points(pL)
/**/) /* "青がy切片(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"傾きが( )で等しいので、・・・"/*(◆修正部分3)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例8・練習13 401 y=-2*x,2*x+y+5=0は"/*(◆修正部分1)*/$
e1:y=-2*x;e2:2*x+y+5=0;e1:solve(e1,y)[1];e2:solve(e2,y)[1]/*(◆修正部分2)*/;
cxe1:coeff(rhs(e1),x,1);cxe2:coeff(rhs(e2),x,1)/*(◆修正部分2)*/;
◆コマンド番号402
●2直線の垂直
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・練習14 402 y=3*x-1,x+3*y+2=0は"/*(◆修正部分1)*/$
KOUSATU:"垂直になるのは、傾きの積が-1になるので、・・・"/**/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
e1:y=3*x-1;e2:x+3*y+2=0;e1:expand(solve(e1,y)[1]);e2:expand(solve(e2,y)[1])/*(◆修正部分2)*/;
cxe1:coeff(rhs(e1),x,1);cxe2:coeff(rhs(e2),x,1)/**/;
if cxe1=cxe2 then mes:"平行" elseif cxe1*cxe2=-1 then mes:"垂直" else mes:"平行でも垂直でもない";
ansl:[cxe1,cxe2,mes,"[傾き1、傾き2、平行・垂直]"];
KAKUNIN:"確認"/**/$
xm:-10; xM:10; ym:xm/8.7*6.7; yM:xM/8.7*6.7/**/;
p1L:[0,subst(x=0,rhs(e1))]; if cxe1#0 then p11L:[rhs(solve(subst(y=0,e1),x)[1]),0] else p11L:p1L;
p2L:[0,subst(x=0,rhs(e2))]; if cxe2#0 then p21L:[rhs(solve(subst(y=0,e2),x)[1]),0] else p21L:p2L;
l1:explicit(rhs(e1),x,xm,xM); l2:explicit(rhs(e2),x,xm,xM);
poL:[p1L,p2L]; pL:[p11L,p21L]/*poL,y切片*/;
yL:[[0,ym],[0,yM]];
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,l1,l2,
/**/points_joined=false, color=blue, point_type=filled_circle, point_size=2, points(poL),
/**/points_joined=false, color=red, point_type=filled_circle, point_size=1, points(pL)
/**/) /* "青がy切片(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"最初の直線の傾きが( )で、・・・"/*(◆修正部分3)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・練習14 402 3*x+4*y=2,4*x-3*y=1は"/*(◆修正部分1)*/$
e1:3*x+4*y=2;e2:4*x-3*y=1;e1:expand(solve(e1,y)[1]);e2:expand(solve(e2,y)[1])/*(◆修正部分2)*/;
◆コマンド番号403
●2直線の垂直
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・例題2・練習15 403 点A(2,1)を通り、2*x+3*y+4=0に垂直な直線は"/*(◆修正部分1)*/$
KOUSATU:"垂直な直線の方向は、x成分が元のy成分、y成分が元のx成分の逆符号になるので、・・・"/**/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
p2L:[2,1];e1:2*x+3*y+4=0;cye2:-coeff(lhs(e1),x,1);cxe2:coeff(lhs(e1),y,1);mes:"垂直"/*(◆修正部分2)*/;
e2:cxe2*(x-p2L[1])+cye2*(y-p2L[2])=0;e2:expand(e2)/**/;
ansl:[e2,mes,"[方程式、平行・垂直]"];
KAKUNIN:"確認"/**/$
xm:-10; xM:10; ym:xm/8.7*6.7; yM:xM/8.7*6.7/**/;
if cye2#0 then( p21L:[0,rhs(solve(subst(x=0,e2),y)[1])],p1L:[rhs(solve(subst(y=0,e1),x)[1]),0]) else (p21L:[p2L[1],0],p1L:[0,rhs(solve(e1,y)[1])]);
if cxe2#0 then( p22L:[rhs(solve(subst(y=0,e2),x)[1]),0],p12L:[0,rhs(solve(subst(x=0,e1),y)[1])]) else (p22L:[0,p2L[2]],p12L:[rhs(solve(e1,x)[1]),0]);
l1:implicit(e1,x,xm,xM,y,ym,yM); l2:implicit(e2,x,xm,xM,y,ym,yM);
poL:[p1L,p12L]; pL:[p2L,p21L,p22L]/*poL,y切片*/;
yL:[[0,ym],[0,yM]];
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,
/**/points_joined=false, color=red, point_type=filled_circle, point_size=2, points(pL),l2,
/**/points_joined=false, color=blue, point_type=filled_circle, point_size=1, points(poL),l1
/**/) /* "青が与えられた直線、赤が求める直線(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"最初の直線の方向が、x成分( )、y成分( )だから、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例題2・練習15 403 点A(3,-1)を通り、3*x+2*y+1=0に垂直な直線は"/*(◆修正部分1)*/$
p2L:[2,1];e1:3*x+2*y+1=0;cye2:-coeff(lhs(e1),x,1);cxe2:coeff(lhs(e1),y,1);mes:"垂直"/*(◆修正部分2)*/;
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例題2・練習15 403 点A(3,-1)を通り、3*x+2*y+1=0に平行な直線は"/*(◆修正部分1)*/$
p2L:[2,1];e1:3*x+2*y+1=0;cxe2:coeff(lhs(e1),x,1);cye2:coeff(lhs(e1),y,1);mes:"平行"/*(◆修正部分2)*/;
◆コマンド番号404
●(補足)平行四辺形での原点の対角点と辺への垂線を下した点
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・対角点 404 2点P(5,1),Q(2,3)と原点O(0,0)によりできる平行四辺形POQRでのRの座標、原点からの方向と距離、∠PORの大きさの余弦は"/*(◆修正部分1)*/$
KOUSATU:"PからRへの方向と距離はOからQへの方向と距離に等しいので、・・・"/*(◆修正部分1)*/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
p0L:[0,0];p1L:[5,1];p2L:[2,3];p3L:p1L+p2L/**/;
op1:sqrt(p1L.p1L);op2:sqrt(p2L.p2L);op3:sqrt(p3L.p3L)/*三平方の定理*/;at:(op1^2+op3^2-op2^2)/(2*op1*op3)/*余弦定理*/;
ansl:[p3L,p3L,op3,at,"[座標、方向、距離、∠PORの余弦]"]/*(◆修正部分2)*/;
KAKUNIN:"確認"/**/$
xm:-10; xM:10; ym:xm/8.7*6.7; yM:xM/8.7*6.7/**/;
pol:[p1L,p0L,p2L];p1l:[p1L,p3L,p0L]; pl:[p3L]/*poL,与えられた点*//*(◆修正部分3)*/;
yL:[[0,ym],[0,yM]]/*y軸*/;
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,
/**/points_joined=true, color=red, point_type=filled_circle, point_size=2, points(pl),
/**/points_joined=true, color=blue, point_type=filled_circle, point_size=1, points(pol),
/**/points_joined=true, color=blue, point_type=filled_circle, point_size=0, points(p1l)
/**/) /* "青が与えられた点、赤が求める点(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"PからRへの方向のx成分( )、y成分( )となり、・・・"/*(◆修正部分4)*/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・対角点 404 2点P(5/sqrt(26),1/sqrt(26)),Q(2,3)と原点O(0,0)によりできる平行四辺形POQRでのRから直線OPへ垂線を下した点は"/*(◆修正部分1)*/$
KOUSATU:"OからPへの方向を大きさ1の方向にすると、・・・"/*(◆修正部分1)*/;
dop4:(p1L/op1).p3L;p4L:dop4*p1L/op1;ansl:[p4L,"[垂線を下した点の座標]"]/*(◆修正部分2)*/;
pol:[p1L,p0L,p2L];p1l:[p1L,p3L,p0L,p4L,p3L]; pl:[p3L,p4L]/*poL,与えられた点*//*(◆修正部分3)*/;
SUJIMITI:"OからPへの方向を大きさ1の方向にすると( )となり、・・・"/*(◆修正部分4)*/;
◎補足、∠PORの余弦は、OPの方向(Pの座標)とORの方向(Rの座標)のx成分どうしの積とy成分どうしの積の和を、それぞれの大きさ(距離)の積で割ったものとなっている。
これを、OP.OR:=OP[1]*OR[1]+OP[2]*OR[2]で表し、OPとORの内積と呼ぶ。
したがって、OPの代わりに、OPと同方向で大きさ1の座標OP1[5/sqrt(26),1/sqrt(26)]を使うと、OP1.ORは、ORから直線OPへ垂線を下したときの点Mまでの原点Oからの距離となる。
それゆえ、MはOP1.OR*OP1となる。
◆コマンド番号405
●線対称の点
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・応用例題1・練習16 405 直線2*x-y-1=0に関して、点A(0,4)と対称な点Bは"/*(◆修正部分1)*/$
KOUSATU:"直線のx切片Pを取り、Aから直線へ垂線を下した点Qを取り、線分AQの2:1の外分点を取ると、・・・"/**/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
e:2*x-y-1=0;p1L:[0,4]/*(◆修正部分2)*/;
p0L:[0,rhs(solve(subst(x=0,e),y)[1])];p12L:[coeff(lhs(e),x,1),coeff(lhs(e),y,1)];p12L:p12L/sqrt(p12L.p12L);p10L:p0L-p1L;p2L:p1L+p12L/**/;
p3L:p1L+p10L.p12L*p12L;p4L:p1L+2*p10L.p12L*p12L;
ansl:[p4L,"[線対称点]"]/**/;
KAKUNIN:"確認"/**/$
xm:-10; xM:10; ym:xm/8.7*6.7; yM:xM/8.7*6.7/**/;
pol:[p1L];p1l:[p0L,p1L,p2L,p3L]; pl:[p4L]/*poL,与えられた点*//**/;
yL:[[0,ym],[0,yM]]/*y軸*/;
l1:implicit(e,x,xm,xM,y,ym,yM);
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,
/**/points_joined=true, color=red, point_type=filled_circle, point_size=2, points(pl),
/**/points_joined=true, color=blue, point_type=filled_circle, point_size=1, points(pol),
/**/points_joined=true, color=blue, point_type=filled_circle, point_size=1, points(p1l),l1
/**/) /* "青が与えられた点、赤が求める点(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"直線の垂直方向の大きさ1の方向を考えるとx成分( )、y成分( )となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・応用例題1・練習16 405 直線3*x-2*y-6=0に関して、点A(-1,2)と対称な点Bは"/*(◆修正部分1)*/$
e:3*x-2*y-6=0;p1L:[-1,2]/*(◆修正部分2)*/;
C. 点と直線の距離
◆コマンド番号406
●点と直線の距離
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・例9・練習17 406 原点と直線3*x+4*y-25=0の距離は"/*(◆修正部分1)*/$
KOUSATU:"原点から直線への大きさ1の垂直方向を考えると、・・・"/**/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
e:3*x+4*y-25=0;p1L:[0,0]/*(◆修正部分2)*/;
p0L:[0,rhs(solve(subst(x=0,e),y)[1])];p12L:[coeff(lhs(e),x,1),coeff(lhs(e),y,1)];p12L:p12L/sqrt(p12L.p12L);p10L:p0L-p1L;p2L:p1L+p12L/**/;
p3L:p1L+p10L.p12L*p12L;
ansl:[abs(p10L.p12L),"[原点から直線までの距離]"]/**/;
KAKUNIN:"確認"/**/$
xm:-10; xM:10; ym:xm/8.7*6.7; yM:xM/8.7*6.7/**/;
pol:[p1L];p1l:[p0L,p1L,p2L,p3L]; pl:[p3L]/*poL,与えられた点*//**/;
yL:[[0,ym],[0,yM]]/*y軸*/;
l1:implicit(e,x,xm,xM,y,ym,yM);
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,
/**/points_joined=true, color=red, point_type=filled_circle, point_size=2, points(pl),
/**/points_joined=true, color=blue, point_type=filled_circle, point_size=1, points(pol),
/**/points_joined=true, color=blue, point_type=filled_circle, point_size=1, points(p1l),l1
/**/) /* "青が与えられた点、赤が求める点(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"直線の垂直方向の大きさ1の方向を考えるとx成分( )、y成分( )となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例9・練習17 406 原点と直線y=2*x+5の距離は"/*(◆修正部分1)*/$
e:y=2*x+5;e:rhs(e)-lhs(e)=0;p1L:[0,0]/*(◆修正部分2)*/;
◆コマンド番号407
●点と直線の距離
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・例10・練習18 407 点(1,-2)と直線3*x+4*y+4=0の距離は"/*(◆修正部分1)*/$
KOUSATU:"点から直線への大きさ1の垂直方向を考えると、・・・"/**/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
e:3*x+4*y+4=0;p1L:[1,-2]/*(◆修正部分2)*/;
p0L:[0,rhs(solve(subst(x=0,e),y)[1])];p12L:[coeff(lhs(e),x,1),coeff(lhs(e),y,1)];p12L:p12L/sqrt(p12L.p12L);p10L:p0L-p1L;p2L:p1L+p12L/**/;
p3L:p1L+p10L.p12L*p12L;
ansl:[abs(p10L.p12L),"[原点から直線までの距離]"]/**/;
KAKUNIN:"確認"/**/$
xm:-10; xM:10; ym:xm/8.7*6.7; yM:xM/8.7*6.7/**/;
pol:[p1L];p1l:[p0L,p1L,p2L,p3L]; pl:[p3L]/*poL,与えられた点*//**/;
yL:[[0,ym],[0,yM]]/*y軸*/;
l1:implicit(e,x,xm,xM,y,ym,yM);
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,
/**/points_joined=true, color=red, point_type=filled_circle, point_size=2, points(pl),
/**/points_joined=true, color=blue, point_type=filled_circle, point_size=1, points(pol),
/**/points_joined=true, color=blue, point_type=filled_circle, point_size=1, points(p1l),l1
/**/) /* "青が与えられた点、赤が求める点(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"直線の垂直方向の大きさ1の方向を考えるとx成分( )、y成分( )となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・例10・練習18 407 点(-1,5)と直線y=3*x-2の距離は"/*(◆修正部分1)*/$
e:y=3*x-2;e:rhs(e)-lhs(e)=0;p1L:[-1,5]/*(◆修正部分2)*/;
研究. 2直線の交点を通る直線の方程式
◆コマンド番号408
●垂直方向をk:1に内分する方向を垂直方向とする直線
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・研究・練習1 408 2直線x-y-1=0,x+2*y-4=0に対し、1/(1+k)*(x-y-1)+k/(1+k)*(x+2*y-4)=0、(すなわち(x-y-1)+k*(x+2*y-4)=0のこと)の直線は"/**/$
KOUSATU:"2直線の交点と垂直方向を考えると、・・・"/**/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
e1:x-y-1=0;e2:x+2*y-4=0;e3:1/(1+k)*e1+k/(1+k)*e2/**/;
K:2/*k=2として書くと(◆修正部分2)*/;
p0L:[0,0];p1L:[coeff(lhs(e1),x,1),coeff(lhs(e1),y,1)];p2L:[coeff(lhs(e2),x,1),coeff(lhs(e2),y,1)];
p3L:[coeff(lhs(rat(e3)),x,1),coeff(lhs(rat(e3)),y,1)];p12L:rat(1/(1+k)*p1L+k/(1+k)*p2L)/**/;
sxyl:solve([e1,e2],[x,y]);p4L:[rhs(sxyl[1][1]),rhs(sxyl[1][2])];
ansl:[p3L,p12L,"[e3の垂直方向、e1,e2の垂直方向をk:1に内分]"]/**/;
KAKUNIN:"確認"/**/$
xm:-10; xM:10; ym:xm/8.7*6.7; yM:xM/8.7*6.7/**/;
l1:implicit(e1,x,xm,xM,y,ym,yM);l2:implicit(e2,x,xm,xM,y,ym,yM);l3:implicit(subst(k=K,e3),x,xm,xM,y,ym,yM);
p1l:[p0L,p1L];p2l:[p0L,p2L];p12l:[p0L,subst(k=K,p12L)];p4l:[p4L]; p3l:[subst(k=K,p3L)]/*poL,与えられた点*//**/;
yL:[[0,ym],[0,yM]]/*y軸*/;
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,
/**/points_joined=true, color=red, point_type=filled_circle, point_size=2, points(p3l),l3,points(p12l),
/**/points_joined=true, color=cyan, point_type=filled_circle, point_size=1, points(p2l),l2,
/**/points_joined=true, color=blue, point_type=filled_circle, point_size=1, points(p1l),l1,points(p4l)
/**/) /* "青、シアンが与えられたもの、赤が求めるもの(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"直線の垂直方向の大きさ1の方向を考えるとx成分( )、y成分( )となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
K:0.8/*k=0.8として書くと(◆修正部分1)*/;
研究. 2直線の交点を通る直線の方程式
◆コマンド番号409
●垂直方向をk:1に内分する方向を垂直方向とする直線
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・研究 409 2直線x-y-1=0,x+2*y-4=0に対し、1/(1+k)*(x-y-1)+k/(1+k)*(x+2*y-4)=0、(すなわち(x-y-1)+k*(x+2*y-4)=0のこと)の直線は、また、この直線が(0,3)を通るなら、直線の方程式は"/*(◆修正部分1)*/$
KOUSATU:"2直線の交点と垂直方向を考えると、・・・"/**/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
e1:x-y-1=0;e2:x+2*y-4=0;e3:1/(1+k)*e1+k/(1+k)*e2;pL:[0,3]/*(◆修正部分2)*/;
skl:solve(subst([x=pL[1],y=pL[2]],e3),k);
p0L:[0,0];p1L:[coeff(lhs(e1),x,1),coeff(lhs(e1),y,1)];p2L:[coeff(lhs(e2),x,1),coeff(lhs(e2),y,1)];
p3L:[coeff(lhs(rat(e3)),x,1),coeff(lhs(rat(e3)),y,1)];p12L:rat(1/(1+k)*p1L+k/(1+k)*p2L)/**/;
sxyl:solve([e1,e2],[x,y]);p4L:[rhs(sxyl[1][1]),rhs(sxyl[1][2])];
ansl:[p3L,p12L,skl,rat(subst(skl,e3)),"[e3の垂直方向、e1,e2のx,yの係数での垂直方向をk:1に内分,(0,3)を通るときのk,方程式]"]/**/;
KAKUNIN:"確認"/**/$
xm:-10; xM:10; ym:xm/8.7*6.7; yM:xM/8.7*6.7/*(◆修正部分3)*/;
l1:implicit(e1,x,xm,xM,y,ym,yM);l2:implicit(e2,x,xm,xM,y,ym,yM);l3:implicit(subst(skl[1],e3),x,xm,xM,y,ym,yM);
p1l:[p0L,p1L];p2l:[p0L,p2L];p12l:[p0L,subst(skl[1],p12L)];p4l:[p4L]; p3l:[subst(skl[1],p3L)]/*poL,与えられた点*//**/;
yL:[[0,ym],[0,yM]]/*y軸*/;
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,
/**/points_joined=true, color=red, point_type=filled_circle, point_size=2, points(p3l),l3,points(p12l),
/**/points_joined=true, color=cyan, point_type=filled_circle, point_size=1, points(p2l),l2,points(p4l),
/**/points_joined=true, color=blue, point_type=filled_circle, point_size=1, points(p1l),l1,points([pL])
/**/) /* "青が与えられた点、赤が求める点(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"直線の垂直方向の大きさ1の方向を考えるとx成分( )、y成分( )となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・研究 409 2直線2*x-y+1=0,x+y-4=0の交点と(-2,1)を通るなら、kは"/*(◆修正部分1)*/$
e1:2*x-y+1=0;e2:x+y-4=0;e3:1/(1+k)*e1+k/(1+k)*e2;pL:[-2,1]/*(◆修正部分2)*/;
xm:-15; xM:15; ym:xm/8.7*6.7; yM:xM/8.7*6.7/*(◆修正部分3)*/;
:
補充問題.
.
◆コマンド番号30101
●2点と直線
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・補充問題 30101 A(4,0),B(0,2)について、直線ABの方程式は"/*(◆修正部分1)*/$
KOUSATU:"2点の位置から直線の垂直方向を読み取って、・・・"/*(◆修正部分1)*/;
KANSUU:"";
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)/*傾き*/$
dis(p1l,p2l):=block([ans],ans:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
p1L:[4,0];p2L:[0,2];nl:[p2L[2]-p1L[2],-(p2L[1]-p1L[1])];nl:nl/gcd(nl[1],nl[2])/*(◆修正部分2)*/;
e1:nl.[x-p1L[1],y-p1L[2]]=0;e1:rat(e1)/*(◆修正部分2)*/;
ansl:[nl,e1,"[2点を通る直線の垂直方向、その方程式]"]/*(◆修正部分2)*/;
KAKUNIN:"確認"/**/$
xm:-10; xM:10; ym:xm/8.7*6.7; yM:xM/8.7*6.7/**/;
l1:implicit(e1,x,xm,xM,y,ym,yM);
pol:[p1L,p2L];p2l:[p1L,p1L+nl]/*poL,与えられた点*//**/;
yL:[[0,ym],[0,yM]]/*y軸*/;
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,
/**/points_joined=true, color=red, point_type=filled_circle, point_size=2, points(p2l),l1,
/**/points_joined=true, color=blue, point_type=filled_circle, point_size=1, points(pol)
/**/) /* "青が与えられたもの、赤が求めるもの(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"2点の位置から直線の垂直方向を読み取ると、x成分( )、y成分( )となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・補充問題 30101 A(4,0),B(0,2)について、垂直2等分線の方程式は"/*(◆修正部分1)*/$
KOUSATU:"2点の位置から、中点と垂直二等分線の垂直方向を読み取って、・・・"/*(◆修正部分1)*/;
p1L:[4,0];p2L:[0,2];nl:[p2L[1]-p1L[1],(p2L[2]-p1L[2])];nl:nl/gcd(nl[1],nl[2])/*(◆修正部分2)*/;
p3L:(p1L+p2L)/2;e1:nl.[x-p3L[1],y-p3L[2]]=0;e1:rat(e1)/*(◆修正部分2)*/;
ansl:[p3L,nl,e1,"[2点の中点、垂直2等分線の垂直方向、その方程式]"]/*(◆修正部分2)*/;
◆コマンド番号30102
●垂心
●●●●●●●●●●●●●●●●
kill(all) /**/$
MONDAI:"・コラム 30102 O(0,0),A(2,3),B(5,0)で、Bから線分OAへの垂線の方程式、それとAからOBへの垂線との交点は"/*(◆修正部分1)*/$
KOUSATU:"2点から、求める垂線の垂直方向を読み取って、・・・"/*(◆修正部分1)*/;
KANSUU:"";
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:sqrt((p2l-p1l).(p2l-p1l)))/*距離*/$
TEJUN:""$
p0L:[0,0];p1L:[2,3];p2L:[5,0];nl:gl(p0L,p1L)/*(◆修正部分2)*/;
e1:nl.[x-p2L[1],y-p2L[2]]=0;e1:rat(e1)/*(◆修正部分2)*/;
p3L:[p1L[1],rhs(solve(subst(x=p1L[1],e1),y)[1])];
ansl:[nl,e1,p3L,"[2点への垂線の垂直方向、その方程式、交点]"]/**/;
KAKUNIN:"確認"/**/$
xm:-10; xM:10; ym:xm/8.7*6.7; yM:xM/8.7*6.7/**/;
l1:implicit(e1,x,xm,xM,y,ym,yM);
pol:[p0L,p1L];p2l:[p2L,p2L+nl,p2L,p3L]/*poL,与えられた点*//*(◆修正部分3)*/;
yL:[[0,ym],[0,yM]]/*y軸*/;
wxdraw2d(yrange=[ym,yM] /* "()" */,
/**/color=black,explicit(0,x,xm,xM),points_joined=true,points(yL),points_joined=false/*xy軸*/,
/**/points_joined=true, color=red, point_type=filled_circle, point_size=2, points(p2l),l1,
/**/points_joined=true, color=blue, point_type=filled_circle, point_size=1, points(pol)
/**/) /* "青が与えられたもの、赤が求めるもの(〇〇修正時y,y2の定義域変更に注意)" */;
KAITOU:ansl/*解答*//**/$
SUJIMITI:"2点の位置からもとめる垂線の垂直方向を読み取ると、x成分( )、y成分( )となり、・・・"/**/;
FURIKAERI:"(例:具体的な数値で、推論結果の確認など、実行者の振り返りを書きこむこと)"$
print(MONDAI)$
print(SUJIMITI)$
print(KAITOU)$
print(FURIKAERI)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
MONDAI:"・コラム 30102 O(0,0),A(2,3),B(5,0)で、Bから線分OAへの垂線の方程式、それとAからOBへの垂線との交点は"/*(◆修正部分1)*/$
KOUSATU:"2点から、求める垂線の垂直方向を読み取って、・・・"/*(◆修正部分1)*/;
p0L:[0,0];p1L:[2,3];p2L:[5,0];nl:gl(p1L,p2L)/*(◆修正部分2)*/;
e1:nl.[x-p0L[1],y-p0L[2]]=0;e1:rat(e1)/*(◆修正部分2)*/;
pol:[p1L,p2L];p2l:[p0L,p0L+nl,p0L,p3L]/*poL,与えられた点*//*(◆修正部分3)*/;