HEMS - 1 year ago 84

Python Question

I am using the below manual method so as to plot the summation of harmonics. The below method is working fine.Please refer the image below.When the same thing implemented in for loop,it is not working as desired.The for loop is meant to take care of n number of harmonic values.Could any help me in this?

`import numpy as np`

import matplotlib.pyplot as plt

# omega =2*pi

x=np.linspace(0,2*np.pi,2000)

y1=np.sin(1*2*np.pi*x)/1

y2=np.sin(3*2*np.pi*x)/3

y3=np.sin(5*2*np.pi*x)/5

y4=np.sin(7*2*np.pi*x)/7

y5=np.sin(9*2*np.pi*x)/9

Y=y1+y2+y3+y4+y5

plt.plot(x,Y)

plt.grid()

plt.show()

#Implementation in for loop is not working

def Harmonic(i):

y = []

for n in range(0,i):

y=np.sin((2*n+1)*(2*np.pi)*(x))/(2*n+1)

y += y

plt.plot(x,y)

plt.grid()

plt.show()

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

Do you mean something like that?

```
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,2*np.pi,2000)
y = [0 for _ in x]
def Harmonic(i):
global y
global x
for n in range(0,i):
y += np.sin((2*n+1)*(2*np.pi)*(x))/(2*n+1)
Harmonic(5)
plt.plot(x,y)
plt.grid()
plt.show()
```

Or, if you want to have the function the make the plot:

```
import numpy as np
import matplotlib.pyplot as plt
def Harmonic(i):
x=np.linspace(0,2*np.pi,2000)
y = [0 for _ in x]
for n in range(0,i):
y += np.sin((2*n+1)*(2*np.pi)*(x))/(2*n+1)
plt.plot(x,y)
plt.grid()
plt.show()
Harmonic(5)
```

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**