Thursday, February 18, 2016

1D Waves Simulation using Matplotlib Module on Python

Hasil dari ini, :)





code
"""
Gelombang
"""
import numpy as np                          #untuk operasi array
import matplotlib.pyplot as plt             #untuk gambar grafik
import matplotlib.animation as animation    #untuk menggerakkan grafik

fig, ax = plt.subplots()
#variabel
n   = 39
x   = np.arange(0., 1.,1./n )   #array dari 0 s.d 1 berjarak 1/n
y   = np.zeros(n)               #array sejumlah n isinya 0
y1  = np.zeros(n)               # y1 : array [0..n] of real
y2  = np.zeros(n)
r2  = 1./512                    #kotak

#nilai awal yang jelek
#y1[11]=1.
#y2[11]=1.

#nilai awal fungsi gaussian
y1  = np.exp(-1*np.power(10*x-3,2))
y2  = np.exp(-1*np.power(10*x-3,2))

#print y2

#membuat garis/kurva dengan sumbu-x adalah x, sumbu-y adalah y2
line, = ax.plot(x, y2)

def proses():
    #hitung nilai baru
    for i in np.arange(1,n-1):
        y[i]    =   2*(1-r2)*y1[i]-y2[i]+r2*(y1[i+1]+y1[i-1])
    #geser
    y2[:]   =   y1[:]
    y1[:]   =   y[:]
    #print y2

    return y2

def animate(i):
    #line.set_ydata(np.sin(x + i/10.0))  # update the data
    proses()
    line.set_ydata(y2)
    return line,

ani = animation.FuncAnimation(fig, animate, np.arange(1, 20), interval=10, blit=False)
plt.ylim(-3,3)
plt.show()


'''
install python
-pergi ke python.org
-download python 2.7
-install file .exe .msi

install modul
-google 'numpy'
-download
-install

-google 'matplotlib'
-download
-install

'''