Pythonで二次関数と三次関数のグラフを描こう!

プログラミングを数学の学習に活用してみましょう。今回はプログラミング言語 Pythonで二次関数と三次関数のグラフを描いてみます。

グラフ描画の基本と一次関数の描き方は前回の記事 Python で一次関数のグラフを描こう! を参照ください。

必要なライブラリ

Python で二次関数(quadratic function)と三次関数(cubic function)を描くには以下のライブラリが必要になるので、あらかじめインストールしておきましょう。

インストールされているかわからない場合は、とりあえずプログラムを実行してみましょう。インストールされていないと、エラーが出るのですぐにわかります。

二次関数のグラフを描く

y = 2 x 2 4 x 5 のグラフを描いてみることにします。

まず最小限のコードで描く

ただ描くだけなら、ソースコードはわずか8行(実質6行)です。

quadratic_function.py
import numpy as np  # NumPy を読み込む
import matplotlib.pyplot as plt  # Matplotlib を読み込む

x = np.arange(-10, 10, 0.1)  # x座標を-10 から 10 まで 0.1 きざみで取得
y = 2 * x ** 2 - 4 * x - 5  # 二次関数の式

plt.plot(x, y)  # x,yをプロット
plt.show()  # グラフを表示

Python では  x 2  を x ** 2 と記述します。 4 x は 4 * x です。うっかり 4x としてしまうと構文エラーになります。数学とプログラミング言語の違いに気をつけましょう。

プログラム(quadratic_function.py)を実行するとグラフが描かれます。

Python と Matplotlib で描いた二次関数のグラフ
図1. 二次関数のグラフ

2 x 2 のグラフにしてはカーブが緩やかすぎて違和感がありますね。

これは Matplotlib がグラフの収まりが良いように自動調整してしまうためです。x の範囲が -10 から 10 なのに対し、 y の範囲はおよそ -15 から 245 までになっており、大きく調整されていることが見て取れます。

グラフを仕上げる

収まりという点では良いのですが、数学の学習ではもう少し忠実なグラフの方が良いでしょう。yの範囲を工夫、さらに前記事で紹介した方眼紙に描いたように見せるテクニック、グリッド(目盛り線)を表示する等、忠実なグラフに仕上げましょう。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-10, 10, 0.1)
y = 2 * x ** 2 - 4 * x - 5

plt.ylim([-10, 10])  # y軸の表示範囲を -10 から 10 に限定
plt.gca().set_aspect('equal', adjustable='box')  # 方眼紙テクニック
plt.xlabel('x')  # 横軸のラベル
plt.ylabel('y',  rotation=0)  # 縦軸のラベル
plt.grid()  # グリッド(目盛り線)を表示
plt.plot(x, y)
plt.show()

実行すると以下のようになります(完成!)。

Python3 と Matplotlib で描いた二次関数のグラフ(完成)
図2. 二次関数のグラフ(完成)

応用してみよう!

応用として  y = 1 2 x 2 x + 7  のグラフを描いてみましょう。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-10, 10, 0.1)
y = -1.5 * x ** 2 - x + 7 # 式を変更

plt.ylim([-10, 10])
plt.gca().set_aspect('equal', adjustable='box')
plt.xlabel('x')
plt.ylabel('y',  rotation=0)
plt.grid()
plt.plot(x, y)
plt.show()

実行すると上に凸のグラフが描かれます。

上に凸の二次関数のグラフ
図3. 上に凸の二次関数

応用といっても、二次関数の式を書き換えただけです。なお、今回は上手く収まっていますが、もしグラフがはみ出る場合には描画範囲を変えて調整しましょう。

三次関数のグラフを描く

y = 2 x 3 3 x 2 4 x + 5 のグラフを描いてみましょう。

まず最小限のコードで描く

cubic_function.py
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-10, 10, 0.1)
y = 2 * x ** 3 - 3 * x ** 2 - 4 * x + 5

plt.plot(x, y)
plt.show()
Python と Matplotlib で描いた三次関数のグラフ
図4. 三次関数のグラフ

二次関数と同様に Matplotbib の自動調整により収まりは良いものの、忠実でないので仕上げましょう。

グラフを仕上げる

関数の式が変わるだけで、仕上げの方法は二次関数の場合とまったく同じです。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-10, 10, 0.1)
y = 2 * x ** 3 - 3 * x ** 2 - 4 * x + 5

plt.ylim([-10, 10])
plt.gca().set_aspect('equal', adjustable='box')
plt.xlabel('x')
plt.ylabel('y',  rotation=0)
plt.grid()
plt.plot(x, y)
plt.show()

実行すれば完成です。

Python3 と Matplotlib で描いた三次関数のグラフ(完成)
図5. 三次関数のグラフ(完成)

人気プログラミング言語 Python で二次関数と三次関数のグラフを描く方法を学びました。コンピュータを活用すれば、四次関数、五次関数・・・手書きでは難しい関数や学校で習ったことのない関数でも、ただソースコードの式を変えるだけで自由自在に描てしまいます。

次回は三角関数のグラフを描きます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です