Anda di halaman 1dari 10

LABORATORIUM FISIKA KOMPUTASI

PROGRAM STUDI FISIKA


UNIVERSITAS NEGERI JAKARTA

LABORATORY REPORT Tanggal: 27 Mei 2021

Nama : Galih Muhammad Ghufron


NIM : 1306619059
Mata Kuliah : Praktikum Fisika Komputasi
Semester : 114

PROBLEM STATEMENT
Menghitung energi potensial gravitasi antar 2 buah benda dengan menggunakan Integral
Numeric serta dengan menggunakan teknik Trapezoid dan Simpson pada program Python.

MATHEMATICAL EQUATIONS
Eenergi Potensial Gravitasi Antar 2 Benda
Apabila diketahui sebuah benda bermassa (M) 6,000,000 𝑘𝑔 berjarak 15 𝑚 dengan benda lain
yang bermassa (m) 4,000,000 𝑘𝑔. Carilah energi potensial gravitasi pada selang jarak (ri – rf)
(ri = 3 m & rf = 12 m). (𝐺 = 6.67 × 10−11 )
Gaya gravitasi antar 2 buah benda memiliki rumus :
𝑟𝑓
𝐺𝑀𝑚
∆𝑈 = ∫ 𝑑𝑟
𝑟2
𝑟𝑖

Dengan persoalaan diatas maka didapatkan fungsi :


12
(6.67 × 10−11 )(6,000,000)(4,000,000)
∆𝑈 = ∫ 𝑑𝑟
152
3

Jika dihitung :
12
(1,600.8)
∆𝑈 = ∫ 𝑑𝑟
225
3

1
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

Integral numerik metode Trapezoid


Metode trapezoid memasukan trapezoid ke setiap subinterval dan menjumlahkan luas trapezoid
untuk mengaproksimasikan total integral.
𝑏 𝑛−1
𝑓(𝑥1 ) + 𝑓(𝑥𝑖+1 )
∫ 𝑓(𝑥) 𝑑𝑥 ≈ ∑ ℎ
𝑎 2
𝑖=0

𝑏 𝑛−1

∫ 𝑓(𝑥) 𝑑𝑥 ≈ (𝑓(𝑥0 ) + 2 (∑ 𝑓(𝑥𝑖 )) + 𝑓(𝑥𝑛 ))
𝑎 2
𝑖=1

Dengan
n = banyak trapezoid (subinterval) / jumlah kenaikan
𝑏−𝑎
h = jarak antar titik = 𝑛

Integral numerik metode Simpson 1/3


Metode Simpson 1/3 mengaproksimasikan luas dibawah f(x) pada interval titik (𝑥𝑖−1 , 𝑥𝑖 ) dan
(𝑥𝑖 , 𝑥𝑖+1) dengan memasukan polynomial kuadratik melalui titk-titik (𝑥𝑖−1 , 𝑓(𝑥𝑖−1 )), (𝑥𝑖 , 𝑓(𝑥𝑖 )),
(𝑥𝑖+1 , 𝑓(𝑥𝑖+1 )). Untuk menggunakan metode Simpson harus digunakan jumlah subinterval
genap yang mana memiliki jumlah titik ganjil.

𝑏 𝑛−1 𝑛−2

∫ 𝑓(𝑥) 𝑑𝑥 ≈ [𝑓(𝑥0 ) + 4 ( ∑ 𝑓(𝑥𝑖 )) + 2 ( ∑ 𝑓(𝑥𝑖 )) + 𝑓(𝑥𝑛 )]
𝑎 3
𝑖=1,𝑖 𝑔𝑎𝑛𝑗𝑖𝑙 𝑖=2,𝑖 𝑔𝑒𝑛𝑎𝑝

2
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

Integral numerik metode Simpson 3/8


Metode Simpson 3/8 mengaproksimasikan menggunakan polynomial kubik.
𝑛
𝑛−1 −1
𝑏 3
3ℎ
∫ 𝑓(𝑥) 𝑑𝑥 ≈ [𝑓(𝑥0 ) + 3 ∑ 𝑓(𝑥𝑖 ) + 2 ∑ 𝑓(𝑥3𝑗 ) + 𝑓(𝑥𝑛 )]
𝑎 8
𝑖≠3𝑘 𝑗=1

Dengan 𝑘 = 1,2,3, …
Metode Simpson 3/8 hanya dapat digunakan jika n (jumlah subinterval) merupakan kelipatan
dari 3.

Error
𝑁𝑖𝑙𝑎𝑖 𝑠𝑒𝑏𝑒𝑛𝑎𝑟𝑛𝑦𝑎 − 𝐴𝑝𝑟𝑜𝑘𝑠𝑖𝑚𝑎𝑠𝑖
𝐸𝑟𝑟𝑜𝑟 𝑟𝑒𝑙𝑎𝑡𝑖𝑓 = | × 100|
𝑁𝑖𝑙𝑎𝑖 𝑠𝑒𝑏𝑒𝑛𝑎𝑟𝑛𝑦𝑎

3
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

METHODS AND ALGORITHM


3.1. Memulai program
3.2. Mencetak judul dan identitas
3.3. Mengimport quad dari scipy.integrate, numpy sebagai np
3.4. Mendeklarasikan fungsi f = lambda r: (1600.8/225)
3.5. Mencetak "fungsi F(r) = (1600.8/225)"
3.6. Memasukan batas bawah integral sebagai Bb, batas atas integral sebagai Ba, dan
jumlah kenaikan (banyak subinterval) sebagai n
3.7. Mendeklarasikan sigmatrapezoid, sigmaevensimpson13, sigmaoddsimpson13 = 0
3.8. Mendeklarasikan sigman1, sigman2, sigman3 = 0
3.9. Mendeklarasikan e = 10e-12
3.10. Menghitung besar subinterval h = (Ba-Bb)/n
3.11. Mencetak nilai h
3.12. Melooping menggunakan for i in np.arange(Bb+h,Ba-h+e,h):
3.12.1. Menghitung sigmatrapezoid = sigmatrapezoid + f(i)
3.13. Jika sigmaoddsimpson13==0:
3.13.1. Melooping menggunakan for j in np.arange(Bb+h, Ba-h+e,2*h):
3.13.1.1. Menghitung sigmaoddsimpson13 = sigmaoddsimpson13 + f(j)
3.13.1.2. Jika sigmaevensimpson13==0:
3.13.1.2.1. Melooping menggunakan for k in np.arange(j+h,Ba-h+e,2*h):
3.13.1.2.1.1. Menghitung sigmaevensimpson13 =
sigmaevensimpson13 + f(k)
3.14. Jika sigman1==0:
3.14.1. Melooping menggunakan for p in np.arange(Bb+h,Ba-h+e,3*h):
3.14.1.1. Menghitung sigman1 = sigman1 + (3*f(p))
3.15. Jika sigman2==0:
3.15.1. Melooping menggunakan for p in np.arange(Bb+(2*h),Ba-h+e,3*h):

4
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

3.15.1.1. Menghitung sigman2 = sigman2 + (3*f(p))


3.16. Jika sigman3==0:
3.16.1. Melooping menggunakan for p in np.arange(Bb+(3*h),Ba-h+e,3*h):
3.16.1.1. Menghitung sigman3 = sigman3 + (2*f(p))
3.17. Menghitung hasil integral ftrapezoid = (h/2)*(f(Bb) + (2*sigmatrapezoid) + f(Ba))
3.18. Menghitung hasil integral fsimpson13 = (h/3)*(f(Bb) +(4*sigmaoddsimpson13) +
(2*sigmaevensimpson13)+f(Ba))
3.19. Menghitung hasil integral fsimpson38 = ((3*h)/8)*(f(Bb) + sigman3 + sigman1 +
sigman2 + f(Ba))
3.20. Menghitung hasil integral sebenarnya freal = quad(f,Bb,Ba)[0]
3.21. Menghitung Error_trapezoid = abs((freal-ftrapezoid)/freal*100)
3.22. Menghitung Error_simpson13 = abs((freal-fsimpson13)/freal*100)
3.23. Menghitung Error_simpson38 = abs((freal-fsimpson38)/freal*100)
3.24. Mencetak freal
3.25. Mencetak (ftrapezoid,Error_trapezoid)
3.26. Mencetak (fsimpson13,Error_simpson13)
3.27. Mencetak (fsimpson38, Error_simpson38)
3.28. Menyelesaikan Program

5
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

Results
#Jika Banyak Kenaikan (Banyak Subinterval) = 9

#Jika Banyak Kenaikan (Banyak Subinterval) = 4

#Jika Banyak Kenaikan (Banyak Subinterval) = 15

6
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

Disscussion
Untuk menghitung Energi Potensial Gravitasi antar 2 benda, maka perlu diketahui fungsi
energi potensial gravitasi-nya. Pada kasus ini diketahui :
𝑟𝑓 12
𝐺𝑀𝑚 (1,600.8)
∆𝑈 = ∫ 𝑑𝑟 = ∫ 𝑑𝑟
𝑟2 225
𝑟𝑖 3

Sehingga dapat kita masukan pada program Batas bawah integral = 3 dan Batas atas integral =
12. Untuk masukan Jumlah kenaikan (banyak subinterval) digunakan variasi = 9, 4, dan 15.

Pada Jumlah kenaikan (banyak subinterval) = 9, diketahui bahwa panjang sub interval (h) = 1.
Nilai error relatif = 0% untuk metode trapezoid dan simpson3/8, sedangkan untuk metode
simpson1/3 memiliki nilai error relative = 3.7037%, dimana hasil integralnya adalah 64.0320
untuk trapezoid dan simpson3/8 sama nilainya dengan integral sebenarnya.

Pada Jumlah kenaikan (banyak subinterval) = 4, diketahui bahwa panjang sub interval (h) =
2.25. Nilai error relatif = 0% untuk metode trapezoid dan simpson1/3, sedangkan pada metode
simpson3/8 error relatif = 6.2500 %, dimana hasil integralnya adalah 60.0300, sedangkan nilai
integral sebenarnya adalah 64.0320.

Pada Jumlah kenaikan (banyak subinterval) = 15, diketahui bahwa panjang sub interval (h) =
0.6. Nilai error relatif = 0% untuk metode trapezoid dan simpson3/8, sedangkan pada metode
simpson1/3 error relatif = 2.2222 %, dimana hasil integralnya adalah 62.6091, sedangkan nilai
integral sebenarnya adalah 64.0320.

7
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

Attachments
#Flowchart

8
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

#Source Code
print ("Menentukan Energi Potensial Gravitasi Antara 2 Benda dengan Teknik Integral
Numerik")
print ("Nama : Galih Muhammad Ghufron")
print ("NRM : 1306619059")
print ("-------------------------------------------------------")

import numpy as np
from scipy.integrate import quad

f = lambda r: (1600.8/225)
print ("fungsi F(r) = (1600.8/225)")
Bb = float(input('Batas Bawah Integral: ')); Ba = float(input('Batas Atas Integral: ')); n =
int(input('Jumlah kenaikan (banyak subinterval): '))
sigmatrapezoid = 0; sigmaevensimpson13 = 0; sigmaoddsimpson13 = 0
sigman1 = 0; sigman2 = 0; sigman3 = 0
e = 10e-12
h = (Ba-Bb)/n
print ("panjang subinterval (h) = ",h)

for i in np.arange(Bb+h,Ba-h+e,h):
sigmatrapezoid = sigmatrapezoid + f(i)
if sigmaoddsimpson13==0:
for j in np.arange(Bb+h,Ba-h+e,2*h):
sigmaoddsimpson13 = sigmaoddsimpson13 + f(j)
if sigmaevensimpson13==0:

9
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

for k in np.arange(j+h,Ba-h+e,2*h):
sigmaevensimpson13 = sigmaevensimpson13 + f(k)

if sigman1==0:
for p in np.arange(Bb+h,Ba-h+e,3*h):
sigman1 = sigman1 + (3*f(p))
if sigman2==0:
for p in np.arange (Bb+(2*h),Ba-h+e,3*h):
sigman2 = sigman2 + (3*f(p))
if sigman3==0:
for p in np.arange(Bb+(3*h),Ba-h+e,3*h):
sigman3 = sigman3 + (2*f(p))

ftrapezoid = (h/2)*(f(Bb) + (2*sigmatrapezoid) + f(Ba))


fsimpson13 = (h/3)*(f(Bb) +(4*sigmaoddsimpson13) + (2*sigmaevensimpson13)+f(Ba))
fsimpson38 = ((3*h)/8)*(f(Bb) + sigman3 + sigman1 + sigman2 + f(Ba))
freal = quad(f,Bb,Ba)[0]
Error_trapezoid = abs((freal-ftrapezoid)/freal*100)
Error_simpson13 = abs((freal-fsimpson13)/freal*100)
Error_simpson38 = abs((freal-fsimpson38)/freal*100)
print ()
print ("Nilai integral sebenarnya (freal) = ",freal)
print ("Trapezoid = {:.4f} \t Error Trapezoid = {:.4f}".format(ftrapezoid,Error_trapezoid))
print ("Simpson1/3 = {:.4f} \t Error Simpson1/3 =
{:.4f}".format(fsimpson13,Error_simpson13))
print ("Simpson3/8 = {:.4f} \t Error Simpson3/8 = {:.4f}".format(fsimpson38,
Error_simpson38))

10

Anda mungkin juga menyukai