Kasus fisika dengan runge kutta

From ccitonlinewiki
Jump to: navigation, search

Study-case

Studi kasus yaitu bola yang dijatuhkan diudara menuju permukaan bumi.


Algoritma

Kasus ini saya selesaikan dengan metode runge-kutta, dalam studycase ini saya berusaha mencoba mencari kecepatan pada waktu tertentu (waktu yang kita inginkan). Berikut adalah langkah-langkah yang saya lakukan dalam menyelesaikan studycase ini dengan metode runge-kutta:

1. Menyusun inputnya yang akan digunakan seperti gaya berat, gravitasi, koefisien drag, massa bola, dan area bola.

2. Mendefinisikan persamaan sesuai dengan persamaan matematis, pendefinisian berupa suatu persamaan diferensial.

3. Untuk mendapatkan nilai waktu maka runge kutta harus dibuat suatu sistem iterasi yaitu dengan menggunakan while, sehingga terjadi iterasi sampai kecepatan 0 dan diperoleh waktunya.

4. menggunakan f(t,v) sebagai fungsi (x,y) dimana t diposisikan sebagai x dan v diposisikan sebagai y.

5. menggunakan persamaan sebagai dasar runge-kutta f(t, v):((m*g-cd*v**1.5)/m)

Flow Chart

# bola jatuh bebas dari ketinggian yang sangat tinggi dikarenakan gravitasi
g = 9.81
t = float(input("Berapa waktu bola saat jatuh? (detik): "))
while t < 0:
   print("Waktu harus angka Positif :")
   t = float(input("Masukkan waktu bola kembali (detik): "))
   
m = float(input("Berapa massa bola? (Kg): "))
while m < 0:
   print("Massa harus positif.")
   m = float(input("Masukkan massa bola kembali (Kg): "))
   
cd = float(input("Berapa koefisien dragnya? (Cd): "))
while cd < 0:
   print("koef drag harus positif.")
   cd = float(input("Masukkan koef drag kembali (Cd): "))
   
t0 = 0
v0 = 0
step = 0.01
# f(t,v) sebagai fungsi (x,y) dimana t diposisikan sebagai x dan v diposisikan sebagai y.
def f(t, v):
   return ((m*g-cd*v**1.5)/m)
# rungekutta sebagai fungsi penghitungan orde 4 runge-kutta. 
def rungekutta(t0, v0, t, step): 
  n = (int)((t - t0)/step)  
  v = v0
  for i in range(1, n + 1): 
     k1 = step * f(t, v) 
     k2 = step * f(t + 0.5 * step, v + 0.5 * k1) 
     k3 = step * f(t + 0.5 * step, v + 0.5 * k2) 
     k4 = step * f(t + step, v + k3)
    
     #untuk v baru
     v = v + (1/6)*(k1 + 2 * k2 + 2 * k3 + k4) 
     
     #untuk t baru
     t0 = t0 + step 
  return v
print("Kecepatan bola setelah", t, "detik jatuh adalah", rungekutta(t0, v0, t, step), "m/s")
Prfisika01.png