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

無料レッスン

変化の速さを数で見積もる

このレッスンのあとで: 数の表から、ある時点での変化の速さ(傾き)を見積もることができる。

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

変化率とは、変わる速さのこと

変化率(へんかりつ)とは、ある量が別の量に対して、どれだけの速さで変わるかを表す数です。微分は、この変化率を、とても小さな刻みまで追い込んだものです。

自転車が走った距離を1分ごとに記録すると、表の数だけから「いま、どれくらいの速さか」を見積もれます。この見積もり方が、このモジュールの出発点です。

このレッスンのゴール

メモ

数の表から、ある時点での変化の速さ(傾き)を見積もることができる。

キーワード

ことばいみれい
変化率変わった量を、かかった時間や距離で割った値
傾きグラフの上で、右へ1進むと上へどれだけ進むか
刻み幅傾きを調べるために進める、小さな幅0.1
差分商関数の変化を刻み幅で割った値。傾きの見積もり
中心差分調べる点の前後に刻み幅を取る差分商

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

変化率は変化した量を割る

距離が 10 m から 40 m に増え、時間が 1 分から 2 分に増えたとします。距離の変化は 30 m、時間の変化は 1 分なので、変化率は 30 ÷ 1 で、1分あたり 30 m です。

これは、その1分間の平均の速さです。実際の速さは刻々と変わるので、平均は目安になります。

例: 区間ごとの平均の速さ

時間(分)距離(m)次の1分間の変化平均の速さ(m/分)
0010 − 0 = 1010
11040 − 10 = 3030
24090 − 40 = 5050
390160 − 90 = 7070

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

刻みを小さくすると傾きに近づく

3分ちょうどの速さを知りたいとします。3分から 4分までの平均は 70 でした。これは、後ろの加速まで含んでいるので、少し大きすぎます。

刻み幅を 1 から 0.1、0.01 と小さくすると、平均は本当の速さに近づきます。この式を差分商と呼び、(f(x+h) − f(x)) ÷ h と書きます。h は刻み幅です。

刻み幅を小さくして速さを見る

コード: python
# 自転車が走った距離は、t 分で 10 * t * t メートルとします。
def distance(t):
    return 10 * t * t

t = 3
for h in [1, 0.1, 0.01, 0.001]:
    speed = (distance(t + h) - distance(t)) / h
    print("刻み幅", h, "のときの速さ:", round(speed, 3))
# t を 5 に変えて、もう一度実行してください。
# 刻み幅を小さくすると、速さはどんな数に近づきますか。

例: 3分のときの速さの見積もり

刻み幅 h前進の差分商中心差分
17060
0.16160
0.0160.160
0.00160.0160

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

前後に取る中心差分は誤差が小さい

ここまでは、調べる点から前へ進めました。中心差分は、前と後ろに同じ幅を取り、(f(x+h) − f(x−h)) ÷ (2h) で求めます。

前後の偏りが打ち消し合うので、同じ刻み幅でも、前進の差分商よりずっと正確です。この距離の例では、どの刻み幅でも 60 でした。

刻み幅 0.1 の前進差分を確かめる

コマンド
docker exec jupyter python3 -c "print(round((10 * 3.1 ** 2 - 10 * 3 ** 2) / 0.1, 3))"

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

同じ刻み幅の中心差分を確かめる

コマンド
docker exec jupyter python3 -c "print(round((10 * 3.1 ** 2 - 10 * 2.9 ** 2) / 0.2, 3))"

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

よくある間違い

注意

刻み幅は、小さければ小さいほど正確だと考えがちです。しかしコンピュータの小数には桁数の限りがあり、小さすぎると 2 つの値の差が消えます。0.001 から 0.000001 のあたりを、まず試します。

刻み幅が小さすぎる例

コマンド
docker exec jupyter python3 -c "print((10 * (3 + 1e-16) ** 2 - 90) / 1e-16)"

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

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

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