Anda di halaman 1dari 9

8/25/2020 Gerak Bola Jatuh 1D - Jupyter Notebook

Gerakan bola dilempar ke atas


I Wayan Sudiarta, Ph.D.

Pada latihan ini, kita menggunakan Python dan modul Matplotlib untuk perhitungan dan visualisasi
gerakan bola dilempar dari atas permukaan Bumi. Perhatikan Gambar di bawah ini.

Kita menyelesaikan persamaan Newton yaitu


𝑎𝑥 = −𝑔
𝑑2 𝑥 = 𝑎𝑥 = −𝑔
𝑑𝑡2
Kita ubah menjadi dua persamaan dengan 𝑣 𝑥 = 𝑑𝑥/𝑑𝑡:
𝑑𝑣𝑥 = 𝑎𝑥 = −𝑔
𝑑𝑡 𝑑𝑥
𝑑𝑡 = 𝑣𝑥
In [1]:  %matplotlib inline

In [2]:  import numpy as np


import matplotlib.pyplot as plt

localhost:8888/notebooks/Gerak Bola Jatuh 1D.ipynb 1/9


8/25/2020 Gerak Bola Jatuh 1D - Jupyter Notebook

In [3]:  # Inisialisasi parameter

# Delta t dalam sekon


dt = 0.05

# Posisi awal (m) dan Kecepatan awal dalam m/s


x0 = 0.0
vx0 = 10.0

# Nilai gravitasi Bumi dalam m/s^2


g = 9.81

Metode Euler
Dengan metode Euler kita memperoleh persamaan iterasi numerik untuk selang waktu Δ𝑡 adalah
𝑥𝑛+1 = 𝑥𝑛 + 𝑣𝑥,𝑛Δ𝑡
𝑣𝑥,𝑛+1 = 𝑣𝑥,𝑛 + 𝑎𝑥,𝑛 Δ𝑡
In [4]:  # Iterasi metode Euler
# Notasi:
# xn untuk posisi pada indeks n
# xnp1 untuk posisi pada indeks n+1 (n plus 1)

# Nilai awal
xn = x0
vxn = vx0

# Array
x = [xn]
vx = [vxn]
t = [0.0]
tn = 0.0

for i in range(40):
# Update percepatan
axn = -g

# Metode Euler
xnp1 = xn + vxn*dt
vxnp1 = vxn + axn*dt

# Simpan untuk iterasi selanjunya


xn = xnp1
vxn = vxnp1
tn += dt

# Simpan hasil pada list


x.append(xnp1)
vx.append(vxn)
t.append(tn)

localhost:8888/notebooks/Gerak Bola Jatuh 1D.ipynb 2/9


8/25/2020 Gerak Bola Jatuh 1D - Jupyter Notebook

In [5]:  # Nilai eksak dihitung dengan


# Persamaan gerak lurus dengan a konstan
xe = [x0]
vxe = [vx0]
axn = -g
tn = 0.0
for i in range(40):
tn += dt
# Persamaan gerak
vxn = vx0 + axn*tn
xn = x0 + vx0*tn + 0.5*axn*tn**2
# Simpan
vxe.append(vxn)
xe.append(xn)

In [6]:  #Visualisasi
plt.plot(t,x,'ob', label = 'Metode Euler')
plt.plot(t,xe,'-r', label = 'Eksak')
plt.xlabel('$t$')
plt.ylabel('$x$')
plt.legend()
plt.show()

Metode Leapfrog
Persamaan iterasi numerik untuk metode leapfrog dengan selang waktu Δ𝑡 adalah
𝑥𝑛+1 = 𝑥𝑛 + 𝑣𝑥,𝑛+ 12 Δ𝑡
𝑣𝑥,𝑛+ 12 = 𝑣𝑥,𝑛− 12 + 𝑎𝑥,𝑛 Δ𝑡
Untuk memulai iterasi kita membutuhkan pendekatan untuk kecepatan pada waktu 𝑡 = 12 , 𝑣𝑥, 12 .
𝑣𝑥, 12 = 𝑣𝑥,0 + 12 𝑎𝑥,0 Δ𝑡

localhost:8888/notebooks/Gerak Bola Jatuh 1D.ipynb 3/9


8/25/2020 Gerak Bola Jatuh 1D - Jupyter Notebook

In [7]:  # Iterasi metode leapfrog


# Notasi:
# xn untuk posisi pada indeks n
# xnp1 untuk posisi pada indeks n+1 (n plus 1)
# vxnps untuk posisi pada indeks n+1/2 (n plus 1/2)
# vxnms untuk posisi pada indeks n-1/2 (n minus 1/2)

# Nilai awal
ax0 = -g
vxs0 = vx0 + 0.5*ax0*dt

# Array
x = [x0]
vx = [vxs0]
t = [0.0]
tn = 0.0

xn = x0
vxn = vxs0
for i in range(40):
# Update percepatan
axn = -g

# Metode Setengah Langkah


xnp1 = xn + vxn*dt
vxnp1 = vxn + axn*dt

# Simpan untuk iterasi selanjunya


xn = xnp1
vxn = vxnp1
tn += dt

# Simpan hasil pada list


x.append(xn)
vx.append(vxn)
t.append(tn)

localhost:8888/notebooks/Gerak Bola Jatuh 1D.ipynb 4/9


8/25/2020 Gerak Bola Jatuh 1D - Jupyter Notebook

In [8]:  #Visualisasi
plt.plot(t,x,'ob', label = 'Metode Leap Frog')
plt.plot(t,xe,'-r', label = 'Eksak')
plt.xlabel('$t$')
plt.ylabel('$x$')
plt.legend()
plt.show()

Metode Verlet versi Posisi


Dengan metode Verlet versi posisi, persamaan iterasi numerik untuk selang waktu Δ𝑡 adalah
𝑥𝑛+1 = 2𝑥𝑛 − 𝑥𝑛−1 + 𝑎𝑥,𝑛 (Δ𝑡)2

localhost:8888/notebooks/Gerak Bola Jatuh 1D.ipynb 5/9


8/25/2020 Gerak Bola Jatuh 1D - Jupyter Notebook

In [9]:  # Iterasi metode Verlet versi posisi


# Notasi:
# xn untuk posisi pada indeks n
# xnp1 untuk posisi pada indeks n+1 (n plus 1)
# xnm1 untuk posisi pada indeks n-1 (n minus 1)

# Nilai awal
ax0 = -g
x1 = x0 + vx0*dt + 0.5*ax0*dt**2

xnm1 = x0
xn = x1

# Array
x = [x0, x1]
t2 = [0.0, dt]
tn = dt

for i in range(40):
# Update percepatan
axn = -g

# Metode Verlet versi posisi


xnp1 = 2*xn - xnm1 + axn*dt**2

# Simpan untuk iterasi selanjunya


xnm1 = xn
xn = xnp1
tn += dt

# Simpan hasil pada list


x.append(xnp1)
t2.append(tn)

localhost:8888/notebooks/Gerak Bola Jatuh 1D.ipynb 6/9


8/25/2020 Gerak Bola Jatuh 1D - Jupyter Notebook

In [10]:  #Visualisasi
plt.plot(t2,x,'ob', label = 'Metode Verlet Posisi')
plt.plot(t,xe,'-r', label = 'Eksak')
plt.xlabel('$t$')
plt.ylabel('$x$')
plt.legend()
plt.show()

Metode Verlet versi Kecepatan


Δ𝑡 adalah
𝑥𝑛+1 = 𝑥𝑛 + 𝑣𝑛 Δ𝑡 + 12 𝑎𝑥,𝑛 (Δ𝑡)2
Dengan metode Verlet versi posisi, persamaan iterasi numerik untuk selang waktu

𝑣𝑥,𝑛+1 = 𝑣𝑥,𝑛 + 12 (𝑎𝑥,𝑛 + 𝑎𝑥,𝑛+1 )Δ𝑡

localhost:8888/notebooks/Gerak Bola Jatuh 1D.ipynb 7/9


8/25/2020 Gerak Bola Jatuh 1D - Jupyter Notebook

In [11]:  # Iterasi metode Verlet versi posisi


# Notasi:
# xn untuk posisi pada indeks n
# xnp1 untuk posisi pada indeks n+1 (n plus 1)
# xnm1 untuk posisi pada indeks n-1 (n minus 1)

# Nilai awal
xn = x0
vxn = vx0

# Array
x = [x0]
vx = [vx0]
t = [0.0]
tn = 0.0

for i in range(40):

# Metode Verlet versi posisi


vxnp1 = vxn + 0.5*axn*dt

xnp1 = xn + vxn*dt + 0.5*axn*dt**2

# Update percepatan
axn = -g

vxnp1 = vxnp1 + 0.5*axn*dt

# Simpan untuk iterasi selanjunya


xn = xnp1
vxn = vxnp1
tn += dt

# Simpan hasil pada list


x.append(xn)
vx.append(vxn)
t.append(tn)

localhost:8888/notebooks/Gerak Bola Jatuh 1D.ipynb 8/9


8/25/2020 Gerak Bola Jatuh 1D - Jupyter Notebook

In [12]:  #Visualisasi
plt.plot(t,x,'ob', label = 'Metode Verlet Posisi')
plt.plot(t,xe,'-r', label = 'Eksak')
plt.xlabel('$t$')
plt.ylabel('$x$')
plt.legend()
plt.show()

In [ ]: 

localhost:8888/notebooks/Gerak Bola Jatuh 1D.ipynb 9/9

Anda mungkin juga menyukai