クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

連立方程式を消去法で解く

このレッスンのあとで: 小さな連立方程式を消去法で解き、解がないか、たくさんあるかを言うことができる。

55分のレッスンコマンド2件JupyterLab データサイエンスラボ:pandas、Matplotlib、scikit-learn をブラウザーで

連立方程式は消去法で解ける

連立方程式とは、同時に成り立つ複数の式をまとめたものです。消去法を使うと、未知の数を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.5y = 100
x を求める(400 - 100) ÷ 2x = 150

学生が入力するセルは、このプレビューでは空白です。

解が式を満たすか確かめる

コード: python
# 求めた値が、2つの式をどちらも満たすか確かめます。
x = 150
y = 100

print("1つ目の式:", 2 * x + y)
print("2つ目の式:", x + 3 * y)
# x を 160 に変えると、2つの式はどう変わりますか。

引き算で x を消す

コード: python
# 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つの整数です。

このラボとソースについて: JupyterLab データサイエンスラボ:pandas、Matplotlib、scikit-learn をブラウザーで

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。