파이썬으로 작성하는 푸리에 급수 검산 코드
대충 계산한 것은 좋지만, 결과가 너무 더럽고 자신이 없다는 것은 자주 있다.
그래서 파이썬으로 검산할 수 있는 코드를 썼기 때문에 비망록도 겸해 게재한다.
예를 들면
f(x)=x \ \ \ \ (-\pi \le x \le \pi)
푸리에 급수를 확장하면
f(x)=-\Sigma_{n=1}^{\infty}\frac{(-1)^n}{n}\sin(nx)
된다. 이것을 검산해 보자.
import numpy as np
import matplotlib.pyplot as plt
#x軸を定義する
x = np.arange(-np.pi,np.pi,0.01)
#シグマの中身の関数
def func(k):
return -1*(((-1)**k)/k)*np.sin(k*x)
#シグマ演算の関数. 引数で和の範囲を指定.
def sigma(func,frm,to):
ret = np.zeros_like(x)
for i in range(frm,to):
ret += func(i)
return ret
#フーリエ級数展開の関数
f = sigma(func,1,100)
#結果の表示
fig, ax = plt.subplots(1,1)
ax.set_aspect('equal')
ax.plot(x,f)
plt.show()
#こっちは足されていく過程をみるためのグラフ
#この設定では高々9回まで
"""
fig, axes = plt.subplots(3,3,figsize=(7,7))
for i,ax in enumerate(axes.ravel()):
ax.set_aspect('equal')
ax.set_title('n={}'.format(i))
f = sigma(func,1,i)
ax.plot(x,f)
plt.show()
"""
결과는 이렇게 된다.
100개의 항을 더한 것이지만, 적당히 재현할 수 있다.
다음에 코드중에서 코멘트 아웃하고 있는 부분을 실행하면 결과는 다음과 같이 된다.
n=0,1에 대해서는 for문의 관계로 표시되지 않지만, 여기는 각각 변경해 주었으면 한다.
참고문헌
Reference
이 문제에 관하여(파이썬으로 작성하는 푸리에 급수 검산 코드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Suzumushi724/items/0b2b2eb2d72f793dda1d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)