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')

The image represents the function I am trying to graph:

My plot graph, which does not look like a square wave:

1 Answer 1

1

EDIT:

More pythonic version:

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()

Here is a version that worked for me. Your biggest mistake was not cycling through odd N's. Leave a comment if you have questions about the code.

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

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.