Anda di halaman 1dari 14

LABORATORIUM FISIKA KOMPUTASI

PROGRAM STUDI FISIKA


UNIVERSITAS NEGERI JAKARTA

LABORATORY REPORT Tanggal: 20 Mei 2021

Nama : Galih Muhammad Ghufron


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

PROBLEM STATEMENT
Menghitung turunan fungsi serta nilainya pada persamaan Energi Potensial Pegas
1
(𝐸𝑝 = 2 × 𝑘 × ∆𝑥 2 ) dengan menggunakan turunan numerik serta dengan menggunakan teknik

Forward, Backward, dan Central pada program Python.

MATHEMATICAL EQUATIONS
1. Rumus energi potensial pegas
1
(𝐸𝑝 = 2 × 𝑘 × ∆𝑥 2 )

2. Bentuk umum definisi turunan (derivative)


𝑓(𝑥 + ℎ) − 𝑓(𝑥)
𝑓 ′ (𝑥) = lim
ℎ→0 ℎ
3. Rumus Hampiran selisih maju (forward difference approximation)
𝑓(𝑥0 + ℎ) − 𝑓(𝑥0 ) 𝑓1 − 𝑓0
𝑓 ′ (𝑥0 ) = =
ℎ ℎ
Jika rumus diatas diturunkan sekali menggunakan metode Taylor ataupun dengan
hampiran polinom interpolasi maka akan mendapatkan hasil yang sama yaitu :
𝑓1 − 𝑓0
𝑓0′ = + 𝒪(ℎ)


Yang dalam hal ini 𝒪(ℎ) = 2𝑓′′ (𝑡) , 𝑥𝑖 < 𝑡 < 𝑥𝑖+1

4. Rumus hampiran selisih mundur (backward difference approximation)


𝑓(𝑥0 ) − 𝑓(𝑥0 − ℎ) 𝑓0 − 𝑓1
𝑓 ′ (𝑥0 ) = =
ℎ ℎ

1
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

Jika rumus diatas diturunkan sekali menggunakan metode Taylor ataupun dengan
hampiran polinom interpolasi maka akan mendapatkan hasil yang sama yaitu :
𝑓0 − 𝑓1
𝑓0′ = + 𝒪(ℎ)

−ℎ
Yang dalam hal ini 𝒪(ℎ) = 2𝑓′′ (𝑡) , 𝑥𝑖+1 < 𝑡 < 𝑥𝑖

5. Rumus Hampiran selisih – pusat (central difference aprromaximation)


𝑓(𝑥0 + ℎ) − 𝑓(𝑥0 ) 𝑓1 − 𝑓1
𝑓 ′ (𝑥0 ) = =
2ℎ 2ℎ
Jika rumus diatas diturunkan sekali menggunakan metode Taylor ataupun dengan
hampiran polinom interpolasi maka akan mendapatkan hasil yang sama yaitu :
𝑓1 − 𝑓1
𝑓0′ = + 𝒪(ℎ2 )
2ℎ
−ℎ
Yang dalam hal ini 𝒪(ℎ2 ) = , 𝑥𝑖−1 < 𝑡 < 𝑥𝑖+1
6𝑓 ′′ (𝑡)

6. Rumus mencari Error mutlak :


𝐸𝑟𝑟𝑜𝑟 𝑎𝑏𝑠 = |𝑎𝑝𝑟𝑜𝑘𝑠𝑖𝑚𝑎𝑠𝑖 𝑓 ′ (𝑥0 ) − 𝑡𝑟𝑢𝑒 𝑣𝑎𝑙𝑢𝑒 𝑓 ′ (𝑥0 )|

2
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

METHODS AND ALGORITHM


1. Memulai program
2. Mencetak judul & identitas
3. Meng-import numpy sebagai np, matplotlib.pyplot sebagai plt, dan sympy
4. Menginisiasi konstanta pegas sebesar 9,8
5. Memasukkan variabel bebas x sebagai vab
6. Memasukkan fungsi yang akan dihitung sebagai f
7. Memasukkan nilai turunan yang dicari (x) sebagai vat
8. Memasukan batas bawah sebagai Bb
9. Memasukan batas atas sebagai Ba
10. Memasukan selisih sebagai Dfr
11. Menginisiasi df = diff(f,Symbol(varb))
12. Menginisiasi A = lambdify(Symbol(vab),df)
13. Menginisiasi B = lambdify(Symbol(vab), f)
14. Mencetak nilai turunan pertama (df), nilai dengan (x) (A(vat)), dan kepala tabel
15. Menginisiasi n = 1
16. Membuat list untuk Forward Derivative, Backward Derivative, dan Central Derivative
17. Membuat pengulangan for j in range(Bb, Ba, Dfr):
17.1. Jika j = 0 maka lanjut
17.2. Menghitung forward derivative = (B(vat+j) - B(vat))/j
17.3. Menghitung backward derivative = (B(vat) - B(vat-j))/j
17.4. Menghitung central derivative = (B(vat+j) - B(vat-j))/(2*j)
17.5. Memasukkan variabel ke dalam list dengan : list_n.append(n),
list_dfor.append(dfor), list_dcen.append(dcen),
list_dback.append(dback)
17.6. Mencetak tabel dengan format
17.7. Menginisiasi n+=1

3
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

18. Mem-plot variabel yang telah dicari ke dalam grafik serta membuat
keterangan symbol plt.legend ([‘forward derivative’,’backward
derivative’, ’central derivative’])
19. Membuat sumbu x sebagai “iteration” dan sumbu y sebagai “forward, backward, dan
central derivative value”
20. Membuat judul grafik
21. Mencetak grafik
22. Menyelesaikan program

4
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

RESULTS
#Output Program

#Output Grafik forward derivative vs iterasi

5
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

#Output Grafik backward derivative vs iterasi

#Output Grafik central derivative vs iterasi

6
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

DISCUSSION
Praktikum modul 5 kali ini adalah tentang turunan numerik, di mana dengan sebuah fungsi
suatu kasus fisika kita diharuskan mencari Forward derivative, Backward derivative, dan
Central derivative. Saya mengambil kasus energi potensial pegal untuk diturunkan dengan
konstanta pegas (k = 9.8).
1
Untuk menghitung turunan fungsi 𝐸𝑝 = 2 × 𝑘 × ∆𝑥 2 pada x dengan menggunakan Turunan

numerik dengan teknik Forward, Backward, dan Central, maka diperlukan masukan/input
berupa nilai vat dalam x dan j. Pada program ini nilai j dimasukan dalam bentuk range/rentang
tertentu, dengan masukan berupa batas atas, batas bawah, dan selisih.
Pada percobaan ini, diberikan masukan berupa 𝑥 = 2, batas bawah = -2, batas atas = 20, dan
selisih = 2. Kemudian didapatkan output/keluaran berupa nilai 𝐸𝑝′ (𝑥) = 𝐸𝑝′ ( 2) = 19.6 dan
tabel sebagai berikut :

Dimana n = banyaknya iterasi


Kemudian didapatkan juga beberapa grafik sebagai berikut :

7
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

8
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

Berdasarkan tabel dan grafik tersebut, dapat kita lihat bahwa semakin besar nilai h, maka
nilai turunan numerik dengan metode forward dan central akan semakin besar pula sedangkan
dengan metode backward nilai turunan akan semakin kecil.

9
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

ATTACHMENTS
#Flowchart

10
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

#Source Code
print('Nama \t: Galih Muhammad Ghufron')
print('NIM \t: 1306619059')
print('Program Mencari Akar menggunakan Metode Pendekatan Numerical Derivative\n')

import numpy as np
import matplotlib.pyplot as plt
from sympy import *

k = 9.8
vab = str(input('Variabel bebas : '))
f = input('Masukkan Fungsi : ')
vat = float(input('Nilai Turunan yang dicari :'))
Bb = int(input('Batas Bawah : '))
Ba = int(input('Batas Atas : '))
Dfr = int(input('Selisih :'))
df = diff(f,Symbol(vab))
A = lambdify(Symbol(vab),df)
B = lambdify(Symbol(vab), f)
print('Nilai Turunan Pertama :' ,df)
print('Dengan nilai :', A(vat))
print(' n\t for\tback\t Cen\t |for-dfvalue|\t |back-dfvalue|\t |Cen-dfvalue|')
n=1
list_n =[]
list_dfor =[]
list_dback =[]
list_dcen =[]

11
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

for j in range(Bb,Ba,Dfr):
if j == 0:
continue
dfor = (B(vat+j) - B(vat))/j
dback = (B(vat) - B(vat-j))/j
dcen = (B(vat+j) - B(vat-j))/(2*j)
list_n.append(n)
list_dfor.append(dfor)
list_dback.append(dback)
list_dcen.append(dcen)
print('',n,'\t',round(dfor,2),'\t',round(dback,2),'\t',round(dcen,2),'\t\t',round(abs(dfor-
A(vat)),2),'\t\t\t ',round(abs(dback-A(vat)),2),'\t\t\t',round(abs(dcen-A(vat)),2))
n+=1

plot1, = plt.plot(list_n,list_dfor,'c-o')
plt.legend([plot1],[f])
plt.xlabel('iteration (n)'); plt.ylabel('Forward derivative value')
plt.title('Graph Of Forward Derivative vs iteration')
plt.grid(); plt.show()

plot2, = plt.plot(list_n,list_dback,'r-o')
plt.legend([plot2],[f])
plt.xlabel('iteration (n)'); plt.ylabel('Backward derivative value')
plt.title('Graph Of Backward Derivative vs iteration')
plt.grid(); plt.show()

12
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

plot3, = plt.plot(list_n,list_dcen)
plt.legend([plot3],[f])
plt.xlabel('iteration (n)'); plt.ylabel('Central derivative value')
plt.title('Graph Of Central Derivative vs iteration')
plt.grid(); plt.show()

13
LABORATORIUM FISIKA KOMPUTASI
PROGRAM STUDI FISIKA
UNIVERSITAS NEGERI JAKARTA

14

Anda mungkin juga menyukai