第2回方程式を解く

第2回 方程式を解く
• solve コマンド
solve( {式}, {未知数} ) が基本形です。方程式の数式解を出力します。
複数の式、複数の未知数によって連立方程式も解けます。例題および ?solve も
参考にしてください。
• eval コマンド
eval は評価する式と評価する点の二つのパラメータを持ちます。検算、条件下
での値の評価などに使います。
soln:=solve({x+2*y=3, y+1/x=1}, {x, y});
eval(x+2*y, soln[1]);
eval({x+2*y, y+1/x}, soln[2]);
• unapply コマンド
unapply コマンドによって、式を関数に変えることができます。
x+3*y;
f:=unapply(%,x,y);
f(1,3);
練習 次の方程式の解を求め、かつそれが解であることを確かめよ。
(1) x3 + 4x2 − 3x − 1 = 0
(2) x + 2y = 3, 3x2 − 2xy + y 2 = 13
練習 次の連立方程式を解け。


3y + 3z − 2w




x + y + 2z + 3w

x + 2y + 3z + 2w




x + 3y + 4z + 2w



x + 2y + 3z
= −4
=2
=1
= −1
,
2x + y + 3z


−2x + 3y + z
=4
=0
=1


x − y



3x − y + z

2x − y + 2z




y − z



x + 2y − 2z + s + 3t
= −2
= −2
= −1
,
=1
=2
2x + y + 2z + t
=3


−2x − 3y + 2z − s + 2t = 1
• RootOf
solve を用いて5次方程式などを解くと RootOf の表示が現れます。これは、
その方程式の解であると、言っているだけで、実際の数値は、近似的にしか求
められません。
solve({x^5-2*x+3=0}, {x});
allvalues(%);
• fsolve コマンド
solve コマンドと異なり、数値解を求めます。基本的には、一つの実数解を返
します。多項式については、すべての実数解を返します。
• isolve コマンド
整数解を求める命令です。
• msolve コマンド
mod n の意味での整数解を求める命令です。 n の指定が必要です。
• mod の計算
msolve コマンドに関連して、剰余類の計算は mod を用います。 ?mod も参
考にしてください。
mod(12,7);
12 mod 7;
練習
(1) sin x = 0.7 の解を5個求めよ.
(2) 13x + 7y = 1 となる整数解を求めよ.
(3) 17 を法として 5, 52 , 53 , · · · , 520 を求めよ.
(4) 17 を法として 5x = 1 となる整数 x を求めよ.
補充問題
尖がった一山の関数を
f (x) =
(
2x
0 ≤ x ≤ 1/2
2 − 2x 1/2 ≤ x ≤ 1
と定義する. 山の真ん中を削って二山の関数にするには
1
f (f (x))
2
と関数の合成をすれば良い. これを繰り返して, 足し合わせていくと, その極限関数と
して, 連続関数だがすべての点で微分不可能な関数 (高木関数) ができる. 以下の操作
は高木関数を構成している. 命令を解釈してください.
restart:
f := x -> 1 - abs(2*x-1):
fns := [ seq(f@@n / 2^n, n=1..10) ]:
plot( fns[1..4], 0..1, scaling=constrained);
plot( add(a, a=fns), 0..1, scaling=constrained);
以下の問題について Maple を用いて考察して見よ.
多項式 f1 を f1 (x) = x2 − 2 と定め
fn+1 (x) = fn (x2 − 2)
(n = 1, 2, 3, . . .)
によって f2 , f3 , . . . を順次定めていく. 実数 a が −2 < a < 2 をみたすとき, 方程式
fn (x) = a は相異なる実数解をちょうど 2n 個もち, いずれの解も −2 < x < 2 の範
囲にあることを示せ.
[2004 年度千葉大学後期問題]