2017-10-10 4 views
0
x=1 
n=1 
series1=0 
z=[] 
t= arange(-2,2,.1) 
for i in t: 
    series1=series1 + ((2/n/pi)*(sin(n*x))) 
    x+=1 
    z.append(series1) 

my_list=z 
newlist = [x+.5 for x in my_list] 


plot(newlist,t) 
xlabel('x-range') 
ylabel('A(X)') 
title('square wave') 

画像は、私がグラフ化しようとしている関数を表すフーリエ級数を使用して方形波(パイソン)をプロットされていません: 私のコードは

答えて

1

EDIT:

もっとニシキヘビバージョン:

import matplotlib.pyplot as plt 
import numpy as np 

N_max = 101 #the larger the value the steeper the transition from 0 to 1 and the more "square" 
n_odds = np.arange(1,N_max,2) 
xs = np.arange(-6,6,0.1) 
ys = [0.5+sum(np.multiply(2/(n_odds*np.pi), np.sin(n_odds*x))) for x in xs] 

plt.plot(xs, ys) 
plt.show() 

私のために働くバージョンです。あなたの最大の間違いは、奇妙なNのサイクリングではありませんでした。コードに関するご質問がある場合は、コメントを残してください。

import matplotlib.pyplot as plt 
import numpy as np 

N_max = 101 
n_odds = np.arange(1,N_max,2) 
xs = np.arange(-6,6,0.1) 
ys = [] 
for x in xs: 
    sum_terms = [] 
    for n_odd in n_odds: 
     frac_term = 2/(n_odd*np.pi) 
     sin_term = np.sin(n_odd*x) 
     sum_term = frac_term*sin_term 
     sum_terms.append(sum_term) 

    y = 0.5+sum(sum_terms) 
    ys.append(y) 

plt.plot(xs, ys) 
plt.show() 

enter image description here