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

無料レッスン

勾配と偏微分

このレッスンのあとで: 2つの変数をもつ関数の偏微分を求め、勾配を組にして表すことができる。

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

勾配とは、最も急な上り坂の向き

勾配(こうばい)とは、2つ以上の変数をもつ関数で、いちばん急に値が増える向きと、その急さを表す数の組です。山の斜面で、水が流れる向きの反対と考えるとつかめます。

変数が2つになると、傾きは1つでは足りません。東へ進む傾きと、北へ進む傾きを別々に調べ、組にして持ちます。

このレッスンのゴール

メモ

2つの変数をもつ関数の偏微分を求め、勾配を組にして表すことができる。

キーワード

ことばいみれい
偏微分1つの変数だけを動かし、ほかを止めたときの傾き
勾配各変数の偏微分を並べた組。最も急に増える向き
変数関数に入れる数。値が変わる文字x と y
最急降下の向き勾配の符号を逆にした向き。最も急に下る
勾配の長さ組の2乗の和の平方根。坂の急さ

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

偏微分は1つだけ動かして調べる

地面の高さが、東へ x、北へ y 進んだ所で x² + 3y² メートルだとします。(1, 2) の高さは 1 + 12 で 13 です。

東向きの傾きは、y を 2 に止めて、x だけを少し動かして調べます。これが偏微分です。北向きの傾きも同じように、x を止めて y だけを動かして調べます。

例: (1, 2) の近くの傾き

動かす向き高さの変化(h = 0.1)前進の差分商中心差分(h = 0.001)
東(x)13.21 − 13 = 0.212.12
北(y)14.23 − 13 = 1.2312.312

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

2つの偏微分を数値で求める

コード: python
# 公園の地面の高さは、東へ x、北へ y 進んだ所で x² + 3y² メートルとします。
def height(x, y):
    return x ** 2 + 3 * y ** 2

x = 1
y = 2
h = 0.001
slope_x = (height(x + h, y) - height(x - h, y)) / (2 * h)
slope_y = (height(x, y + h) - height(x, y - h)) / (2 * h)
print("東向きの傾き:", round(slope_x, 3))
print("北向きの傾き:", round(slope_y, 3))
# x を 2、y を 1 に変えて、実行する前に2つの傾きを予想してください。

東向きの傾きを確かめる

コマンド
docker exec jupyter python3 -c "print(round(((1.001 ** 2 + 3 * 2 ** 2) - (0.999 ** 2 + 3 * 2 ** 2)) / 0.002, 3))"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

北向きの傾きを確かめる

コマンド
docker exec jupyter python3 -c "print(round(((1 ** 2 + 3 * 2.001 ** 2) - (1 ** 2 + 3 * 1.999 ** 2)) / 0.002, 3))"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

勾配は偏微分を並べた組

東向きと北向きの傾きを組にしたものが勾配です。この例の (1, 2) では (2, 12) です。勾配は、いちばん急に高くなる向きを指します。

勾配の長さは、2 と 12 を2乗して足し、平方根を取ります。√148 で、約 12.166 です。長いほど、坂は急です。

勾配の長さを確かめる

コマンド
docker exec jupyter python3 -c "print(round((2 ** 2 + 12 ** 2) ** 0.5, 3))"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

よくある間違い

注意

勾配は、水が流れ下る向きだと考えがちです。勾配は、いちばん急に上る向きです。下りたいときは、勾配の符号を逆にします。次の回では、この逆向きへ少しずつ進みます。

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

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