Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- 正弦波の足し合わせでのこぎり波を作成
- Usage:
- $ python fourier_sawtoothWave.py 100
- argv[1]は足し合わせる波の数を意味し,デフォルト10
- '''
- import math
- import matplotlib.pyplot as plt
- import numpy as np
- import sys
- def fourier_series(x, n):
- '''
- :param x: データx
- :param n: 足し合わせる波の数
- '''
- data = []
- for i in x: #xの各点についてyを計算
- y=0.0
- for j in range(1,n):
- y += (2/j)*(-1)**(j+1)*np.sin(j*i) #のこぎり波のフーリエ級数
- data.append(y)
- return data
- def main(n):
- '''
- :param n: 足し合わせる波の数
- '''
- pi = math.pi
- x = np.arange(-2*pi, 2*pi, 0.1) #定義域(-2π~2π)
- y = fourier_series(x, n) #yを計算
- plt.plot(x,y)
- plt.xticks([-pi,0,pi], ["-π","0","π"])
- plt.yticks([-pi,0,pi], ["-π","0","π"])
- plt.xlim([-2*pi,2*pi])
- plt.show()
- if __name__ == '__main__':
- n = int(sys.argv[1]) if len(sys.argv)>1 else 10
- main(n)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement