>開発>python>[Pythonで数学]円を描く

Pythonで円を描く

Pythonで円を描いてみる。半径が1となる円、単位円で考えると円周上のx軸、y軸の座標はそれぞれ\(\displaystyle (\cos, \sin) \)となる。

円 : \(\displaystyle p = (\cos\theta, \sin\theta) \)

Pythonで綺麗な円を描く

綺麗な円を描いてみます。numpyのlinspace関数で\(\displaystyle -\pi \)から\(\displaystyle \pi \)を均等に100個の点に分割し、それを\(\displaystyle \cos \)と\(\displaystyle \sin \)でプロットしていきます。

円 : \(\displaystyle p = (\cos\theta, \sin\theta) \)

import numpy as np
from matplotlib import pylab as plt

# -πからπまでに100個の点を打つ
p = np.linspace(-np.pi, np.pi, 100)

# x軸とy軸の長さを同じにする
plt.figure(figsize=(5, 5))

# x軸をcos、y軸をsinで描画
plt.plot(np.cos(p), np.sin(p))

Pythonで楕円を描く

楕円は、x軸又はy軸の尺度を変えます。\(\displaystyle \cos \)(x軸)を\(\displaystyle \frac{1}{2} \)にすると縦長の楕円になりました。

楕円 : \(\displaystyle p = (d\cos\theta, b\sin\theta) \)

import numpy as np
from matplotlib import pylab as plt

# -πからπまでに100個の点を打つ
p = np.linspace(-np.pi, np.pi, 100)

plt.figure(figsize=(5, 5))
plt.plot(1 / 2 * np.cos(p), np.sin(p))
plt.xlim((-1.0, 1.0))

次は、\(\displaystyle \sin \)(y軸)を\(\displaystyle \frac{1}{4} \)にしてみました。すると横長の楕円になりました。

import numpy as np
from matplotlib import pylab as plt

import numpy as np
from matplotlib import pylab as plt

# -πからπまでに100個の点を打つ
p = np.linspace(-np.pi, np.pi, 100)

plt.figure(figsize=(5, 5))
plt.plot(np.cos(p), 1 / 4 * np.sin(p))
plt.ylim((-1.0, 1.0))

次は、楕円を傾けてみます。

傾きのある楕円 : \(\displaystyle p = (d\cos\theta\cos\omega – b\sin\theta\sin\omega, d\cos\theta\sin\omega + \sin\theta\cos\omega) \)

import numpy as np
from matplotlib import pylab as plt

import numpy as np
from matplotlib import pylab as plt

# -πからπまでに100個の点を打つ
p = np.linspace(-np.pi, np.pi, 100)

# 楕円のx軸、y軸
x = np.cos(p)
y = 1 / 4 * np.sin(p)

# 45度傾ける
rotate_p = np.pi / 4

plt.figure(figsize=(5, 5))
plt.plot(x * np.cos(rotate_p) - y * np.sin(rotate_p), x * np.sin(rotate_p) + y * np.cos(rotate_p))

Pythonで渦巻きを描く

渦巻きは、倍率を0から大きくしていきまがら円を繰り返し描いていきます。

渦巻き : \(\displaystyle p = (r\cos\theta, r\sin\theta) \)

import numpy as np
from matplotlib import pylab as plt

# 円10周分の点
p = np.linspace(-np.pi * 5, np.pi * 15, 1000)

# 渦巻きを作る用の倍率
r = np.linspace(0.0, 1.0, 1000)

# x軸とy軸の長さを同じにする
plt.figure(figsize=(5, 5))
plt.plot(np.cos(p) * r, np.sin(p) * r)

numpyでは、sin、cos、tanをそれぞれnp.sin、np.cos、np.tanで求められる。

数学

記事を読んでいただきありがとうございました。

Page Top