Tuesday, September 15, 2009

Menyimpan file ke dalam Format Excel menggunakan Python

Artikel ini merupakan lanjutan dari Membaca File Excel menggunakan Python (Revised(Revised))



Kode Python berikut berisi metode Runge-Kutta orde-4 untuk menyelesaikan persamaan differensial orde dua, simulasi dan visualisasi hasil penyelesaian persamaan dan perintah untuk menyimpan hasil penyelesaian dalam format Ms Excel. Meski demikian, tidak dibutuhkan program Excel sama sekali untuk menjalankan kode tersebut. Persamaan yang diselesaikan dalam contoh ini adalah persamaan sistem pegas ideal.



Agar dapat menulis dan menyimpan menyimpan dalam format Excel, Python menggunakan modul pyExcelerator. Python juga memerlukan modul visual untuk menampilkan gambar. Kode lengkapnya adalah sebagai berikut.


From Aravir (am I Physicist?)










Keterangan Kode:



#memanggil modul


from visual import *


from pyExcelerator import *



#Nilai awal


t=0.


l=0


h=0.1


m=1.


k=1.


f=5.


y=4.


z=0.


tmax=27


g=[]



#membuat variabel wb untuk menampung worksheet


wb=Workbook()



#membuat worksheet baru dengan nama ws0


ws0=wb.add_sheet('0')



#membuat display


for i in range(2):


g.append(display(y = 30 + 300*i,


width=600, height=300,


range=(tmax/2,20,10),


center=(tmax/2,0,0),autoscale=0))



#memberi nama masing-masing display


g[0].title="Posisi terhadap waktu"


g[1].title="Kecepatan terhadap waktu"



#fungsi y"=-kx/m


c=-k/m



#membuat kurva di display 1 dan display 2


a=curve(color=color.green, radius=.1, display=g[0])


b=curve(color=color.blue, radius=.1, display=g[1])



#mengisi kolom A1 dengan ‘t’, kolom B1 dengan kecepatan


ws0.write(0,0,"t")


ws0.write(0,1,"Kecepatan")


ws0.write(0,2,"Posisi")


while (t<=tmax):


l=l+1



#ini adalah program algoritma Runge-Kutta orde-4


#y'=z


k1=c*y


k2=c*(y+h*k1/2)


k3=c*(y+h*k2/2)


k4=c*(y+h*k3)


z=z+h*(k1+k2+k3+k4)/6


#z'=y


k1=z


k2=z


k3=z


k4=z


y=y+h*(k1+k2+k3+k4)/6



#menampilkan gambar di display 1 dan display 2


a.append(pos=vector(t,y,0))


b.append(pos=vector(t,z,0))



#menulis nilai t di kolom A


ws0.write(l,0,"%.2f" % (t))



#menulis nilai kecepatan di kolom B


ws0.write(l,1,"%.4f" % (z))



#menulis nilai kecepatan di kolom C


ws0.write(l,2,"%.5f" % (y))



t=t+h



#menyimpan worksheet dengan nama Runge-Kutta.xls


wb.save('Runge-Kutta.xls')



Hasilnya adalah sebagai berikut.


From Aravir (am I Physicist?)

From Aravir (am I Physicist?)

From Aravir (am I Physicist?)

From Aravir (am I Physicist?)

From Aravir (am I Physicist?)