import numpy as np
import matplotlib.pyplot as plt
a = 1.
t = np.arange(-1.5,1.51,0.01)
x = a * (np.e**t + np.e**(-t))/2.
y = a * (np.e**t - np.e**(-t))/2.
plt.plot(x,y)
plt.xlim([0.,2.5])
plt.show()
import numpy as np
import matplotlib.pyplot as plt
a = 1.
t = np.linspace(0,np.pi/2,100)
x = a*np.cos(t)**3
y = a*np.sin(t)**3
plt.plot(x,y)
plt.show()
・実行結果
上記は$\displaystyle 0 \leq t \leq \frac{\pi}{2}$で描画を行なったが、$0 \leq t \leq 2 \pi$では下記のように描画できる。
import numpy as np
import matplotlib.pyplot as plt
a = 1.
t = np.linspace(0,2.*np.pi,300)
x = a*np.cos(t)**3
y = a*np.sin(t)**3
plt.plot(x,y)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
a = 1.
theta = np.linspace(0,2*np.pi,300)
r = a*(1+np.cos(theta))
x = r*np.cos(theta)
y = r*np.sin(theta)
plt.ficure(7,7)
plt.plot(x,y)
plt.xlim([-0.7,2.3])
plt.ylim([-1.5,1.5])
plt.show()
アルキメデスの螺旋は上記のように定義される$x(\theta),y(\theta)$の軌跡で表される。この長さを$l(C)$とおく。重要例題$047$で導出した式を用いるにあたって、$r(\theta)$の$\theta$での微分を計算する。 $$ \large \begin{align} \frac{dr(\theta)}{d \theta} = a \end{align} $$
曲線が$y=0$で対称であることから、$l(C)$は下記のように表せる。 $$ \large \begin{align} l(C) &= \int_{0}^{2 \pi} \sqrt{r(\theta)^2 + \left( \frac{dr(\theta)}{d \theta} \right)^2} d \theta \\ &= \int_{0}^{2 \pi} \sqrt{a^2 \theta^2 + a^2} d \theta \\ &= a \int_{0}^{2 \pi} \sqrt{1 + \theta^2} d \theta \end{align} $$
$l(C)$は下記のように計算できる。 $$ \large \begin{align} l(C) &= a \int_{0}^{2 \pi} \sqrt{1 + \theta^2} d \theta \\ &= a \left[ \frac{1}{2} (\theta\sqrt{1+\theta^2}+\log{\theta+\sqrt{1+\theta^2}}) \right]_{0}^{2 \pi} \\ &= a \left[ \pi\sqrt{4\pi^2+1} + \frac{1}{2} \log{2 \pi + \sqrt{4\pi^2+1}}) \right] \end{align} $$
・考察 アルキメデスの螺旋な理解ができるように、以下ではPythonを用いて描画を行う。
import numpy as np
import matplotlib.pyplot as plt
a = 1.
theta = np.linspace(0,2*np.pi,300)
r = a*theta
x = r*np.cos(theta)
y = r*np.sin(theta)
plt.ficure(5,7)
plt.plot(x,y)
plt.xlim([-6.,8.])
plt.ylim([-6.,4.])
plt.show()
a = 1.
theta = np.linspace(0,10*np.pi,1000)
r = a*theta
x = r*np.cos(theta)
y = r*np.sin(theta)
plt.ficure(7,7)
plt.plot(x,y)
plt.xlim([-35.,35.])
plt.ylim([-35.,35.])
plt.show()