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?) |
No comments:
Post a Comment