連立方程式は消去法で解ける
連立方程式とは、同時に成り立つ複数の式をまとめたものです。消去法を使うと、未知の数を1つずつ消して、答えを順番に求められます。
おにぎり2個とお茶1本で400円、おにぎり1個とお茶3本で450円です。おにぎりとお茶の値段は、それぞれいくらでしょうか。
このレッスンのゴール
メモ
小さな連立方程式を消去法で解き、解がないか、たくさんあるかを言うことができる。
キーワード
| ことば | いみ |
|---|---|
| 連立方程式 | 同時に成り立つ、複数の式 |
| 消去法 | 式を引き算して、未知の数を1つずつ消す方法 |
| 拡大係数行列 | 係数と右辺の数を、1つの表にしたもの |
| 解 | すべての式を満たす、未知の数の値 |
| 特異行列 | 消去すると、全部が 0 の行ができる行列 |
学生が入力するセルは、このプレビューでは空白です。
1つの未知数を引き算で消す
2つの式から、x の係数をそろえて引くと、x が消えて、y だけの式が残ります。y が分かれば、元の式に入れて x が分かります。
数だけを表にすると、手順が見えやすくなります。これが拡大係数行列で、行ごとに引き算をします。
例: おにぎりとお茶の値段
| 手順 | 表の2行 | 分かること |
|---|---|---|
| 最初の表 | [2, 1, 400] と [1, 3, 450] | 2x + y = 400、x + 3y = 450 |
| 2行目から1行目の0.5倍を引く | [2, 1, 400] と [0, 2.5, 250] | x が消えた |
| y を求める | 250 ÷ 2.5 | y = 100 |
| x を求める | (400 - 100) ÷ 2 | x = 150 |
学生が入力するセルは、このプレビューでは空白です。
解が式を満たすか確かめる
# 求めた値が、2つの式をどちらも満たすか確かめます。
x = 150
y = 100
print("1つ目の式:", 2 * x + y)
print("2つ目の式:", x + 3 * y)
# x を 160 に変えると、2つの式はどう変わりますか。
引き算で x を消す
# 2行3列の表の、2行目から1行目の何倍かを引いて、x を消します。
rows = [[2, 1, 400], [1, 3, 450]]
factor = rows[1][0] / rows[0][0]
for k in range(3):
rows[1][k] = rows[1][k] - factor * rows[0][k]
print("引いたあとの2行目:", rows[1])
print("y の値:", rows[1][2] / rows[1][1])
# 450 を 550 に変えて、y の値を予想してから実行してください。
NumPy で連立方程式を解く
docker exec jupyter python3 -c "import numpy as np; a = np.array([[2, 1], [1, 3]]); b = np.array([400, 450]); print(np.linalg.solve(a, b))"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
解がない、またはたくさんある
消去していくと、行が [0, 0, 0] になることがあります。ある式が、別の式の何倍かのときです。このとき、解はたくさんあります。
行が [0, 0, 100] のように、0 = 100 になるときは、解がありません。どちらも特異行列で、解がただ1つには決まりません。
例: 3つの連立方程式
| 式 | 消去したあとの2行目 | 解 |
|---|---|---|
| 2x + y = 400、x + 3y = 450 | [0, 2.5, 250] | ただ1つ |
| 2x + y = 400、4x + 2y = 800 | [0, 0, 0] | たくさんある |
| 2x + y = 400、4x + 2y = 900 | [0, 0, 100] | ない |
学生が入力するセルは、このプレビューでは空白です。
よくある間違い
注意
多くの人は、式が2つあれば、答えが必ずただ1つ出ると考えます。2つの式が同じことを言っているときは、実質1つの式です。消去したあとの行を、必ず見てください。
特異行列の行列式を調べる
docker exec jupyter python3 -c "import numpy as np; print(np.linalg.det(np.array([[2, 1], [4, 2]])), np.linalg.det(np.array([[2, 1], [1, 3]])))"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
さらに挑戦: 3つの式
3つの未知数と3つの式でも、手順は同じです。1列目を消し、次に2列目を消して、下から順に値を求めます。
x + y + z = 6、2y + 5z = -4、2x + 5y - z = 27 を、手で解いてみましょう。答えは3つの整数です。