メモ > 技術 > プログラミング言語: Python > 数学とグラフ
■数学とグラフ
[python]算数・数学?~関数と方程式~ - Qiita
https://qiita.com/hiroyuki_mrp/items/d4194a6de594c2e0f56f
■基本のグラフ
\[y = x
\]
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5, 6, 7, 8] # Xの範囲
y = x # Yの範囲
plt.figure(figsize=(8, 8), dpi=72)
plt.axis('equal') # 縦横のメモリの大きさを揃える
plt.xlim(-10, 10) # X軸は-10〜10の範囲を表示する
plt.ylim(-10, 10) # Y軸は-10〜10の範囲を表示する
plt.xticks(np.arange(-10, 10, 1)) # X軸のグリッド間隔を-10〜10の範囲で1刻みに設定する
plt.yticks(np.arange(-10, 10, 1)) # Y軸のグリッド間隔を-10〜10の範囲で1刻みに設定する
plt.grid(color='0.8') # 薄いグレーでグリッドを表示する
plt.plot(x, y)
plt.savefig('graph.png')
■1次関数
\[y = 2x + 3
\]
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
x = np.arange(-100, 100)
y = 2 * x + 3 # 1次関数「y = 2x + 3」のグラフを描画
plt.figure(figsize=(8, 8), dpi=72)
plt.axis('equal')
plt.xlim(-10, 10)
plt.ylim(-10, 10)
plt.xticks(np.arange(-10, 10, 1))
plt.yticks(np.arange(-10, 10, 1))
plt.grid(color='0.8')
plt.plot(x, y)
plt.savefig('graph.png')
■2次関数
\[y = x^{2} + 1
\]
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
x = np.arange(-100, 100, 0.1) # 0.1刻みにしてグラフをなめらかにする
y = x ** 2 + 1 # 2次関数「y = x^2 + 1」のグラフを描画
plt.figure(figsize=(8, 8), dpi=72)
plt.axis('equal')
plt.xlim(-10, 10)
plt.ylim(-10, 10)
plt.xticks(np.arange(-10, 10, 1))
plt.yticks(np.arange(-10, 10, 1))
plt.grid(color='0.8')
plt.plot(x, y)
plt.savefig('graph.png')
■3次関数
\[y = x^{3} + 4
\]
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
x = np.arange(-100, 100, 0.1) # 0.1刻みにしてグラフをなめらかにする
y = x ** 3 + 4 # 3次関数「y = x^3 + 4」のグラフを描画
plt.figure(figsize=(8, 8), dpi=72)
plt.axis('equal')
plt.xlim(-10, 10)
plt.ylim(-10, 10)
plt.xticks(np.arange(-10, 10, 1))
plt.yticks(np.arange(-10, 10, 1))
plt.grid(color='0.8')
plt.plot(x, y)
plt.savefig('graph.png')
■連立方程式
2点 (3, 6) と (4, 12) を通る直線を求める
・「x = 3」のときに「y = 6」となる
・「x = 4」のときに「y = 12」となる
なので、1次関数「y = ax + b」に当てはめて
6 = 3a + b
12 = 4a + b
となる
この連立方程式を解けばいい
以下はプログラムを使わずに解く例
b = 6 - 3a
12 = 4a + 6 - 3a
a = 6
6 = 3 * 6 + b
b = -12
y = 6x - 12
以下はプログラムを使って解く例
実行して
「ModuleNotFoundError: No module named 'sympy'」
のエラーになる場合、sympyをインストールする必要がある
$ pip3.7 install sympy
from sympy import Symbol, solve
a = Symbol('a') # 変数を定義(「a」を記号として扱う。通常int型とstr型は一緒に計算できない)
b = Symbol('b') # 変数を定義(「b」を記号として扱う。通常int型とstr型は一緒に計算できない)
exp1 = 3 * a + b - 6
exp2 = 4 * a + b - 12
ans = solve((exp1, exp2)) # 方程式の解を取得
print(ans) # 解を表示
以下は実行結果
$ python3.7 math.py
{a: 6, b: -12}