:
Maxima数学I自習教材開発
教材の概要
1数と式 2) 実数
4.実数
5.根号を含む式の計算
102.発展・補充問題
Maxima数学I自習教材試行報告用紙(Word)
Maxima数学I自習教材試行報告用紙(PDF)
Maxima数学I自習教材試行報告用紙(html)
課題(報告)提出フォーム
:
教材の概要
活動時間
自宅での予習か授業初めの5分程度
活動概要
1 タブレット等を用いてトライ
1) 教科書の該当ページを開く
2) このWebページを開く
3) Maxima on lineのWebページを開く
4) 該当コマンドをMaximaOnLineにコピペして、実行
2 自分なりの感触、着想
1) 自分なりに、実行結果を考察する
2) ワークシートに、考察したこと(意見・質問・感じたこと)を書く
3) ワークシートを、事前に提出する場合は、課題提出フォームを使うこと。
3 問題の雰囲気を2で感じてから、授業へ
1) 班活動などで自分の考察を仲間に伝える
2) 仲間の考察を受け止める
3) 筋が通って、見通しが効いた解法をまとめる
参照テキスト
数研出版新編数学I
第1章 数と式
第2節 実数
:
4.実数
A 有理数
◆コマンド番号401
●その1
循環小数●●●●●●●●●●●●●●●●
kill(all) /* "401-1 (循環)小数表示" */$
MONDAI:"401-1 次の分数の小数表示は"$
n:7/22 /* "分数7/22の(循環)小数表示(◆修正部分)" */;
n1:n,numer /* "小数(◆循環小数で表示へ◆)" */;
◎上のMaximaコマンドを実行せよ。
◎Maximaの出力を見て、循環小数表示をせよ。
●その2
循環小数表示●●●●●●●●●●●●●●●●
kill(all) /* "401-2 ●0.311818...の循環小数表示●" */$
MONDAI:"401-2 次の分数の循環小数表示は"$
hjun:0.3 /* "非循環部(数値)(◆修正部分)" */;
Hjun:"0.3" /* "非循環部(文字)(◆修正部分)" */;
jun:18 /* "循環節(数値)(◆修正時変更)" */;
Jun:"18" /* "循環節(文字)(◆修正時変更)" */;
js:-2 /* "循環節の開始の桁(◆修正時変更)" */;
jk:2 /* "循環節の桁数(◆修正時変更)" */;
v:hjun+sum(jun*10^(js+1)*(10^(-jk))^k, k, 1, 5),numer /* "小数表示" */;
print(Hjun,"'",Jun,"'") /* "◆循環小数で表示◆" */$
◎上のMaximaコマンドを実行せよ。
注 maxima on line は、文字列操作が制限されているので、
最初の6行のように入力している。
hjunは非循環部、junは循環節、jsは循環節の開始桁、jkは循環節の桁数。
Hjunは非循環部の文字列、Junは循環節の文字列。
◎●1、●2のコマンドを、次により修正して実行し、結果を比較して考察せよ。
n:15/7 /* "分数●15/7の(循環)小数表示●(◆修正部分)" */;
hjun:2 /* "非循環部(数値)(◆修正部分)" */;
Hjun:"2." /* "非循環部(文字)(◆修正部分)" */;
B 実数
◆コマンド番号402
●
数の演算結果●●●●●●●●●●●●●●●●
kill(all) /* "402 ●数の演算は閉じているか●" */$
MONDAI:"402 次の演算は閉じているか"$
n1:3 /* "(自然)数(◆修正部分)" */;
n2:6 /* "(自然)数(◆修正部分)" */;
Kd:n1*n2 /* "◆2数の演算(積)結果◆(◆修正部分)" */;
if mod(Kd,1)=0 and Kd>0 /* "◆2数の演算(積)結果◆(◆修正部分)" */;
/**/then KOTAE:"〇" /* "◆演算が閉じている(〇)、いない(×)◆" */
/**/else KOTAE:"×" /* "◆演算が閉じている(〇)、いない(×)◆" */$
print(KOTAE)$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を考察せよ。
n1:-3 /* "(整)数(◆修正部分)" */;
n2:6 /* "(整)数(◆修正部分)" */;
Kd:n1/n2 /* "◆2数の演算(商)は閉じているか◆(◆修正部分)" */;
C 数直線と絶対値
◆コマンド番号403
●
数直線●●●●●●●●●●●●●●●●
kill(all) /* "403 数直線 Maxima on lineでは、この行を削除" */$
MONDAI:"403 数を数直線上に表示すると"$
a:sqrt(4) /* "数√(4)を数直線上に示せ(◆修正部分)" */;
pL:[[a,0]] /* "▲数直線上の座標(赤)" */;
pL0:[[0,0]] /* "〇数直線上の原点" */;
draw2d(yrange=[-1,3],
/**/color=black,explicit(0,x,-3,3),
/**/point_type=circle,points(pL0),
/**/point_type=filled_up_triangle,color=red,points(pL)) /* "◆数直線上に数を表示◆" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
a:-sqrt(2) /* "数-√(2)を数直線上に示せ(◆修正部分)" */;
◆コマンド番号404
●
絶対値●●●●●●●●●●●●●●●●
kill(all) /* "404 絶対値 Maxima on lineでは、この行を削除" */$
MONDAI:"404 数を数直線上に表示すると"$
a:-3 /* "数|-3|を数直線上に示せ(◆修正部分)" */;
A:abs(a) /* "数の絶対値" */;
pL:[[a,0]] /* "◆数直線上のaの座標(黒)" */;
pLA:[[A,0]] /* "▲数直線上の|a|の座標(赤)" */;
pL0:[[0,0]] /* "〇数直線上の原点" */;
draw2d(yrange=[-1,3],
/**/color=black,explicit(0,x,-3,3),
/**/point_type=circle,points(pL0),
/**/point_type=filled_down_triangle,points(pL),
/**/point_type=filled_up_triangle,color=red,points(pLA)) /* "◆数直線上に数を表示◆" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
a:1-sqrt(2) /* "数|1-√(2)|を数直線上に示せ(◆修正部分)" */;
:
5.根号を含む式の計算
A 平方根
◆コマンド番号501
●例18-1
平方根●●●●●●●●●●●●●●●●
kill(all) /* "501 平方根" */$
MONDAI:"501 次の平方根は"$
a:3 /* "3の平方根(◆修正部分)" */;
ra:solve(x^2=a,x) /* "◆aの平方根◆" */;
◆コマンド番号502
●例18-2
平方根●●●●●●●●●●●●●●●●
kill(all) /* "502 平方根" */$
MONDAI:"502 次の平方根の平方は"$
b:sqrt(25) /* "25の正の平方根(◆修正部分)" */;
bp2:b^2 /* "◆平方根の平方◆" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを、次により修正して実行し、結果を比較して考察せよ。
b:-sqrt(9/25) /* "9/25の負の平方根(◆修正部分)" */;
◎注 数学史によれば、根とは、それだけで
平方、立方と鼎立する概念である。方程式の解とは異なる概念である。
例えば、次のように、表現されていた。
平方に、根の2倍が加えられたら、6になる。根はいくらか。
敢えて言えば、未知数xが根で、x^2が平方で、
解は、方程式を成立させる根の値である。
平方根という現代の用語は、元来の意味で表せば、
平方がある値となる根の値のことである。
当然のことながら、根の値として、
元来は正の値しか認められなかった。
◎注 √記号は、コメント文、printコマンドの引数において、
maximaの処理系によって、表示が異なるので、"r(3)"でもって、"√(3)"とする。
◆コマンド番号503
●例19
文字の平方の、正の平方根●●●●●●●●●●●●●●●●
kill(all) /* "503 文字の平方の、正の平方根" */$
MONDAI:"503 文字の平方の平方根は"$
a:3 /* "正の数3の場合(◆修正部分)" */;
ra2:sqrt(a^2) /* "正の文字の平方の、正の平方根" */;
print("r(a^2) =a (=",a,")") /* "◆正の数◆" */$
a:-3 /* "負の数-3(◆修正部分)" */;
ra2:sqrt(a^2) /* "負の文字の平方の、正の平方根" */;
print("r(a^2) =-a (=",-a,")") /* "◆正の数◆" */$
◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドの実行結果を考察せよ。
B 根号を含む式の計算
◆コマンド番号504
●1
根号を含む式●●●●●●●●●●●●●●●●
kill(all) /* "504 根号を含む式" */$
MONDAI:"504 正の平方根の積は"$
assume(a>0,b>0) /* "正の数を仮定(◆修正部分)" */;
c:sqrt(a)*sqrt(b) /* "正の平方根の積(◆修正部分)" */;
d:a*b /* "正の数の積(◆修正部分)" */;
if c>0 then print("r(a)*r(b)>0")
/**/else print("r(a)*r(b)<=0") /* "正の平方根の積の正負" */$
if c^2=d then print("(r(a)*r(b))^2=",d)
/**/else print("(r(a)*r(b))^2#",d) /* "正の数の積の平方(◆修正時変更)" */$
if c>0 and c^2=d then print("r(a)*r(b)=r(",d,")")
/**/elseif c<0 and c^2=d then print("r(a)*r(b)=-r(",d,")")
/**/else print("r(a)*r(b)#+-r(",d,")") /* "◆正の数の平方根の積は、正の数の積の平方根◆(◆修正時変更)" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
assume(a>0,b>0) /* "正の数(根)を仮定(◆修正部分)" */;
c:sqrt(a)/sqrt(b) /* "正の平方根の商(◆修正部分)" */;
d:a/b /* "正の数(根)の商(◆修正部分)" */;
◆コマンド番号505
●例20
p =r(p^2)変形●●●●●●●●●●●●●●●●
kill(all) /* "505 p =r(p^2)変形" */$
MONDAI:"505 次の平方根をr(p)の形に"$
e:sqrt(3)*sqrt(5) /* "平方根の積をr(P)の形に(◆修正部分)" */;
v(x):=(
/**/if x >0 or x =0 then print("r(",x^2,")") else print("-r(",x^2,")")
/**/) /* "x =r(x^2)化関数" */$
KAISHI:"スタート"$
v(e) /* "◆r(P)化すると◆" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
e:-sqrt(2)*sqrt(5) /* "平方根の積をr(P)の形に(◆修正部分)" */;
◆コマンド番号506
●ar*r(rb) =r(ar^2*rb)変形●●●●●●●●●●●●●●●●
kill(all) /* "506 ar*r(rb) =r(ar^2*rb)変形" */$
MONDAI:"506 次の平方根をr(P)の形に"$
e:3*sqrt(5) /* "平方根をr(P)の形に(◆修正部分)" */;
v(x):=(
/**/if x >0 or x =0 then print("r(",x^2,")") else print("r(",x^2,")i")
/**/) /* "x ->r(x^2)と表示" */$
KAISHI:"スタート"$
v(e) /* "◆r(P)化すると◆" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
e:sqrt(3)/2 /* "平方根をr(P)の形に(◆修正部分)" */;
◆コマンド番号507
●q r(r)変形●●●●●●●●●●●●●●●●
kill(all) /* "507 r(q^2*r)=q*r(r)変形" */$
MONDAI:"507 次の平方根をQr(P)の形に"$
p:sqrt(8) /* "平方根をQr(P)の形に(◆修正部分)" */;
v(n,x):=(
/**/if x=1 then print(n) else print(n,"r(",x,")")
/**/) /* "n,x -> n r(x)と表示" */$
v2(n,x):=(
/**/if x=1 then print("r(",n,"^2)") else print("r(",n,"^2 *",x,")")
/**/) /* "n,x ->r(n^2*x)と表示" */$
jq(p,q):=
/**/block(
/**/cn:0,
/**/for i:0 while mod(p,q)=0 do(
/*....*/p:quotient(p,q),
/*....*/cn:cn+1),
/**/cn
/**/) /* "jq(p,q) =cn [: p=q^(cn)*rem]" */$
KAISHI:"スタート"$
p2:p^2;
ar:1 /* "p=ar^2*rb化のar初期値" */$
rb:1 /* "p2=ar^2*rb化のrb初期値" */$
for i:1 while p2>1 do(
/**/qL:listify(divisors(p2)),
/**/q:qL[2],
/**/ar:ar*q^quotient(jq(p2,q),2),
/**/rb:rb*q^mod(jq(p2,q),2),
/**/p2:p2/(q^jq(p2,q))
/**/) /* "p2=ar^2*rb化" */$
ra2b:v2(ar,rb) /* "◆r(Q^2*P)化すると◆" */$
arb:v(ar,rb) /* "◆Q r(P)化すると◆" */$
◎上のMaximaコマンドを修正して、次を考察せよ。
p:sqrt(50) /* "平方根をQr(P)の形に(◆修正部分)" */;
◆コマンド番号508
●1
r()の同類項簡約●●●●●●●●●●●●●●●●
kill(all) /* "508 r()の同類項簡約" */$
MONDAI:"508 次の平方根の式をQr(P)の形に"$
p:(3*sqrt(2)+sqrt(3)) +(sqrt(2)-4*sqrt(3)) /* "平方根の式をQr(P)の形に(◆修正部分)" */;
p:rat(p) /* "式の展開・整理" */;
pL:[-sqrt(3)^3,sqrt(2)^5] /* "上式の項分解リスト、上式を項別にリスト化(◆修正時変更)" */$
jq(p,q):=
/**/block(
/**/cn:0,
/**/for i:0 while mod(p,q)=0 do(
/*....*/p:quotient(p,q),
/*....*/cn:cn+1),
/**/cn) /* "p=q^cn*r化関数" */$
KAISHI:"スタート"$
length(pL) /* "簡約式の項分解リストの長さ" */;
block([i,k,p1,p2,a,b,qL,q],
for i:1 thru length(pL) do(
/**/p1:pL[i],
/**/p2:p1^2,
/**/a:1,
/**/b:1,
/**/for k:1 while p2>1 do(
/*....*/qL:listify(divisors(p2)),
/*....*/q:qL[2],
/*....*/a:a*q^quotient(jq(p2,q),2),
/*....*/b:b*q^mod(jq(p2,q),2),
/*....*/p2:p2/(q^jq(p2,q))),
/**/if i=1 and p1>=0 then (if b>1 then (if a>1 then print(a,"r(",b,")") else print("r(",b,")")) else print(a)),
/**/if i=1 and p1<0 then (if b>1 then (if a>1 then print(-a,"r(",b,")") else print("-r(",b,")")) else print(-a)),
/**/if i>1 and p1>=0 then (if b>1 then (if a>1 then print(" +",a,"r(",b,")") else print("+r(",b,")")) else print(" +",a)),
/**/if i>1 and p1<0 then (if b>1 then (if a>1 then print(" ",-a,"r(",b,")") else print("-r(",b,")")) else print(" ",-a))
/**/)) /* "◆次の各項を加えたもの。r(6)は、√(6)のこと◆" */$
rootscontract(expand(p));
◎上のMaximaコマンドを順次実行せよ。
◎上のMaximaコマンドを修正して、次の①、②を考察せよ。
①
p:(2*sqrt(5) +3*sqrt(6))-(sqrt(96) -sqrt(45)) /* "平方根の式をQr(P)の形に(◆修正部分)" */;
②
p:(2*sqrt(3) -sqrt(6))*(sqrt(3) +3*sqrt(6)) /* "平方根の式をQr(P)の形に(◆修正部分)" */;
C 分母の有理化
◆コマンド番号509
●
分母r(a)の有理化●●●●●●●●●●●●●●●●
kill(all) /* "509 分母r(a)の有理化" */$
MONDAI:"509 次の平方根の式で、分母を有理化すると"$
v:3/sqrt(2) /* "平方根の式を分母の有理化(◆修正部分)" */;
nv:num(v) /* "分子" */;
dv:denom(v) /* "分母" */;
nv:nv*dv /* "分子*dv" */;
dv:dv*dv /* "分母*dv" */;
rv:rat(nv/dv),algebraic:true /* "◆分数表示◆" */;
v:rat(v),algebraic:true /* "分母の有理化" */;
◎上のMaximaコマンドを順次実行せよ。
◎上のMaximaコマンドを修正して、次を考察せよ。
v:1/(2*sqrt(5)) /* "平方根の式を分母の有理化(◆修正部分)" */;
◆コマンド番号510
●例題7
分母r(a)+r(b)の有理化●●●●●●●●●●●●●●●●
kill(all) /* "510 分母r(a)+r(b)の有理化" */$
MONDAI:"510 次の平方根の式で、分母を有理化すると"$
v:1/(sqrt(5)+sqrt(2)) /* "平方根の式を分母の有理化(◆修正部分)" */;
dv2:sqrt(5)-sqrt(2) /* "分母分子に掛ける平方根の式(◆修正部分)" */;
nv:num(v) /* "分子" */;
dv:denom(v) /* "分母" */;
nv:rootscontract(rat(nv*dv2)) /* "分子*dv2" */;
dv:rootscontract(rat(dv*dv2)) /* "分母*dv2" */;
rv:rat(nv/dv) /* "◆分数表示◆" */;
v:rootscontract(rat(v)),algebraic:true /* "分母の有理化" */;
◎上のMaximaコマンドを順次実行せよ。
◎上のMaximaコマンドを修正して、次を考察せよ。
v:(sqrt(5)+sqrt(2))/(sqrt(5)-sqrt(2)) /* "平方根の式を分母の有理化(◆修正部分)" */;
dv2:sqrt(5)+sqrt(2) /* "分母分子に掛ける平方根の式(◆修正部分)" */;
:
発展・補充問題
二重根号
◆コマンド番号10201
●例1
二重根号●●●●●●●●●●●●●●●●
kill(all) /* "10201 二重根号" */$
MONDAI:"10201 次の平方根の式で、二重根号をはずすと"$
vL:[8,2*sqrt(15)] /* "二重根号をはずすと(◆修正部分)" */;
v1:vL[1] /* "根号内の数(◆修正時変更)" */$
v2:vL[2] /* "2重根号の数(◆修正時変更)" */$
v:sqrt(v1+v2) /* "2重根号の式" */;
aS:solve(a^2-v1*a+v2^2/4=0,a) /* "2重根号を解く数a1,a2" */;
a1:rhs(aS[1]) /* "2重根号を解く数a1" */;
a2:rhs(aS[2]) /* "2重根号を解く数a2" */;
if a1>a2 then( a3:a1, a1:a2, a2:a3 ) /* "a1<=a2へ置換" */;
vS:if v2>=0 then sqrt(a2)+sqrt(a1) else sqrt(a2)-sqrt(a1) /* "◆二重根号の解消◆" */;
vS:rootscontract(rat(vS)),algebraic:true /* "◆二重根号の解消◆" */;
load (sqdnst) /* "2重根号のライブラリ読み込み" */$
vS:rootscontract(rat(sqrtdenest(v))),algebraic:ture /* "2重根号を解くコマンド" */;
◎上のMaximaコマンドを順次実行せよ。
◎上のMaximaコマンドを修正して、次を考察せよ。
vL:[2,sqrt(3)] /* "二重根号をはずすと(◆修正部分)" */;
循環小数を分数で表す
◆コマンド番号10202
●
循環小数の分数表記●●●●●●●●●●●●●●●●
kill(all) /* "10202 循環小数の分数表記" */$
MONDAI:"10202 循環小数を分数で表すと"$
jL:[0. , 123] /* "[非循環部,循環節]循環小数の分数で表す(◆修正部分)" */;
JL:["0." , "123"] /* "[非循環部の文字列,循環節の文字列](◆修正時変更)" */$
skL:[-1,3] /* "[循環節の開始桁,循環節の桁数](◆修正時変更)" */$
hjun:jL[1];
Hjun:JL[1];
jun:jL[2];
Jun:JL[2];
js:skL[1];
jk:skL[2];
v:hjun+10^(js+1)*sum(jun*(10^(-jk))^k, k, 1, 5),numer /* "小数表記" */;
print(Hjun,"'",Jun,"'") /* "循環小数表記" */;
vp:10^jk*V-V=(hjun+10^(js+1)*jun*10^(-jk))*10^jk-hjun;
vS:solve(vp,V) /* "◆分数表記◆" */;
vS,numer /* "小数表記で確認すると" */;
注 maxima on line は、文字列操作が制限されているので、
最初の3行のように入力している。
jLは[非循環部,循環節]
JLは[非循環部の文字列,循環節の文字列]
skLは[循環節の開始桁,循環節の桁数]
◎上のMaximaコマンドを順次実行せよ。
◎上のMaximaコマンドを修正して、次を考察せよ。
jL:[0.3,18] /* "[非循環部,循環節]循環小数の分数で表す(◆修正部分)" */;
発展問題
◆コマンド番号10203
●
平方根内の文字に代入●●●●●●●●●●●●●●●●
kill(all) /* "10203 平方根内の文字に代入" */$
MONDAI:"10203 平方根内の文字に代入すると"$
X:3 /* "平方根内の文字に数値代入(◆修正部分)" */;
e:sqrt((x +1)^2) /* "平方根の式" */;
eX:subst(x=X,e) /* "◆xに代入◆" */;
◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドを修正して、次を考察せよ。
X:-3 /* "平方根内の文字に数値代入(◆修正部分)" */;
◆コマンド番号10204
●
文字式に平方根を代入●●●●●●●●●●●●●●●●
kill(all) /* "10204 文字式に平方根を代入" */$
MONDAI:"10204 文字式に平方根を代入すると"$
e1:x+y /* "この文字式と" */;
e2:x*y /* "この文字式に平方根を代入すると" */;
X:(sqrt(3)+sqrt(5))/2 /* "xに代入する平方根" */;
Y:(sqrt(3)-sqrt(5))/2 /* "yに代入する平方根" */;
E1:subst([x=X,y=Y],e1) /* "x,yに代入" */;
E1:rat(E1) /* "平方根の整理" */;
E2:subst([x=X,y=Y],e2) /* "x,yに代入" */;
E2:rootscontract(rat(E2)) /* "平方根の簡約" */;
e3:x^2 +y^2 /* "文字式に平方根を代入(◆修正部分)" */;
e3:(x +y)^2 -2*x*y /* "文字式に平方根を代入(◆修正部分)" */;
e3:e1^2-2*e2 /* "e1,e2による文字式の構成(◆修正部分)" */;
e3:rat(e3) /* "文字式の整理" */;
E3:E1^2-2*E2 /* "代入値の構成(◆修正時変更)" */$
E3:rootscontract(E3) /* "◆平方根の簡約◆" */;
◎上のMaximaコマンドを実行せよ。
◎上のMaximaコマンドに次を追加して、考察せよ。
e3:x^3*y+x*y^3 /* "文字式に平方根を代入(◆修正部分)" */;
e3:(x^2 +y^2)*x*y /* "文字式に平方根を代入(◆修正部分)" */;
e3:e1*e2 /* "e1,e2による文字式の構成(◆修正部分)" */;
◆コマンド番号10205
●
分母の有理化と概数計算●●●●●●●●●●●●●●●●
kill(all) /* "10205 分母の有理化と概数計算" */$
MONDAI:"10205 分母の有理化で概数計算は"$
v:sqrt(2)/(sqrt(2)-1) /* "分母の有理化で概数計算は" */;
V:r2/(r2-1) /* "sqrt(2)をr2に置き換え(◆修正時変更)" */;
subst(r2=1.4142,V) /* "有理化せずに概数計算" */;
v:rootscontract(rat(v)),algebraic:true /* "分母の有理化" */;
V:r2+2 /* "sqrt(2)をr2に置き換え(◆修正時変更)" */;
subst(r2=1.4142,V) /* "◆有理化して概数計算◆" */;
◎上のMaximaコマンドを実行して、結果を考察せよ。