見出し画像

sin θからsin nθまでの合計を計算する

 $${\sin\theta}$$から$${\sin n\theta}$$までの合計を計算してグラフを作成してみます。

import numpy as np
import matplotlib.pyplot as plt
N = 1000
n = 5
theta = np.linspace(-2*np.pi, 2*np.pi, N)
fig ,ax = plt.subplots()
plt.rcParams["figure.figsize"] = (6, 4)
ax.set_title( 'sinθからsin'+str(n)+'θまでの総和', loc = 'center', pad=30, fontname="MS Gothic", fontsize = 24)
add = np.zeros(N)
for i in range(1,n+1):
    add += np.sin(i*theta)
text=r'$\sum_{k=1}^{'+str(n)+r'} \sin k\theta$'
ax.plot(theta, add, color='r', linewidth=1, label= text)
ax.set_xticks([-2*np.pi,-1.5*np.pi, -np.pi,-0.5*np.pi,0,0.5*np.pi, np.pi,1.5*np.pi, 2*np.pi]) 
ax.set_xticklabels( [ '-2π',r'$-\frac{3}{2} \pi$' ,'-π', r'$-\frac{π}{2} \pi$','', 
         r'$\frac{π}{2} \pi$','π', r'$\frac{3}{2} \pi$', '2π'])
ax.set_xlabel(r'$\theta$', loc = 'right', labelpad=-30)
ax.spines['left'].set_position('zero') 
ax.spines['bottom'].set_position(('data', 0))
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.legend( bbox_to_anchor=(1, 0.2))
ax.grid(which = 'major', axis = 'x', color = 'green', alpha = 0.8,
        linestyle = '--', linewidth = 0.5)
ax.grid(which = 'major', axis = 'y', color = 'green', alpha = 0.8,
        linestyle = '--', linewidth = 0.5)
plt.show()


  ここではn=5とすると、$${\sin n \theta}$$は$${2\pi}$$の間に5回振動するので、同じように5回振動し、0に近いところほど$${\theta}$$がプラスのときは山が高く、マイナスのときは谷が深くなります。 ところで、$${\displaystyle\sum_{k=1}^{n} \sin k\theta=\sin\frac{n+1}{2\theta}\sin \frac{n\theta}{2}/\sin\frac{\theta}{2}}$$という計算方法があるので、比較してみます。

import numpy as np
import matplotlib.pyplot as plt
N = 1000
n=5
theta = np.linspace(-2*np.pi, 2*np.pi, N)
fig ,ax = plt.subplots()
plt.rcParams["figure.figsize"] = (6, 4)
ax.set_title( 'sinθからsin'+str(n)+'θまでの総和', loc = 'center', pad=30, fontname="MS Gothic", fontsize = 24)

add_1=np.zeros(N)
for i in range(1,n+1):
    add_1+=np.sin(i*theta)
text=r'$\sum_{k=1}^{'+str(n)+r'} \sin k\theta$'
ax.plot(theta, add_1, color='r', linewidth=1, label= text)
add_2=(np.sin((n+1)/2*theta)*np.sin(n*theta/2)/np.sin(theta/2))
ax.plot(theta, add_2, color='g', linewidth=6, alpha=0.2,label='formula' )
ax.set_xticks([-2*np.pi,-1.5*np.pi, -np.pi,-0.5*np.pi,0,0.5*np.pi, np.pi,1.5*np.pi, 2*np.pi]) 
ax.set_xticklabels( [ '-2π',r'$-\frac{3}{2} \pi$' ,'-π', r'$-\frac{π}{2} \pi$','', 
         r'$\frac{π}{2} \pi$','π', r'$\frac{3}{2} \pi$', '2π'])
ax.set_xlabel(r'$\theta$', loc = 'right', labelpad=-30)
ax.spines['left'].set_position('zero') 
ax.spines['bottom'].set_position(('data', 0))
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.legend( bbox_to_anchor=(1, 0.2))
# ax.set_aspect(2, adjustable='box')
ax.grid(which = 'major', axis = 'x', color = 'green', alpha = 0.8,
        linestyle = '--', linewidth = 0.5)
ax.grid(which = 'major', axis = 'y', color = 'green', alpha = 0.8,
        linestyle = '--', linewidth = 0.5)
plt.show()


ぴったりと重なります。せっかくパソコンを使うのでn=50で計算し、グラフにしてみます。


 $${\theta}$$がプラスのときは0の近傍で最大となり、$${2\pi}$$の付近で最小となります。それ以外のときには0付近にはりつきます。$${\sin}$$カーブは0の付近ではわずかにプラスになりますが決してマイナスにはならないので積み重なると大きな値になります。同じように$${2\pi}$$の近傍では$${\sin \theta}$$はわずかにマイナスになるだけですが、積み重なると大きなマイナスになることがわかります。

 同じように$${\cos\theta}$$から$${\cos 5\theta}$$までの合計を計算します。

import numpy as np
import matplotlib.pyplot as plt
N = 1000
n=5
theta = np.linspace(-2*np.pi, 2*np.pi, N)
fig ,ax = plt.subplots()
plt.rcParams["figure.figsize"] = (6, 4)
ax.set_title( 'cosθからcos'+str(n)+'θまでの総和', loc = 'center', pad=30, fontname="MS Gothic", fontsize = 24)

add_1=np.zeros(N)
for i in range(1,n+1):
    add_1+=np.cos(i*theta)
text=r'$\sum_{k=1}^{'+str(n)+r'} \cos k\theta$'
ax.plot(theta, add_1, color='r', linewidth=1, label= text)
add_2=(np.cos((n+1)/2*theta)*np.sin(n*theta/2)/np.sin(theta/2))
ax.plot(theta, add_2, color='g', linewidth=6, alpha=0.2,label='formula' )
ax.set_xticks([-2*np.pi,-1.5*np.pi, -np.pi,-0.5*np.pi,0,0.5*np.pi, np.pi,1.5*np.pi, 2*np.pi]) 
ax.set_xticklabels( [ '-2π',r'$-\frac{3}{2} \pi$' ,'-π', r'$-\frac{π}{2} \pi$','', 
         r'$\frac{π}{2} \pi$','π', r'$\frac{3}{2} \pi$', '2π'])
ax.set_xlabel(r'$\theta$', loc = 'right', labelpad=-30)
ax.spines['left'].set_position('zero') 
ax.spines['bottom'].set_position(('data', 0))
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.legend( bbox_to_anchor=(1, 0.2))
# ax.set_aspect(2, adjustable='box')
ax.grid(which = 'major', axis = 'x', color = 'green', alpha = 0.8,
        linestyle = '--', linewidth = 0.5)
ax.grid(which = 'major', axis = 'y', color = 'green', alpha = 0.8,
        linestyle = '--', linewidth = 0.5)
plt.show()


 計算式と一致します。 $${\displaystyle\sum_{k=1}^{n} \cos k\theta=\cos\frac{n+1}{2\theta}\sin \frac{n\theta}{2}/\sin\frac{\theta}{2}}$$前の式と比べると、はじめの項だけ$${\sin}$$が$${\cos}$$に変わっただけになります。非常に興味深いものがあります。

 0と$${2\pi}$$の近傍で大きな数値となります。

この記事が気に入ったらサポートをしてみませんか?