:
Maxima数学I自習教材開発
教材の概要
1数と式 3) 1次不等式
6.不等式の性質
7.1次不等式
8.絶対値を含む方程式・不等式
103.補充問題
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 問題の雰囲気を2で感じてから、授業へ
1) 班活動などで自分の考察を仲間に伝える
2) 仲間の考察を受け止める
3) 筋が通って、見通しが効いた解法をまとめる
参照テキスト
数研出版新編数学I
第1章数と式
第3節 1次不等式
:
6.不等式の性質
A 1次方程式
▼コマンド番号601
●例22-1
1次方程式●●●●●●●●●●●●●●●●
kill(all) /* "601 1次方程式" */$
MONDAI:"601 次の1次方程式を解くと"$
e:3*x-5=10 /* "この1次方程式を解くには(◆修正部分)" */;
e1:e+5 /* "5を加え(▼修正時変更)" */;
e2:e1/3 /* "3で割ると(▼修正時変更)" */;
xaL:solve(e,x) /* "◆xの解◆" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
e:2/3*x -4 =1/2*x -3 /* "この1次方程式を解くには(◆修正部分)" */;
B 不等号と不等式
▼コマンド番号602
●例23・練習41
不等式●●●●●●●●●●●●●●●●
kill(all) /* "602 不等式" */$
ordergreat(a,b,x,y) /* "できるだけ、a,b,x,yの順に並べる" */;
MONDAI:"602 次の内容を不等式で表すと"$
NAIYOU: "ある数xの3倍から5を引いた数は10より小さい(◆修正部分)"$
e:x /* "ある数xをeとおいて(▼修正時変更)" */;
e1:e*3 /* "その3倍をe1とおいて(▼修正時変更)" */;
e2:e1-5 /* "それから5を引いたものをe2とおいて(▼修正時変更)" */;
ie:e2 <10 /* "その数が10より小さいことを不等式ieとすると(▼修正時変更)" */;
print(ie) /* "(▼修正時変更)" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
NAIYOU: "2数a,bの和は負で、かつ-2より大きい(◆修正部分)"$
C 不等式の性質
▼コマンド番号603
●
不等式の性質1●●●●●●●●●●●●●●●●
kill(all) /* "603 不等式の性質1" */$
ordergreat(a,b,x,y) /* "できるだけ、a,b,x,yの順に並べる" */;
MONDAI:"603 不等式に、同じ数を加減乗除すると、不等号の向きは";
assume(a<b) /* "a < bとして" */;
c:2 /* "2をcとして(◆修正部分)" */;
ieL:[a < b,a+c < b+c,a-c < b-c,a*c < b*c,a/c < b/c] /* "同じ数を加減乗除して、不等号が同じ向きの不等式" */;
ieL2:[a > b,a+c > b+c,a-c > b-c,a*c > b*c,a/c > b/c] /* "同じ数を加減乗除して、不等号が逆の向きの不等式" */;
for k:1 thru 5 do(
/**/if ev(ieL[k])
/*....*/then print(ieL[k],"不等号の向きは同じ")
/*....*/else print(ieL2[k],"不等号の向きは逆")
/**/);
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
c:-2 /* "-2をcとして(◆修正部分)" */;
▼コマンド番号604
●練習42
不等式の性質1●●●●●●●●●●●●●●●●
kill(all) /* "604 不等式の性質2" */$
ordergreat(a,b,x,y) /* "できるだけ、a,b,x,yの順に並べる" */;
MONDAI:"602 次の値のとき、下の式の不等号の向きは"$
abL:[a=-4,b=-2] /* "a=-4,b=-2のとき、a<bで、次の不等号の向きは(◆修正部分)" */;
ieL:[a < b,2*a < 2*b,a/2 < b/2,-2*a < -2*b,a/(-2) < b/(-2)] /* "各式で不等号の向きは" */;
ieL2:[a < b,2*a > 2*b,a/2 > b/2,-2*a > -2*b,a/(-2) > b/(-2)] /* "各式で不等号の向きは" */;
for k:1 thru 5 do(
/**/Ie:subst(abL,ieL[k]) /* "条件具体化" */,
/**/if ev(Ie)
/*....*/then print(abL,a<b,"...>",ieL[k],"不等号の向きは同じ")
/*....*/else print(abL,a<b,"...>",ieL2[k],"不等号の向きは逆")
/**/);
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
abL:[a=-4,b=-2] /* "a,bの値(◆修正部分)" */;
▼コマンド番号605
●
不等式の性質2●●●●●●●●●●●●●●●●
kill(all) /* "605 不等式の性質2" */$
MONDAI:"605 下の不等式について"$
ieK(ieL,K,b):=(
/**/ sL:["<","<=","=",">=",">"] /* "不等号リスト" */,
/**/ KL:["+","-","*","/"] /* "演算記号リスト" */,
/**/ S:ieL[2],
/**/ kn:0,
/**/ for k:1 thru 5 do(
/*....*/ if S=sL[k] then kn:k),
/**/ if (K="*" or K="/") and b<0 then S:sL[6-kn],
/**/ if K="+" then ie1L:[ieL[1]+b,S,ieL[3]+b]
/*....*/ elseif K="-" then ie1L:[ieL[1]-b,S,ieL[3]-b]
/*....*/ elseif K="*" then ie1L:[ieL[1]*b,S,ieL[3]*b]
/*....*/ elseif K="/" then ie1L:[ieL[1]/b,S,ieL[3]/b],
/**/ print(ieL[1],ieL[2],ieL[3]),
/**/ print(" ⇒ ",ie1L[1],ie1L[2],ie1L[3]),
/**/ ie1L
/**/) /* "不等式での演算処理" */$
MONDAI2:"変形を実行する"$
ieL:[-1,"<",a] /* "両辺に(◆修正部分)" */$
ieK(ieL,"+",1) /* "1を加えると、その結果は(◆修正部分)" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
ieL:[-4,"<",-2*a] /* "両辺に(◆修正部分)" */$
ieK(ieL,"/",-2) /* "1を加えると、その結果は(◆修正部分)" */$
:
7. 1次不等式
A 1次不等式とその解き方
▼コマンド番号701
●例25
1次不等式の解●●●●●●●●●●●●●●●●
kill(all) /* "701 1次不等式の解" */;
MONDAI:"701 次の不等式について"$
e:3*x -5<10 /* "次の値(◆修正部分)" */;
erL:[x=1] /* "x=1は解か(◆修正部分)" */;
if ev(subst(erL,e)) then print(erL[1],"は解である")
else print(erL[1],"は解でない")
/* "◆解かどうかの判定◆" */$
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
e:-2*x+8<10 /* "次の値(◆修正部分)" */;
erL:[x=-1] /* "x=1は解か(◆修正部分)" */;
▼コマンド番号702
●例26
不等式を解く●●●●●●●●●●●●●●●●
kill(all) /* "702 1次不等式を解く" */;
MONDAI:"702 下の不等式について"$
ieK(ieL,K,b):=(
/**/ sL:["<","<=","=",">=",">"] /* "不等号リスト" */,
/**/ KL:["+","-","*","/"] /* "演算記号リスト" */,
/**/ S:ieL[2],
/**/ kn:0,
/**/ for k:1 thru 5 do(
/*....*/ if S=sL[k] then kn:k
/*....*/ ),
/**/ if (K="*" or K="/") and b<0 then S:sL[6-kn],
/**/ if K="+" then ie1L:[ieL[1]+b,S,ieL[3]+b]
/*....*/ elseif K="-" then ie1L:[ieL[1]-b,S,ieL[3]-b]
/*....*/ elseif K="*" then ie1L:[ieL[1]*b,S,ieL[3]*b]
/*....*/ elseif K="/" then ie1L:[ieL[1]/b,S,ieL[3]/b],
/**/ print(ieL[1],ieL[2],ieL[3]),
/**/ print(" ⇒ ",ie1L[1],ie1L[2],ie1L[3]),
/**/ ie1L
/**/) /* "不等式での演算処理" */$
MONDAI2:"変形を実行して、解は"$
ie:3*x-5 <10 /* "この不等式を(◆修正部分)" */;
ieL:[3*x-5,"<",10] /* "変形できる枠に当てはめて(◆修正部分)" */;
ieL:ieK(ieL,"+",5) /* "両辺に5を加えて(▼修正時変更)" */;
ieL:ieK(ieL,"/",3) /* "両辺を3で割ると(▼修正時変更)" */;
load(fourier_elim) /* "ライブラリ読み込み" */$
A:fourier_elim( [ie], [x]) /* "コマンドで直接解くと" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
ie:-2*x +4 <-3 /* "この不等式を(◆修正部分)" */;
ieL:[-2*x +4,"<",-3] /* "変形できる枠に当てはめて(◆修正部分)" */;
▼コマンド番号703
●例27
不等式を解く●●●●●●●●●●●●●●●●
kill(all) /* "703 1次不等式を解く" */;
MONDAI:"703 下の不等式について"$
ieK(ieL,K,b):=(
/**/ sL:["<","<=","=",">=",">"] /* "不等号リスト" */,
/**/ KL:["+","-","*","/"] /* "演算記号リスト" */,
/**/ ieL:[rat(ieL[1]),ieL[2],rat(ieL[3])],
/**/ S:ieL[2],
/**/ kn:0,
/**/ for k:1 thru 5 do(
/*....*/ if S=sL[k] then kn:k
/*....*/ ),
/**/ if (K="*" or K="/") and b<0 then S:sL[6-kn],
/**/ if K="+" then ie1L:[ieL[1]+b,S,ieL[3]+b]
/*....*/ elseif K="-" then ie1L:[ieL[1]-b,S,ieL[3]-b]
/*....*/ elseif K="*" then ie1L:[ieL[1]*b,S,ieL[3]*b]
/*....*/ elseif K="/" then ie1L:[ieL[1]/b,S,ieL[3]/b],
/**/ print(ieL[1],ieL[2],ieL[3]),
/**/ print(" ⇒ ",ie1L[1],ie1L[2],ie1L[3]),
/**/ ie1L
/**/) /* "不等式での演算処理" */$
MONDAI2:"変形を実行して、解は"$
ie:2*x-7 <5*x -1 /* "この不等式を(◆修正部分)" */;
ieL:[2*x-7,"<",5*x-1] /* "変形できる枠に当てはめて(◆修正部分)" */;
ieL:ieK(ieL,"+",7-5*x) /* "両辺に7-5*xを加えて(▼修正時変更)" */;
ieL:ieK(ieL,"/",-3) /* "両辺を-3で割ると(▼修正時変更)" */;
load(fourier_elim) /* "ライブラリ読み込み" */$
A:fourier_elim( [ie], [x]) /* "コマンドで直接解くと" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
ie:3*(3-2*x) <=4 -3*x /* "この不等式を(◆修正部分)" */;
ieL:[3*(3-2*x),"<=",4-3*x] /* "変形できる枠に当てはめて(◆修正部分)" */;
▼コマンド番号704
●例題8
不等式を解く●●●●●●●●●●●●●●●●
kill(all) /* "704 1次不等式を解く" */;
MONDAI:"704 下の不等式について"$
ieK(ieL,K,b):=(
/**/ sL:["<","<=","=",">=",">"] /* "不等号リスト" */,
/**/ KL:["+","-","*","/"] /* "演算記号リスト" */,
/**/ ieL:[rat(ieL[1]),ieL[2],rat(ieL[3])],
/**/ S:ieL[2],
/**/ kn:0,
/**/ for k:1 thru 5 do(
/*....*/ if S=sL[k] then kn:k
/*....*/ ),
/**/ if (K="*" or K="/") and b<0 then S:sL[6-kn],
/**/ if K="+" then ie1L:[ieL[1]+b,S,ieL[3]+b]
/*....*/ elseif K="-" then ie1L:[ieL[1]-b,S,ieL[3]-b]
/*....*/ elseif K="*" then ie1L:[ieL[1]*b,S,ieL[3]*b]
/*....*/ elseif K="/" then ie1L:[ieL[1]/b,S,ieL[3]/b],
/**/ print(ieL[1],ieL[2],ieL[3]),
/**/ print(" ⇒ ",ie1L[1],ie1L[2],ie1L[3]),
/**/ ie1L
/**/) /* "不等式での演算処理" */$
MONDAI2:"変形を実行して、解は"$
ie:4/3*x+1 >= 1/2*x-1/3 /* "この不等式を(◆修正部分)" */;
ieL:[4/3*x+1,">=",1/2*x-1/3] /* "変形できる枠に当てはめて(◆修正部分)" */;
ieL:ieK(ieL,"*",6) /* "両辺に6を掛けて(▼修正時変更)" */;
ieL:ieK(ieL,"-",6+3*x) /* "両辺から6+3*xを引いて(▼修正時変更)" */;
ieL:ieK(ieL,"/",5) /* "両辺を5で割ると(▼修正時変更)" */;
load(fourier_elim) /* "ライブラリ読み込み" */$
A:fourier_elim( [ie], [x]) /* "コマンドで直接解くと" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
ie:1/3*x +1 < 3/4*x -1/2 /* "この不等式を(◆修正部分)" */;
ieL:[1/3*x +1,"<",3/4*x -1/2] /* "変形できる枠に当てはめて(◆修正部分)" */;
B 連立不等式
▼コマンド番号705
●例28
連立不等式●●●●●●●●●●●●●●●●
kill(all) /* "705 連立不等式を解く" */;
MONDAI:"705 下の連立不等式について"$
ieJ(wL):=( /* " 解の初期整理開始" */
/**/if wL[2]=">" then wL:[wL[3],"<",wL[1]],
/**/if wL[2]=">=" then wL:[wL[3],"<=",wL[1]],
/**/wL
/**/) /* " 解の初期整理" */$
ieC(w1L,w2L):=( /* " 解の最終整理開始" */
/**/ w1L:ieJ(w1L),
/**/ w2L:ieJ(w2L),
/**/ if w1L[1]=x then(
/*....*/ w3L:w1L, w1L:w2L, w2L:w3L
/*....*/ ),
/**/ print(w1L,w2L),
/**/ (if w1L[3]=w2L[1] and w1L[3]=x then(
/*........*/ if w1L[1] < w2L[3] then wL:[w1L,w2L]
/*............*/ elseif w1L[1]=w2L[3] and w1L[2]="<=" and w2L[2]=w1L[2] then wL:[[x,"=",w1L[1]]]
/*............*/ else wL:[["解なし","",""]]
/*....*/ )elseif w1L[1]=w2L[1] and w1L[1]=x then(
/*........*/ if w1L[2]="<=" and w2L[2]="<=" then wL:[[w1L[1],"<=",min(w1L[3],w2L[3])]]
/*............*/ else wL:[[w1L[1],"<",min(w1L[3],w2L[3])]]
/*....*/ )elseif w1L[3]=w2L[3] and w1L[3]=x then(
/*........*/ if w1L[2]="<=" and w2L[2]="<=" then wL:[[max(w1L[1],w2L[1]),"<=",w1L[3]]]
/*............*/ else wL:[[max(w1L[1],w2L[1]),w1L[2],w1L[3]]]
/*........*/ )),
/**/ if length(wL)=1 then print(wL[1][1],wL[1][2],wL[1][3])
/*....*/ elseif length(wL)=2 then print (wL[1][1],wL[1][2],wL[1][3],wL[2][2],wL[2][3]),
/**/ wL
/**/) /* " 解の最終整理" */$
ieK(ieL,K,b):=( /* " 不等式の演算処理開始 " */
/**/ sL:["<","<=","=",">=",">"] /* "不等号リスト" */,
/**/ KL:["+","-","*","/"] /* "演算記号リスト" */,
/**/ ieL:[rat(ieL[1]),ieL[2],rat(ieL[3])],
/**/ S:ieL[2],
/**/ kn:0,
/**/ for k:1 thru 5 do(
/*....*/ if S=sL[k] then kn:k
/*....*/ ),
/**/ if (K="*" or K="/") and b<0 then S:sL[6-kn],
/**/ if K="+" then ie1L:[ieL[1]+b,S,ieL[3]+b]
/*....*/ elseif K="-" then ie1L:[ieL[1]-b,S,ieL[3]-b]
/*....*/ elseif K="*" then ie1L:[ieL[1]*b,S,ieL[3]*b]
/*....*/ elseif K="/" then ie1L:[ieL[1]/b,S,ieL[3]/b],
/**/ print(ieL[1],ieL[2],ieL[3]),
/**/ print(" ⇒ ",ie1L[1],ie1L[2],ie1L[3]),
/**/ ie1L
/**/ ) /* "不等式の演算処理" */$
MONDAI2:"変形を実行して、解は"$
ie:x >= -2 /* "この不等式と(◆修正部分)" */;
ie1:x < 5 /* "この不等式を(◆修正部分)" */;
ieL:[x,">=",-2] /* "変形できる枠に(◆修正部分)" */;
ieL1:[x,"<",5] /* "当てはめて(◆修正部分)" */;
F:0 /* " [x,不等号,n]の形が完成するまでは0、完成すれば2に書き換え(▼チェック後に修正)" */;
if F=2 then ieC(ieL,ieL1) /* "解の最終整理●連立不等式の解●" */;
load(fourier_elim) /* "ライブラリ読み込み" */$
A:fourier_elim( [ie,ie1], [x]) /* "コマンドで直接解くと" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
ie:x >= 3 /* "この不等式と(◆修正部分)" */;
ie1:x > 0 /* "この不等式を(◆修正部分)" */;
ieL:[x,">=",3] /* "変形できる枠に(◆修正部分)" */;
ieL1:[x,">",0] /* "当てはめて(◆修正部分)" */;
▼コマンド番号706
●例第9
連立不等式●●●●●●●●●●●●●●●●
kill(all) /* "706 連立不等式を解く" */;
MONDAI:"706 下の連立不等式について"$
ieJ(wL):=( /* " 解の初期整理開始" */
if wL[2]=">" then wL:[wL[3],"<",wL[1]],
if wL[2]=">=" then wL:[wL[3],"<=",wL[1]],
wL
) /* " 解の初期整理" */$
ieC(w1L,w2L):=( /* " 解の最終整理開始" */
/**/ w1L:ieJ(w1L),
/**/ w2L:ieJ(w2L),
/**/ if w1L[1]=x then(
/*....*/ w3L:w1L, w1L:w2L, w2L:w3L
/*....*/ ),
/**/ print(w1L,w2L),
/**/ (if w1L[3]=w2L[1] and w1L[3]=x then(
/*........*/ if w1L[1] < w2L[3] then wL:[w1L,w2L]
/*............*/ elseif w1L[1]=w2L[3] and w1L[2]="<=" and w2L[2]=w1L[2] then wL:[[x,"=",w1L[1]]]
/*............*/ else wL:[["解なし","",""]]
/*....*/ )elseif w1L[1]=w2L[1] and w1L[1]=x then(
/*........*/ if w1L[2]="<=" and w2L[2]="<=" then wL:[[w1L[1],"<=",min(w1L[3],w2L[3])]]
/*............*/ else wL:[[w1L[1],"<",min(w1L[3],w2L[3])]]
/*....*/ )elseif w1L[3]=w2L[3] and w1L[3]=x then(
/*........*/ if w1L[2]="<=" and w2L[2]="<=" then wL:[[max(w1L[1],w2L[1]),"<=",w1L[3]]]
/*............*/ else wL:[[max(w1L[1],w2L[1]),w1L[2],w1L[3]]]
/*........*/ )),
/**/ if length(wL)=1 then print(wL[1][1],wL[1][2],wL[1][3])
/*....*/ elseif length(wL)=2 then print (wL[1][1],wL[1][2],wL[1][3],wL[2][2],wL[2][3]),
/**/ wL
/**/) /* " 解の最終整理" */$
ieK(ieL,K,b):=( /* " 不等式の演算処理開始 " */
/**/sL:["<","<=","=",">=",">"] /* "不等号リスト" */,
/**/KL:["+","-","*","/"] /* "演算記号リスト" */,
/**/ieL:[rat(ieL[1]),ieL[2],rat(ieL[3])],
/**/S:ieL[2],
/**/kn:0,
/**/for k:1 thru 5 do(
/*....*/if S=sL[k] then kn:k
/*....*/),
/**/if (K="*" or K="/") and b<0 then S:sL[6-kn],
/**/if K="+" then ie1L:[ieL[1]+b,S,ieL[3]+b]
/*....*/elseif K="-" then ie1L:[ieL[1]-b,S,ieL[3]-b]
/*....*/elseif K="*" then ie1L:[ieL[1]*b,S,ieL[3]*b]
/*....*/elseif K="/" then ie1L:[ieL[1]/b,S,ieL[3]/b],
/**/print(ieL[1],ieL[2],ieL[3]),
/**/print(" ⇒ ",ie1L[1],ie1L[2],ie1L[3]),
/**/ie1L
/**/) /* "不等式の演算処理" */$
MONDAI2:"変形を実行して、解は"$
ie:5*x+3>3*x+1 /* "この不等式と(◆修正部分)" */;
ie1:-x+4>=2*(x-1) /* "この不等式を(◆修正部分)" */;
ieL:[5*x+3,">",3*x+1] /* "変形できる枠に(◆修正部分)" */;
ieL1:[-x+4,">=",2*(x-1)] /* "当てはめて(◆修正部分)" */;
ieL:ieK(ieL,"-",3+3*x) /* "不等式での演算処理(▼修正時変更)" */;
ieL:ieK(ieL,"/",2) /* "不等式での演算処理(▼修正時変更)" */;
ieL1:ieK(ieL1,"-",4+2*x) /* "不等式での演算処理(▼修正時変更)" */;
ieL1:ieK(ieL1,"/",-3) /* "不等式での演算処理(▼修正時変更)" */;
ieL /* "連立不等式の解1" */;
ieL1 /* "連立不等式の解2" */;
F:0 /* " [x,不等号,n]の形が完成するまでは0、完成すれば2に書き換え(▼チェック後に修正)" */;
if F=2 then ieC(ieL,ieL1) /* "◆解の最終整理◆" */;
load(fourier_elim) /* "ライブラリ読み込み" */$
A:fourier_elim( [ie,ie1], [x]) /* "コマンドで直接解くと" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
ie:3*x+1>=7*x-5 /* "この不等式と(◆修正部分)" */;
ie1:-x+6>3*(1-2*x) /* "この不等式を(◆修正部分)" */;
ieL:[3*x+1,">=",7*x-5] /* "変形できる枠に(◆修正部分)" */;
ieL1:[-x+6,">",3*(1-2*x)] /* "当てはめて(◆修正部分)" */;
▼コマンド番号707
●例第10
連立不等式●●●●●●●●●●●●●●●●
kill(all) /* "707 連立不等式を解く" */;
MONDAI:"707 下の連立不等式について"$
ieJ(wL):=( /* " 解の初期整理開始" */
/**/if wL[2]=">" then wL:[wL[3],"<",wL[1]],
/**/if wL[2]=">=" then wL:[wL[3],"<=",wL[1]],
/**/wL
/**/) /* " 解の初期整理" */$
ieC(w1L,w2L):=( /* " 解の最終整理開始" */
/**/ w1L:ieJ(w1L),
/**/ w2L:ieJ(w2L),
/**/ if w1L[1]=x then(
/*....*/ w3L:w1L, w1L:w2L, w2L:w3L
/*....*/ ),
/**/ print(w1L,w2L),
/**/ (if w1L[3]=w2L[1] and w1L[3]=x then(
/*........*/ if w1L[1] < w2L[3] then wL:[w1L,w2L]
/*............*/ elseif w1L[1]=w2L[3] and w1L[2]="<=" and w2L[2]=w1L[2] then wL:[[x,"=",w1L[1]]]
/*............*/ else wL:[["解なし","",""]]
/*....*/ )elseif w1L[1]=w2L[1] and w1L[1]=x then(
/*........*/ if w1L[2]="<=" and w2L[2]="<=" then wL:[[w1L[1],"<=",min(w1L[3],w2L[3])]]
/*............*/ else wL:[[w1L[1],"<",min(w1L[3],w2L[3])]]
/*....*/ )elseif w1L[3]=w2L[3] and w1L[3]=x then(
/*........*/ if w1L[2]="<=" and w2L[2]="<=" then wL:[[max(w1L[1],w2L[1]),"<=",w1L[3]]]
/*............*/ else wL:[[max(w1L[1],w2L[1]),w1L[2],w1L[3]]]
/*........*/ )),
/**/ if length(wL)=1 then print(wL[1][1],wL[1][2],wL[1][3])
/*....*/ elseif length(wL)=2 then print (wL[1][1],wL[1][2],wL[1][3],wL[2][2],wL[2][3]),
/**/ wL
/**/) /* " 解の最終整理" */$
ieK(ieL,K,b):=( /* " 不等式の演算処理開始 " */
/**/sL:["<","<=","=",">=",">"] /* "不等号リスト" */,
/**/KL:["+","-","*","/"] /* "演算記号リスト" */,
/**/ieL:[rat(ieL[1]),ieL[2],rat(ieL[3])],
/**/S:ieL[2],
/**/kn:0,
/**/for k:1 thru 5 do(
/*....*/if S=sL[k] then kn:k
/*....*/),
/**/if (K="*" or K="/") and b<0 then S:sL[6-kn],
/**/if K="+" then ie1L:[ieL[1]+b,S,ieL[3]+b]
/*....*/elseif K="-" then ie1L:[ieL[1]-b,S,ieL[3]-b]
/*....*/elseif K="*" then ie1L:[ieL[1]*b,S,ieL[3]*b]
/*....*/elseif K="/" then ie1L:[ieL[1]/b,S,ieL[3]/b],
/**/print(ieL[1],ieL[2],ieL[3]),
/**/print(" ⇒ ",ie1L[1],ie1L[2],ie1L[3]),
/**/ie1L
/**/) /* "不等式の演算処理" */$
MONDAI2:"変形を実行して、解は"$
ie:0<x /* "この不等式と(◆修正部分)" */;
ie1:x<10-x /* "この不等式を(◆修正部分)" */;
ieL:[0,"<",x] /* "変形できる枠に(◆修正部分)" */;
ieL1:[x,"<",10-x] /* "当てはめて(◆修正部分)" */;
ieL1:ieK(ieL1,"-",-x) /* "不等式での演算処理(▼修正時変更)" */;
ieL1:ieK(ieL1,"/",2) /* "不等式での演算処理(▼修正時変更)" */;
ieL /* "連立不等式の解1" */;
ieL1 /* "連立不等式の解2" */;
F:0 /* " [x,不等号,n]の形が完成するまでは0、完成すれば2に書き換え(▼チェック後に修正)" */;
if F=2 then ieC(ieL,ieL1) /* "◆解の最終整理◆" */;
load(fourier_elim) /* "ライブラリ読み込み" */$
A:fourier_elim( [ie,ie1], [x]) /* "◆連立不等式の解◆" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
ie:-1<=2*x-3 /* "この不等式と(◆修正部分)" */;
ie1:2*x-3<=8 /* "この不等式を(◆修正部分)" */;
ieL:[-1,"<=",2*x-3] /* "変形できる枠に(◆修正部分)" */;
ieL1:[2*x-3,"<=",8] /* "当てはめて(◆修正部分)" */;
C 1次不等式の応用
▼コマンド番号708
●応用例題5
最小の自然数●●●●●●●●●●●●●●●●
kill(all) /* "708 最小の自然数" */;
MONDAI:"708 下の連立不等式について"$
ieJ(wL):=( /* " 解の初期整理開始" */
/**/if wL[2]=">" then wL:[wL[3],"<",wL[1]],
/**/if wL[2]=">=" then wL:[wL[3],"<=",wL[1]],
/**/wL
/**/) /* " 解の初期整理" */$
ieC(w1L,w2L):=( /* " 解の最終整理開始" */
/**/ w1L:ieJ(w1L),
/**/ w2L:ieJ(w2L),
/**/ if w1L[1]=n then(
/*....*/ w3L:w1L, w1L:w2L, w2L:w3L
/*....*/ ),
/**/ print(w1L,w2L),
/**/ (if w1L[3]=w2L[1] and w1L[3]=n then(
/*........*/ if w1L[1] < w2L[3] then wL:[w1L,w2L]
/*............*/ elseif w1L[1]=w2L[3] and w1L[2]="<=" and w2L[2]=w1L[2] then wL:[[n,"=",w1L[1]]]
/*............*/ else wL:[["解なし","",""]]
/*....*/ )elseif w1L[1]=w2L[1] and w1L[1]=n then(
/*........*/ if w1L[2]="<=" and w2L[2]="<=" then wL:[[w1L[1],"<=",min(w1L[3],w2L[3])]]
/*............*/ else wL:[[w1L[1],"<",min(w1L[3],w2L[3])]]
/*....*/ )elseif w1L[3]=w2L[3] and w1L[3]=n then(
/*........*/ if w1L[2]="<=" and w2L[2]="<=" then wL:[[max(w1L[1],w2L[1]),"<=",w1L[3]]]
/*........*/ else wL:[[max(w1L[1],w2L[1]),w1L[2],w1L[3]]]
/*........*/ )),
/**/ if length(wL)=1 then print(wL[1][1],wL[1][2],wL[1][3])
/**/ elseif length(wL)=2 then print (wL[1][1],wL[1][2],wL[1][3],wL[2][2],wL[2][3])
/**/ ,
/**/ wL
/**/) /* " 解の最終整理" */$
ieK(ieL,K,b):=( /* " 不等式の演算処理開始 " */
/**/sL:["<","<=","=",">=",">"] /* "不等号リスト" */,
/**/KL:["+","-","*","/"] /* "演算記号リスト" */,
/**/ieL:[rat(ieL[1]),ieL[2],rat(ieL[3])],
/**/S:ieL[2],
/**/kn:0,
/**/for k:1 thru 5 do(
/*....*/if S=sL[k] then kn:k
/*....*/),
/**/if (K="*" or K="/") and b<0 then S:sL[6-kn],
/**/if K="+" then ie1L:[ieL[1]+b,S,ieL[3]+b]
/*....*/elseif K="-" then ie1L:[ieL[1]-b,S,ieL[3]-b]
/*....*/elseif K="*" then ie1L:[ieL[1]*b,S,ieL[3]*b]
/*....*/elseif K="/" then ie1L:[ieL[1]/b,S,ieL[3]/b],
/**/print(ieL[1],ieL[2],ieL[3]),
/**/print(" ⇒ ",ie1L[1],ie1L[2],ie1L[3]),
/**/ie1L
/**/) /* "不等式の演算処理" */$
MONDAI2:"この連立不等式の"$
ie:200+12*(n-10)<=15*n /* "解となる(◆修正部分)" */;
ie1:1<=n /* "最小の自然数は(◆修正部分)" */;
ieL:[200+12*(n-10),"<=",15*n] /* "解となる(◆修正部分)" */;
ieL1:[1,"<=",n] /* "最小の自然数は(◆修正部分)" */;
ieL:ieK(ieL,"-",80+15*n) /* "不等式での演算処理(▼修正時変更)" */;
ieL:ieK(ieL,"/",-3) /* "不等式での演算処理(▼修正時変更)" */;
ieL /* "最初の不等式の解" */;
ieL1 /* "次の不等式の解" */;
F:0 /* " [x,不等号,N],[N,不等号,x]の形が完成するまでは0、完成すれば2に書き換え(▼チェック後に修正)" */;
if F=2 then ieC(ieL,ieL1) /* "解の最終整理" */;
if F=2 then N:float(wL[1][1]) /* "解の小数化" */;
if F=2 then N:fix(N)+1 /* "◆最小の自然数の解◆" */;
load(fourier_elim) /* "ライブラリ読み込み" */$
A:fourier_elim( [ie,ie1], [n]) /* "◆連立不等式の解◆" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
ie:600+25*(n-20)<=32*n /* "解となる(◆修正部分)" */;
ie1:1<=n /* "最小の自然数は(◆修正部分)" */;
ieL:[600+25*(n-20),"<=",32*n] /* "解となる(◆修正部分)" */;
ieL1:[1,"<=",n] /* "最小の自然数は(◆修正部分)" */;
▼コマンド番号709
●応用例題6
最大個数●●●●●●●●●●●●●●●●
kill(all) /* "709 最大個数" */;
MONDAI:"709 下の連立不等式について"$
ieJ(wL):=( /* " 解の初期整理開始" */
/**/if wL[2]=">" then wL:[wL[3],"<",wL[1]],
/**/if wL[2]=">=" then wL:[wL[3],"<=",wL[1]],
/**/wL
/**/) /* " 解の初期整理" */$
ieC(w1L,w2L):=( /* " 解の最終整理開始" */
/**/ w1L:ieJ(w1L),
/**/ w2L:ieJ(w2L),
/**/ if w1L[1]=M then(
/*....*/ w3L:w1L, w1L:w2L, w2L:w3L
/*....*/ ),
/**/ print(w1L,w2L),
/**/ (if w1L[3]=w2L[1] and w1L[3]=M then(
/*........*/ if w1L[1] < w2L[3] then wL:[w1L,w2L]
/*............*/ elseif w1L[1]=w2L[3] and w1L[2]="<=" and w2L[2]=w1L[2] then wL:[[M,"=",w1L[1]]]
/*............*/ else wL:[["解なし","",""]]
/*....*/ )elseif w1L[1]=w2L[1] and w1L[1]=M then(
/*........*/ if w1L[2]="<=" and w2L[2]="<=" then wL:[[w1L[1],"<=",min(w1L[3],w2L[3])]]
/*............*/ else wL:[[w1L[1],"<",min(w1L[3],w2L[3])]]
/*....*/ )elseif w1L[3]=w2L[3] and w1L[3]=M then(
/*........*/ if w1L[2]="<=" and w2L[2]="<=" then wL:[[max(w1L[1],w2L[1]),"<=",w1L[3]]]
/*............*/ else wL:[[max(w1L[1],w2L[1]),w1L[2],w1L[3]]]
/*........*/ )),
/**/ if length(wL)=1 then print(wL[1][1],wL[1][2],wL[1][3])
/*....*/ elseif length(wL)=2 then print (wL[1][1],wL[1][2],wL[1][3],wL[2][2],wL[2][3]),
/**/ wL
/**/) /* " 解の最終整理" */$
ieK(ieL,K,b):=( /* " 不等式の演算処理開始 " */
/**/sL:["<","<=","=",">=",">"] /* "不等号リスト" */,
/**/KL:["+","-","*","/"] /* "演算記号リスト" */,
/**/ieL:[rat(ieL[1]),ieL[2],rat(ieL[3])],
/**/S:ieL[2],
/**/kn:0,
/**/for k:1 thru 5 do(
/*....*/if S=sL[k] then kn:k
/*....*/),
/**/if (K="*" or K="/") and b<0 then S:sL[6-kn],
/**/if K="+" then ie1L:[ieL[1]+b,S,ieL[3]+b]
/*....*/elseif K="-" then ie1L:[ieL[1]-b,S,ieL[3]-b]
/*....*/elseif K="*" then ie1L:[ieL[1]*b,S,ieL[3]*b]
/*....*/elseif K="/" then ie1L:[ieL[1]/b,S,ieL[3]/b],
/**/print(ieL[1],ieL[2],ieL[3]),
/**/print(" ⇒ ",ie1L[1],ie1L[2],ie1L[3]),
/**/ie1L
/**/) /* "不等式の演算処理" */$
M:n /* "文字Mの指定" */;
MONDAI2:"この連立不等式の"$
ie:60*(50-n)+100*n+100<=4000 /* "解となる(◆修正部分)" */;
ie1:1<=n /* "最大の自然数は(◆修正部分)" */;
ieL:[60*(50-n)+100*n+100,"<=",4000] /* "最初の不等式(◆修正部分)" */;
ieL1:[1,"<=",n] /* "次の不等式(◆修正部分)" */;
ieL:ieK(ieL,"-",3100) /* "不等式での演算処理(▼修正時変更)" */;
ieL:ieK(ieL,"/",40) /* "不等式での演算処理(▼修正時変更)" */;
ieL /* "最初の不等式の解" */;
ieL1 /* "次の不等式の解" */;
F:0 /* " [x,不等号,n]の形が完成するまでは0、完成すれば2に書き換え(▼チェック後に修正)" */;
if F=2 then ieC(ieL,ieL1) /* "解の最終整理" */;
if F=2 then N:float(wL[2][3]) /* "解の小数化" */;
if F=2 then N:fix(N) /* "◆解の切り捨て◆" */;
load(fourier_elim) /* "ライブラリ読み込み" */$
A:fourier_elim( [ie,ie1], [M]) /* "◆連立不等式の解◆" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
ie:120*n+80*(30-n)+100<=3000 /* "解となる(◆修正部分)" */;
ie1:1<=n /* "最大の自然数は(◆修正部分)" */;
ieL:[120*n+80*(30-n)+100,"<=",3000] /* "不等式●最大個数●(◆修正部分)" */;
ieL1:[1,"<=",n] /* "不等式(◆修正部分)" */;
:
8. 絶対値を含む方程式・不等式
A 絶対値を含む方程式・不等式
▼コマンド番号801
●例29
絶対値を含む方程式・不等式(1)●●●●●●●●●●●●●●●●
kill(all) /* "801 絶対値を含む方程式・不等式" */;
MONDAI:"801 下の絶対値を含む不等式について"$
ieJ(wL):=( /* " 解の初期整理開始" */
/**/if wL[2]=">" then wL:[wL[3],"<",wL[1]],
/**/if wL[2]=">=" then wL:[wL[3],"<=",wL[1]],
/**/wL
/**/) /* " 解の初期整理" */$
ieC(w1L,w2L):=( /* " 解の最終整理開始" */
/**/w1L:ieJ(w1L),
/**/w2L:ieJ(w2L),
/**/if w1L[1]=M and w2L[1]#M then(
/*........*/ w3L:w1L, w1L:w2L, w2L:w3L)
/*....*/elseif w1L[1]=M and w1L[3]>w2L[3] then(
/*........*/ w3L:w1L, w1L:w2L, w2L:w3L)
/*....*/elseif w1L[1]=M and w1L[3]=w2L[3] and w2L[2]="<="then(
/*........*/ w3L:w1L, w1L:w2L, w2L:w3L),
/**/print(w1L,w2L),
/**/(if w1L[3]=w2L[1] and w1L[3]=M then(
/*........*/ if w1L[1] < w2L[3] then wL:[w1L,w2L]
/*............*/ elseif w1L[1]=w2L[3] and w1L[2]="<=" and w2L[2]=w1L[2] then wL:[[M,"=",w1L[1]]]
/*............*/ else wL:[["解なし","",""]])
/*....*/elseif w1L[1]=w2L[1] and w1L[1]=M then(
/*........*/ if w1L[2]="<=" and w2L[2]="<=" then wL:[[w1L[1],"<=",min(w1L[3],w2L[3])]]
/*............*/ else wL:[[w1L[1],"<",min(w1L[3],w2L[3])]])
/*....*/elseif w1L[3]=w2L[3] and w1L[3]=M then(
/*........*/ if w1L[2]="<=" and w2L[2]="<=" then wL:[[max(w1L[1],w2L[1]),"<=",w1L[3]]]
/*............*/ else wL:[[max(w1L[1],w2L[1]),w2L[2],w1L[3]]])
/*........*/ ),
/**/if length(wL)=1 then print(wL[1][1],wL[1][2],wL[1][3])
/*....*/ elseif length(wL)=2 then print (wL[1][1],wL[1][2],wL[1][3],wL[2][2],wL[2][3]) ,
/**/wL
/**/) /* " 解の最終整理" */$
absL(e,M):=(
/**/epL:fourier_elim( [e>=0], [M]) /* "絶対値記号内が非負区間" */,
/**/iep:subst(abse=e,ie),
/**/iepL:fourier_elim( [iep], [M]) /* "絶対値記号内が非負区間での不等式の解" */,
/**/emL:fourier_elim( [e<0], [M]) /* "絶対値記号内が負区間" */,
/**/iem:subst(abse=-e,ie),
/**/iemL:fourier_elim( [iem], [M]) /* "絶対値記号内が負区間での不等式の解" */,
/**/print(epL,"の場合では ",iepL," または、",emL,"の場合では ",iemL)
/**/)$
load(fourier_elim)$
M:x /* "文字Mの指定" */;
MONDAI2:"問題の"$
ie0:abs(x)>3 /* "この不等式を解け。(◆修正部分)" */;
e:x /* "絶対値記号内の式eと(◆修正部分)" */;
ie:abse>3 /* "絶対値記号を含む不等式ieに分けて処理すること(◆修正部分)" */;
absL(e,M) /* "この後の出力に合わせ、以下4つのリストをそれぞれ書き換え" */$
epL:[x,">=",0] /* "絶対値記号内がe>=0となる場合(▼修正時変更)" */;
iepL:[x,">",3] /* "直上の場合の、不等式ieの解(▼修正時変更)" */;
emL:[x,"<",0] /* "絶対値記号内がe<0となる場合(▼修正時変更)" */;
iemL:[x,"<",-3] /* "直上の場合の、不等式ieの解(▼修正時変更)" */;
F:0 /* " 直前の処理が完成するまでは0、完成すれば2に書き換え(▼▼チェック後に修正)" */;
if F=2 then(ieC(epL,iepL) /* "各解の最終整理" */,
/**/wpL:wL)$
if F=2 then(ieC(emL,iemL) /* "各解の最終整理" */,
wmL:wL,
(if length(wpL)=length(wmL) and length(wpL)=2 and wpL[1][1]=wmL[2][3] and wpL[1][2]="<="
/**/then wL:[wmL[1],["かつ","",""],wpL[2]]
/**/elseif wpL=[["解なし","",""]] then wL:wmL
/**/elseif wmL=[["解なし","",""]] then wL:wpL
/**/elseif wpL=epL and wmL=emL then wL:[["実数全体","",""]]
/**/elseif wmL[1]=M then wL:[wmL,["または","",""],wpL]
/**/elseif subst(M=1,wpL[1][1]*wpL[1][3])>subst(M=1,wmL[1][1]*wmL[1][3]) then wL:[wmL,["または","",""],wpL]
/**/else wL:[wpL,["または","",""],wmL]))$
print(wL) /* "◆◆解の最終整理◆◆" */$
fourier_elim([ie0],[M]) /* "◆◆解の最終整理◆◆(▼修正時変更)" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
ie0:abs(x) <=4 /* "この不等式を解け。(◆修正部分)" */;
e:x /* "絶対値記号内の式eと(◆修正部分)" */;
ie:abse <=4 /* "絶対値記号を含む不等式ieに分けて処理すること(◆修正部分)" */;
▼コマンド番号802
●例題11
絶対値を含む方程式・不等式(2)●●●●●●●●●●●●●●●●
kill(all) /* "802 絶対値を含む方程式・不等式" */;
MONDAI:"802 下の絶対値を含む不等式について"$
ieJ(wL):=( /* " 解の初期整理開始" */
/**/if wL[2]=">" then wL:[wL[3],"<",wL[1]],
/**/if wL[2]=">=" then wL:[wL[3],"<=",wL[1]],
/**/wL
/**/) /* " 解の初期整理" */$
ieC(w1L,w2L):=( /* " 解の最終整理開始" */
/**/w1L:ieJ(w1L),
/**/w2L:ieJ(w2L),
/**/if w1L[1]=M and w2L[1]#M then(
/*........*/ w3L:w1L, w1L:w2L, w2L:w3L)
/*....*/elseif w1L[1]=M and w1L[3]>w2L[3] then(
/*........*/ w3L:w1L, w1L:w2L, w2L:w3L)
/*....*/elseif w1L[1]=M and w1L[3]=w2L[3] and w2L[2]="<"then(
/*........*/ w3L:w1L, w1L:w2L, w2L:w3L)
/*....*/elseif w2L[3]=M and w1L[1]=w2L[1] and w2L[2]="<="then(
/*........*/ w3L:w1L, w1L:w2L, w2L:w3L),
/**/print(w1L,w2L),
/**/(if w1L[3]=w2L[1] and w1L[3]=M then(
/*........*/ if w1L[1] < w2L[3] then wL:[w1L,w2L]
/*........*/ elseif w1L[1]=w2L[3] and w1L[2]="<=" and w2L[2]=w1L[2] then wL:[[M,"=",w1L[1]]]
/*........*/ else wL:[["解なし","",""]])
/*....*/elseif w1L[1]=w2L[1] and w1L[1]=M then wL:w1L
/*....*/elseif w1L[3]=w2L[3] and w1L[3]=M then wL:w2L),
/**/if length(wL)=1 then print(wL[1][1],wL[1][2],wL[1][3])
/*....*/ elseif length(wL)=2 then print (wL[1][1],wL[1][2],wL[1][3],wL[2][2],wL[2][3]) ,
/**/wL
/**/) /* " 解の最終整理" */$
absL(e,M):=(
/**/epL:fourier_elim( [e>=0], [M]) /* "絶対値記号内が非負区間" */,
/**/iep:subst(abse=e,ie),
/**/iepL:fourier_elim( [iep], [M]) /* "絶対値記号内が非負区間として(不)等式成立" */,
/**/emL:fourier_elim( [e <0], [M]) /* "絶対値記号内が負区間" */,
/**/iem:subst(abse=-e,ie),
/**/iemL:fourier_elim( [iem], [M]) /* "絶対値記号内が負区間として(不)等式成立" */,
/**/print(epL,"の場合では ",iepL," または、",emL,"の場合では ",iemL)
/**/)$
load(fourier_elim)$
M:x /* "文字Mの指定" */;
MONDAI2:"問題の"$
ie0:abs(x+3) <4 /* "この不等式を解け。(◆修正部分)" */;
e:x+3 /* "絶対値記号内の式eと(◆修正部分)" */;
ie:abse <4 /* "絶対値記号を含む不等式ieに分けて処理すること(◆修正部分)" */;
absL(e,M) /* "この後の出力に合わせ、以下4つのリストをそれぞれ書き換え" */$
epL:[x,">=",-3] /* "絶対値記号内がe>=0となる場合(▼修正時変更)" */;
iepL:[x,"<",1] /* "直上の場合の、不等式ieの解(▼修正時変更)" */;
emL:[x,"<",-3] /* "絶対値記号内がe<0となる場合(▼修正時変更)" */;
iemL:[x,">",-7] /* "直上の場合の、不等式ieの解(▼修正時変更)" */;
F:0 /* " 直前の処理が完成するまでは0、完成すれば2に書き換え(▼▼チェック後に修正)" */;
if F=2 then (ieC(epL,iepL) /* "各解の最終整理" */,
/**/wpL:wL)$
if F=2 then (ieC(emL,iemL) /* "各解の最終整理" */,
wmL:wL,
(if length(wpL)=length(wmL) and length(wpL)=2 and wpL[1][1]=wmL[2][3] and wpL[1][2]="<="
/**/then wL:[wmL[1],["かつ","",""],wpL[2]]
/**/elseif wpL=[["解なし","",""]] then wL:wmL
/**/elseif wmL=[["解なし","",""]] then wL:wpL
/**/elseif wpL=epL and wmL=emL then wL:[["実数全体","",""]]
/**/elseif wmL[1]=M then wL:[wmL,["または","",""],wpL]
/**/elseif subst(M=1,wpL[1][1]*wpL[1][3])>subst(M=1,wmL[1][1]*wmL[1][3]) then wL:[wmL,["または","",""],wpL]
/**/else wL:[wpL,["または","",""],wmL]))$
print(wL) /* "◆◆解の最終整理◆◆" */$
fourier_elim([ie0],[M]) /* "◆◆解の最終整理◆◆" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
ie0:abs(x-4) <-3*x /* "この不等式を解け。(◆修正部分)" */;
e:x-4 /* "絶対値記号内の式eと(◆修正部分)" */;
ie:abse <-3*x /* "絶対値記号を含む不等式ieに分けて処理すること(◆修正部分)" */;
:
補充問題
▼コマンド番号10301
●補充問題9
式の値の範囲●●●●●●●●●●●●●●●●
kill(all) /* "10301 式の値の範囲" */;
MONDAI:"10301 下の問題について"$
ieJ(wL):=( /* "不等号の整理開始" */
/**/if wL[2]=">" then wL:[wL[3],"<",wL[1]],
/**/if wL[2]=">=" then wL:[wL[3],"<=",wL[1]],
/**/wL
/**/) /* " 不等号の整理" */$
ieK(ieL,K,b):=( /* " 不等式の演算処理開始 " */
/**/sL:["<","<=","=",">=",">"] /* "不等号リスト" */,
/**/KL:["+","-","*","/"] /* "演算記号リスト" */,
/**/ieL:[rat(ieL[1]),ieL[2],rat(ieL[3])],
/**/S:ieL[2],
/**/kn:0,
/**/for k:1 thru 5 do(
/*....*/if S=sL[k] then kn:k
/*....*/),
/**/if (K="*" or K="/") and b<0 then S:sL[6-kn],
/**/if K="+" then ie1L:[ieL[1]+b,S,ieL[3]+b]
/*....*/elseif K="-" then ie1L:[ieL[1]-b,S,ieL[3]-b]
/*....*/elseif K="*" then ie1L:[ieL[1]*b,S,ieL[3]*b]
/*....*/elseif K="/" then ie1L:[ieL[1]/b,S,ieL[3]/b],
/**/ie1L:ieJ(ie1L) /* "不等号の整理" */,
/**/print(ieL[1],ieL[2],ieL[3]),
/**/print(" ⇒ ",ie1L[1],ie1L[2],ie1L[3]),
/**/ie1L
/**/) /* "不等式の演算処理" */$
ieK2(ieL,K,IeL):=( /* " 不等式の演算処理2開始 " */
/**/sL:["<","<=","=",">=",">"] /* "不等号リスト" */,
/**/ieL:[rat(ieL[1]),ieL[2],rat(ieL[3])],
/**/IeL:[rat(IeL[1]),IeL[2],rat(IeL[3])],
/**/if ieL[2]=IeL[2] and K="+" then(
/*........*/ S:ieL[2],
/*........*/ ie1L:[ieL[1]+IeL[1],S,ieL[3]+IeL[3]],
/*........*/ print(ieL,"+",IeL),
/*........*/ print(" ⇒ ",ie1L[1],ie1L[2],ie1L[3]),
/*........*/ ie1L
/*....*/)else "error"
/**/) /* "不等式の演算処理2" */$
MONDAI:" x,yの値が次の範囲のとき、2*x +3*yの値の範囲は(◆修正部分)" ;
M:x /* "文字Mの指定" */;
ieL:[-1,"<",M] /* "xの値の範囲" */;
ieL1:[M,"<",2] /* "xの値の範囲" */;
M:y /* "文字Mの指定" */;
ieL2:[1,"<",M] /* "yの値の範囲" */;
ieL3:[M,"<",3] /* "yの値の範囲" */;
ieKL:ieK(ieL,"*",2) /* "2*xの値の小さい方(◆修正部分2)" */;
ieKL1:ieK(ieL1,"*",2) /* "2*xの値の大きい方(◆修正部分2)" */;
ieKL2:ieK(ieL2,"*",3) /* "3*yの値の小さい方(◆修正部分2)" */;
ieKL3:ieK(ieL3,"*",3) /* "3*yの値の大きい方(◆修正部分2)" */;
ieKL5:ieK2(ieKL,"+",ieKL2) /* "2*x+3*yの値の小さい方(▼修正時変更)" */;
ieKL6:ieK2(ieKL1,"+",ieKL3) /* "2*x+3*yの値の大きい方(▼修正時変更)" */;
print(ieKL5[1],ieKL5[2],ieKL5[3],ieKL6[2],ieKL6[3]) /* "◆◆与式の値の範囲◆◆" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
MONDAI:" x,yの値が次の範囲のとき、5*x -3*yの値の範囲は(◆修正部分)";
ieKL:ieK(ieL,"*",5) /* "5*xの値の小さい方(◆修正部分2)" */;
ieKL1:ieK(ieL1,"*",5) /* "5*xの値の大きい方(◆修正部分2)" */;
ieKL2:ieK(ieL3,"*",-3) /* "-3*yの値の小さい方(◆修正部分2)" */;
ieKL3:ieK(ieL2,"*",-3) /* "-3*yの値の大きい方(◆修正部分2)" */;
▼コマンド番号10302
●補充問題10
連立不等式●●●●●●●●●●●●●●●●
kill(all) /* "10302 式の値の範囲" */;
MONDAI:"10302 下の問題について"$
ieJ(wL):=( /* " 解の初期整理開始" */
/**/if wL[2]=">" then wL:[wL[3],"<",wL[1]],
/**/if wL[2]=">=" then wL:[wL[3],"<=",wL[1]],
/**/wL
/**/) /* " 解の初期整理" */$
ieC(w1L,w2L):=( /* " 解の最終整理開始" */
/**/w1L:ieJ(w1L),
/**/w2L:ieJ(w2L),
/**/if w1L[1]=M and w2L[1]#M then(
/*........*/ w3L:w1L, w1L:w2L, w2L:w3L)
/*....*/elseif w1L[1]=M and w1L[3]>w2L[3] then(
/*........*/ w3L:w1L, w1L:w2L, w2L:w3L)
/*....*/elseif w1L[1]=M and w1L[3]=w2L[3] and w2L[2]="<"then(
/*........*/ w3L:w1L, w1L:w2L, w2L:w3L)
/*....*/elseif w2L[3]=M and w1L[1]=w2L[1] and w2L[2]="<="then(
/*........*/ w3L:w1L, w1L:w2L, w2L:w3L),
/**/print(w1L,w2L),
/**/(if w1L[3]=w2L[1] and w1L[3]=M then(
/*....*/ if w1L[1] < w2L[3] then wL:[w1L,w2L]
/*........*/ elseif w1L[1]=w2L[3] and w1L[2]="<=" and w2L[2]=w1L[2] then wL:[[M,"=",w1L[1]]]
/*........*/ else wL:[["解なし","",""]])
/*....*/elseif w1L[1]=w2L[1] and w1L[1]=M then wL:w1L
/*....*/elseif w1L[3]=w2L[3] and w1L[3]=M then wL:w2L),
/**/if length(wL)=1 then print(wL[1][1],wL[1][2],wL[1][3])
/*....*/ elseif length(wL)=2 then print (wL[1][1],wL[1][2],wL[1][3],wL[2][2],wL[2][3]) ,
/**/print(wL)
/**/) /* " 解の最終整理" */$
ieK(ieL,K,b):=( /* " 不等式の演算処理開始 " */
/**/sL:["<","<=","=",">=",">"] /* "不等号リスト" */,
/**/KL:["+","-","*","/"] /* "演算記号リスト" */,
/**/ieL:[rat(ieL[1]),ieL[2],rat(ieL[3])],
/**/S:ieL[2],
/**/kn:0,
/**/for k:1 thru 5 do(
/*....*/if S=sL[k] then kn:k
/*....*/),
/**/if (K="*" or K="/") and b<0 then S:sL[6-kn],
/**/if K="+" then ie1L:[ieL[1]+b,S,ieL[3]+b]
/*....*/elseif K="-" then ie1L:[ieL[1]-b,S,ieL[3]-b]
/*....*/elseif K="*" then ie1L:[ieL[1]*b,S,ieL[3]*b]
/*....*/elseif K="/" then ie1L:[ieL[1]/b,S,ieL[3]/b],
/**/print(ieL[1],ieL[2],ieL[3]),
/**/print(" ⇒ ",ie1L[1],ie1L[2],ie1L[3]),
/**/ie1L
/**/) /* "不等式の演算処理" */$
M:x;
MONDAI:"次の連立不等式の解は"$
ieL:[2*x+6,">",5*x-12] /* "不等式(1)(◆修正部分)" */;
ieL1:[3*x-7,"<=",2*(4-x)] /* "不等式(2)(◆修正部分)" */;
ieL:ieK(ieL,"-",6+5*x) /* "不等式(1)で移項して(▼修正時変更)" */;
ieL:ieK(ieL,"/",-3) /* "不等式(1)の未知数の係数で割って(▼修正時変更)" */;
ieL1:ieK(ieL1,"-",-7-2*x) /* "不等式(2)で移項して(▼修正時変更)" */;
ieL1:ieK(ieL1,"/",5) /* "不等式(2)の未知数の係数で割って(▼修正時変更)" */;
ieL;ieL1;
F:0 /* " 直前の処理が完成するまでは0、完成すれば2に書き換え(▼▼チェック後に修正)" */;
if F=2 then ieC(ieL,ieL1) /* "◆◆解の最終整理◆◆" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
ieL:[0.05,"<=",0.2-x/100] /* "不等式(1)(◆修正部分)" */;
ieL1:[0.2-x/100,"<=",0.1] /* "不等式(2)(◆修正部分)" */;
▼コマンド番号10303
●補充問題11
絶対値を含む方程式・不等式●●●●●●●●●●●●●●●●
kill(all) /* "10303 絶対値を含む方程式・不等式" */;
MONDAI:"10303 下の問題について"$
ieJ(wL):=( /* " 解の初期整理開始" */
/**/if wL[2]=">" then wL:[wL[3],"<",wL[1]],
/**/if wL[2]=">=" then wL:[wL[3],"<=",wL[1]],
/**/if wL[2]="=" and wL[3]=M then wL:[M,"=",wL[1]],
/**/wL
/**/) /* " 解の初期整理" */$
ieC(w1L,w2L):=( /* " 解の最終整理開始" */
/**/ w1L:ieJ(w1L),
/**/ w2L:ieJ(w2L),
/**/ if w1L[1]=x then(
/*....*/ w3L:w1L, w1L:w2L, w2L:w3L
/*....*/ ),
/**/ print(w1L,w2L),
/**/ (if w1L[1]=x then(
/*........*/ if w1L[3] < w2L[3] and w2L[2]#"=" then wL:[w1L]
/*........*/ elseif w1L[3] < w2L[3] and w2L[2]="=" then wL:[["解なし","",""]]
/*........*/ elseif w1L[3] > w2L[3] and w1L[2]#"=" then wL:[w2L]
/*........*/ elseif w1L[3] > w2L[3] and w1L[2]="=" then wL:[["解なし","",""]]
/*........*/ elseif w1L[2]="<" then wL:[w1L]
/*........*/ elseif w1L[2]="=" and w2L="<" then wL:[w2L]
/*........*/ else wL:[w2L]
/*....*/ )elseif w2L[3]=x then(
/*........*/ if w1L[1] < w2L[1] then wL:[w2L]
/*........*/ elseif w1L[1] >w2L[1] then wL:[w1L]
/*........*/ elseif w1L[2]="<" then wL:[w1L]
/*........*/ else wL:w2L
/*....*/ )elseif w1L[1] < w2L[3] and w1L[2]#"=" and w2L[2]#"=" then wL:[w1L,w2L]
/*....*/ elseif w1L[1] < w2L[3] and w1L[2]#"=" and w2L[2]="=" then wL:[w2L]
/*....*/ elseif w1L[1] =w2L[3] and w1L[2]="<=" and w2L[2]="<=" then wL:[x,"=",w1L[1]]
/*....*/ else wL:[["解なし","",""]]
/*....*/ ),
/**/ if length(wL)=1 then print(wL[1][1],wL[1][2],wL[1][3])
/*....*/ elseif length(wL)=2 then print (wL[1][1],wL[1][2],wL[1][3],wL[2][2],wL[2][3]),
/**/ wL
/**/) /* " 解の最終整理" */$
absL(e,M):=(
/**/epL:fourier_elim( [e>=0], [M]) /* "絶対値記号内が非負区間" */,
/**/iep:subst(abse=e,ie),
/**/iepL:fourier_elim( [iep], [M]) /* "絶対値記号内が非負区間" */,
/**/emL:fourier_elim( [e<0], [M]) /* "絶対値記号内が負区間" */,
/**/iem:subst(abse=-e,ie),
/**/iemL:fourier_elim( [iem], [M]) /* "絶対値記号内が非負区間" */,
/**/print(epL,iepL,emL,iemL)
/**/)$
load(fourier_elim)$
M:x /* "文字Mの指定(▼修正時変更)" */;
e:2*x-1 /* "絶対値記号内の式●絶対値を含む(不)等式を解く●(◆修正部分)" */;
ie:abse=3 /* "絶対値記号を含む等式、不等式(◆修正部分)" */;
absL(e,M) /* "この後の出力に合わせ、以下4つのリストをそれぞれ書き換え" */;
epL:[x,">=",1/2] /* "(▼修正時変更)" */;
iepL:[x,"=",2] /* "(▼修正時変更)" */;
emL:[x,"<",1/2] /* "(▼修正時変更)" */;
iemL:[x,"=",-1] /* "(▼修正時変更)" */;
F:2 /* " 直前の処理が完成するまでは0、完成すれば2に書き換え(▼▼チェック後に修正)" */;
if F=2 then wpL:ieC(epL,iepL) /* "解の最終整理" */;
if F=2 then wmL:ieC(emL,iemL) /* "解の最終整理" */;
(if length(wpL)=length(wmL) and length(wpL)=2 and wpL[1][1]=wmL[2][3] and wpL[1][2]="<="
/*....*/then wL:[wmL[1],["かつ","",""],wpL[2]]
/*....*/elseif wpL=[["解なし","",""]] then wL:wmL
/*....*/elseif wmL=[["解なし","",""]] then wL:wpL
/*....*/elseif wpL=epL and wmL=emL then wL:[["実数全体","",""]]
/*....*/elseif wmL[1]=M then wL:[wmL,["または","",""],wpL]
/*....*/else wL:[wpL,["または","",""],wmL])$
print(wL) /* "◆◆解の最終整理◆◆" */$
fourier_elim([abs(2*x-1)=3],[M]) /* "◆◆解の最終整理◆◆" */;
◎上のMaximaコマンドを実行せよ。
◎上のコマンドを修正して、次を考察せよ。
e:x-4 /* "絶対値記号内の式●絶対値を含む(不)等式を解く●(◆修正部分)" */;
ie:abse=-3*x /* "絶対値記号を含む等式、不等式(◆修正部分)" */;
▼コマンド番号10304
●補充問題12
連立不等式●●●●●●●●●●●●●●●●
kill(all) /* "10304 連立不等式の自然数解" */;
MONDAI:"10304 下の問題について"$
ieJ(wL):=( /* " 解の初期整理開始" */
/**/if wL[2]=">" then wL:[wL[3],"<",wL[1]],
/**/if wL[2]=">=" then wL:[wL[3],"<=",wL[1]],
/**/wL
/**/) /* " 解の初期整理" */$
ieC(w1L,w2L):=( /* " 解の最終整理開始" */
/**/w1L:ieJ(w1L),
/**/w2L:ieJ(w2L),
/**/if w1L[1]=M and w2L[1]#M then(
/*........*/ w3L:w1L, w1L:w2L, w2L:w3L)
/*....*/elseif w1L[1]=M and w1L[3]>w2L[3] then(
/*........*/ w3L:w1L, w1L:w2L, w2L:w3L)
/*....*/elseif w1L[1]=M and w1L[3]=w2L[3] and w2L[2]="<"then(
/*........*/ w3L:w1L, w1L:w2L, w2L:w3L)
/*....*/elseif w2L[3]=M and w1L[1]=w2L[1] and w2L[2]="<="then(
/*........*/ w3L:w1L, w1L:w2L, w2L:w3L),
/**/print(w1L,w2L),
/**/(if w1L[3]=w2L[1] and w1L[3]=M then(
/*....*/ if w1L[1] < w2L[3] and w2L[2]="=" then wL:w2L
/*........*/ elseif w1L[1] < w2L[3] then wL:[w1L,w2L]
/*........*/ elseif w1L[1]=w2L[3] and w1L[2]="<=" and w2L[2]=w1L[2] then wL:[[M,"=",w1L[1]]]
/*........*/ else wL:[["解なし","",""]])
/*....*/elseif w1L[1]=w2L[1] and w1L[1]=M then wL:w1L
/*....*/elseif w1L[3]=w2L[3] and w1L[3]=M then wL:w2L),
/**/if length(wL)=1 then print(wL[1][1],wL[1][2],wL[1][3])
/*....*/ elseif length(wL)=2 then print (wL[1][1],wL[1][2],wL[1][3],wL[2][2],wL[2][3]) ,
/**/print(wL)
/**/) /* " 解の最終整理" */$
ieK(ieL,K,b):=( /* " 不等式の演算処理開始 " */
/**/sL:["<","<=","=",">=",">"] /* "不等号リスト" */,
/**/KL:["+","-","*","/"] /* "演算記号リスト" */,
/**/ieL:[rat(ieL[1]),ieL[2],rat(ieL[3])],
/**/S:ieL[2],
/**/kn:0,
/**/for k:1 thru 5 do(
/*....*/if S=sL[k] then kn:k
/*....*/),
/**/if (K="*" or K="/") and b<0 then S:sL[6-kn],
/**/if K="+" then ie1L:[ieL[1]+b,S,ieL[3]+b]
/*....*/elseif K="-" then ie1L:[ieL[1]-b,S,ieL[3]-b]
/*....*/elseif K="*" then ie1L:[ieL[1]*b,S,ieL[3]*b]
/*....*/elseif K="/" then ie1L:[ieL[1]/b,S,ieL[3]/b],
/*....*/print(ieL[1],ieL[2],ieL[3]),
/**/print(" ⇒ ",ie1L[1],ie1L[2],ie1L[3]),
/**/ie1L
/**/) /* "不等式の演算処理" */$
M:x /* "文字はx" */;
MONDAI:"次の連立不等式の自然数の解は"$
ieL:[7*x+5*(8-x),">",47] /* "不等式(1)(◆修正部分)" */;
ieL1:[800*x+720*(8-x),"<=",6100] /* "不等式(2)(◆修正部分)" */;
ieL:ieK(ieL,"-",40) /* "不等式(1)で移項すると" */;
ieL:ieK(ieL,"/",2) /* "不等式(1)で未知数の係数で割ると" */;
ieL1:ieK(ieL1,"-",5760) /* "不等式(2)で移項すると" */;
ieL1:ieK(ieL1,"/",80) /* "不等式(2)で未知数の係数で割ると" */;
ieL;ieL1;
F:2 /* " 直前の処理が完成するまでは0、完成すれば2に書き換え(▼▼チェック後に修正)" */;
if F=2 then ieC(ieL,ieL1) /* "解の最終整理" */;
wL11n:float(wL[1][1]);
wL23n:float(wL[2][3]);
print(wL11n,wL[1][2],wL[1][3],wL[2][2],wL23n) /* "◆◆解の最終整理◆◆" */$
x:4 /* "●自然数解に置き換え●" */;
print("x =",x," y =",8-x) /* "◆◆自然数解の最終整理◆◆" */$
◎上のMaximaコマンドを実行して、結果を考察せよ。