Anda di halaman 1dari 16

Laporan Praktikum

Komputasi Numerik

AP - 07
Integrasi Numerik
Nama : Kevin Bazli Santoso
NPM : 140310220033
Hari/Tanggal : Jumat/5 May 2023
Waktu : 07:30 - 16:30
Asisten : Azhar Aiman Dzulfiqar

LABORATORIUM KOMPUTASI
DEPARTEMEN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS PADJADJARAN
2023
LEMBAR PENGESAHAN

KN 07
Integrasi Numerik

Nama : Kevin Bazli Santoso


NPM : 140310220033
Hari / Tanggal : Jumat/05 May 2023
Waktu / Sesi : 07:30 - 16:30
Asisten : Azhar Aiman Dzulfiqar

Pretest Laporan Akhir

Jatinangor, Tanggal Bulan 2023


Asisten

( )
1. Tujuan Mahasiswa
Mahasiswa mampu mengaproksimasi suatu kelompok data dengan
pendekatan suatu fungsi menggunakan metode regresi.
2. Percobaan
2.1. Aproksimasi integral-integral berikut menggunakan metode
trapesium dengan nilai 𝑁 ∈ {2,4,6,8,16,32,64}
2.1.1. 𝟐
∫−𝟐 𝒙𝒆𝟐 𝒅𝒙
2.1.1.1. Listing Program
import numpy as np

a=float(input("masukkan nilai a: "))


b=float(input("masukkan nilai b: "))
n=int(input("masukkan nilai n: "))

def f(x):
x*np.exp(2*x)
h=(b-a)/n
I=f(a)+f(b)
for i in range (1, n-1):
i=0
j = a+(i*h)
I += 2*f(j)
I =* h/2
print(I)
2.1.1.2. Tampilan Program
2.1.1.2.1. Untuk N = 2

2.1.1.2.2. Untuk N = 4

2.1.1.2.3. Untuk N = 8

2.1.1.2.4. Untuk N = 16
2.1.1.2.5. Untuk N = 32

2.1.1.2.6. Untuk N = 64

2.1.2. ∫𝟏 𝐥𝐧⁡(𝟏+𝒙) 𝒅𝒙
𝟎 𝒙
2.1.2.1. Listing Program
import numpy as np

a=float(input("masukkan nilai a: "))


b=float(input("masukkan nilai b: "))
n=int(input("masukkan nilai n: "))

def f(x):
return (np.log(1+x)/x)
h=(b-a)/n
I=f(a)+f(b)
for i in range (1, n-1):
i=0
j = a+(i*h)
I += 2*f(j)
I *= h/2
print(I)

2.1.2.2. Tampilan Program


2.1.2.2.1. Untuk N = 2

2.1.2.2.2. Untuk N = 4 – 64
Nan juga
2.1.3. ∫𝟐 𝒙𝒔𝒊𝒏(𝒙)
𝟎 (𝒙−𝟏 )𝟐

2.1.3.1. Listing Program


import numpy as np

a=float(input("masukkan nilai a: "))


b=float(input("masukkan nilai b: "))
n=int(input("masukkan nilai n: "))
def f(x):
return (x*np.sin(x)/(x-1)**2)
h=(b-a)/n
I=f(a)+f(b)
for i in range (1, n-1):
i=0
j = a+(i*h)
I += 2*f(j)
I *= h/2
print(I)
2.1.3.2. Tampilan Program
2.1.3.3. Untuk N = 2

2.1.3.4. Untuk N = 4

2.1.3.5. Untuk N = 8

2.1.3.6. Untuk N = 16

2.1.3.7. Untuk N = 32

2.1.3.8. Untuk N = 64

2.1.4. Analisa Program


Untuk menyelsaikan soal nomor 1 dibuat lah program yang dibuat
untuk untuk menghitung nilai integral numerik dari suatu fungsi
matematika menggunakan metode trapesium. Program ini akan
menerima tiga input nilai yaitu a, b, dan n dari user, yang dimana a dan
b merupakan batas-batas integral dan n adalah jumlah trapesium yang
akan digunakan untuk menghitung integral.

Selanjutnya, program akan mendefinisikan sebuah fungsi bernama f(x)


yang merepresentasikan fungsi matematika yang ingin dihitung
integralnya. Dalam hal ini, fungsi f(x) merupakan fungsi dari nilai
pada soal yaitu x*np.exp(2*x), (np.log(1+x)/x), dan (x*np.sin(x)/(x-
1)**2)
Kemudian, program menghitung nilai h (tinggi trapesium) berdasarkan
selisih b-a dan jumlah trapesium n. Kemudian program menghitung
nilai integral (I) numerik dengan menggunakan metode trapesium.

Pada metode trapesium, integral numerik dihitung dengan menghitung


luas trapesium-trapesium dengan lebar h (tinggi trapesium) dan tinggi
masing-masing trapesium yang dihitung dengan memasukkan nilai-
nilai x pada fungsi f(x).

Dalam program ini, luas dari dua ujung trapesium (f(a) dan f(b)) sudah
dihitung terlebih dahulu diluar loop. Kemudian, program akan
melakukan looping sebanyak n-1 kali, dan pada setiap iterasi, program
akan menghitung nilai f(x) pada titik tengah masing-masing trapesium
dan mengalikannya dengan 2. Setelah looping selesai, program
mengalikan hasil dengan tinggi trapesium h, kemudian nilai I diubah
dengan mencari nilai I *= h/2 dan kemudian program menampilkan
hasil integral numerik.
Untuk persamaan kedua niliai nan ada karena adanya operasi
pembagian bilangan nol (0). Pada fungsi f(x), terdapat pembagian
dengan variabel x, sehingga jika nilai x sama dengan 0, akan terjadi
pembagian dengan nol yang akan menghasilkan nilai tak terdefinisi
(undefined) atau nan. Hal ini bisa dihindari dengan menambahkan nilai
mendekati 0 seperti 1 x 10^15 hanya untuk menghindari nilai nan.
2.2. Ulangi percobaan no.1 dengan menggunakan metode Simpson 1/3
2.3. Ulangi percobaan no.1 dengan menggunakan metode Simpson 3/8
2.3.1. Listing Program
2.3.1.1. Untuk Simpson 1/3

2.3.1.2. Untuk Simpson 3/8


#Simpson 1/3
def fungsi(x):
return x*np.exp(2*x)
a=float(input("masukkan nilai a"))
b=float(input("masukkan nilai b"))
n=int(input("masukkan nilai n"))

h=(b-a)/n
I=fungsi(a)+fungsi(b)

for i in range (1, n-1):


j=a+(i*h)
if i % 2 == 0:
I+=2*fungsi(j)
else:
I += 4*fungsi(j)
I*=h/3
print(I)

#Simpson 3/8
def fungsi(x):
return x*np.exp(2*x)
a=float(input("masukkan nilai a"))
b=float(input("masukkan nilai b"))
n=int(input("masukkan nilai n"))

h=(b-a)/n
I=fungsi(a)+fungsi(b)

for i in range (1, n-1):


j=a+(i*h)
if i % 3 == 0:
I+=2*fungsi(j)
else:
I += 3*fungsi(j)
I*=(3/8)*h
print(I)

2.3.2. Tampilan Program


2.3.2.1. Untuk N = 2
2.3.2.1.1. Simpson 1/3
2.3.2.1.1.1. Fungsi 1

2.3.2.1.1.2. Fungsi 2

2.3.2.1.1.3. Fungsi 3

2.3.2.1.2. Simpson 3/8


2.3.2.1.2.1. Fungsi 1

2.3.2.1.2.2. Fungsi 2

2.3.2.1.2.3. Fungsi 3
2.3.2.2. Untuk N = 4
2.3.2.2.1. Simpson 1/3
2.3.2.2.1.1. Fungsi 1

2.3.2.2.1.2. Fungsi 2

2.3.2.2.1.3. Fungsi 3

2.3.2.2.2. Simpson 3/8


2.3.2.2.2.1. Fungsi 1

2.3.2.2.2.2. Fungsi 2

2.3.2.2.2.3. Fungsi 3

2.3.2.3. Untuk N = 8
2.3.2.3.1. Simpson 1/3
2.3.2.3.1.1. Fungsi 1

2.3.2.3.1.2. Fungsi 2

2.3.2.3.1.3. Fungsi 3

2.3.2.3.2. Simpson 3/8


2.3.2.3.2.1. Fungsi 1

2.3.2.3.2.2. Fungsi 2

2.3.2.3.2.3. Fungsi 3

2.3.2.4. Untuk N = 16
2.3.2.4.1. Simpson 1/3
2.3.2.4.1.1. Fungsi 1

2.3.2.4.1.2. Fungsi 2
2.3.2.4.1.3. Fungsi 3

2.3.2.4.2. Simpson 3/8


2.3.2.4.2.1. Fungsi 1

2.3.2.4.2.2. Fungsi 2

2.3.2.4.2.3. Fungsi 3

2.3.2.5. Untuk N = 32
2.3.2.5.1. Simpson 1/3
2.3.2.5.1.1. Fungsi 1

2.3.2.5.1.2. Fungsi 2

2.3.2.5.1.3. Fungsi 3

2.3.2.5.2. Simpson 3/8


2.3.2.5.2.1. Fungsi 1
2.3.2.5.2.2. Fungsi 2

2.3.2.5.2.3. Fungsi 3

2.3.2.6. Untuk N = 64
2.3.2.6.1. Simpson 1/3
2.3.2.6.1.1. Fungsi 1

2.3.2.6.1.2. Fungsi 2

2.3.2.6.1.3. Fungsi 3

2.3.2.6.2. Simpson 3/8


2.3.2.6.2.1. Fungsi 1

2.3.2.6.2.2. Fungsi 2

2.3.2.6.2.3. Fungsi 3
2.3.3. Analisa Program
Untuk soal nomor 2 dibuatlah program dengan program yang berada
diatas merupakan program metode Simpson 1/3 untuk menghitung
nilai integral numerik dari suatu fungsi dimana fungsi adalah fungsi
pada nomor 1. Program kemudian akan meminta input dari user berupa
batas-batas integrasi untuk variabel a dan b, serta jumlah interval n.
Kemudian program menghitung tinggi trapesium h dan nilai integral
numerik menggunakan metode Simpson 1/3.

Pada setiap interval, program memeriksa apakah nilai indeks i ganjil


atau genap. Jika i genap, maka program menggunakan koefisien 2
untuk menghitung kontribusi dari titik tengah interval, sedangkan jika
i ganjil, maka program menggunakan koefisien 4. Setelah itu, program
menghitung nilai integral numerik dengan menjumlahkan semua
kontribusi dari setiap interval. Terakhir, program mengalikan nilai
integral numerik dengan faktor h/3 untuk menghitung nilai integral
numerik akhir.

Untuk program kedua untuk 3/8 simpson pada setiap interval, program
akan memeriksa apakah nilai indeks i merupakan kelipatan 3 atau
bukan. Jika i merupakan kelipatan 3, maka program menggunakan
koefisien 2 untuk menghitung kontribusi dari titik tengah interval,
sedangkan jika i bukan kelipatan 3, maka program menggunakan
koefisien 3. Setelah itu, program menghitung nilai integral numerik
dengan menjumlahkan semua kontribusi dari setiap interval.

Dalam teori integrasi numerik, metode Simpson 1/3 merupakan


metode yang lebih akurat daripada metode trapesium karena
menggunakan polinomial orde tinggi (yaitu orde 2) untuk
mengaproksimasi fungsi yang akan diintegralkan dan metode Simpson
3/8 adalah metode yang lebih akurat dari metode Simpson 1/3 karena
menggunakan polinomial orde lebih tinggi (yaitu orde 3)
3. Tugas Akhir
3.1.

3.1.1. Listing Program


#Trapesium 1/3 (Cara I)
a=0.0
b=10.0
n=150
def f(x):
return (9.8*68.1/12.5)*(1-(np.exp(-
(12.5*10)/68.1)))
x = symbols('x')
y = (9.8*68.1/12.5)*(1-(np.exp((-12.5*10)/68.1)))
h=(b-a)/n
I=f(a)+f(b)
#print(h)
for i in range (1, n-1):
j = a+(i*h)
I += 2*f(j)
I*=h/2
z = integrate(y,(x,a,b))
result = z.subs(x,1).evalf()
e = abs(result-I)
print("Hasil Metode : {}".format(I))
print("Hasil Eksak : {}".format(result))
print("Besar galat : {}".format(e))
3.1.2. Tampilan Program

3.1.3. Analisa Program


Menggunakan metode trepesium dapat dibuat program untuk
menghitung nilai integral numerik dari suatu fungsi. Dengan begitu
program diatas dibuat. Pada awal program akan menginput nilai
batas-batas integrasi untuk variabel a dan b, dan juga nilai interval
(n) kemudian prohram akan menjalankan logaritma yang sama
seperti program trapezium. Praktikan menambahkan nilai galat
untuk melihat seberapa jauh nilai yang didapatkan dengan nilai
eksak
3.2. Bandingkan hasil percobaan untuk metode trapesium, simpson
1/3, dan simpson 3/8
3.2.1. Tampilan Program
Simpson 1/3
a=0.0
b=10.0
n=150
def fungsi(x):
return (9.8*68.1/12.5)*(1-(np.exp(-
(12.5*10)/68.1)))
x = symbols('x')
y = (9.8*68.1/12.5)*(1-(np.exp((-12.5*10)/68.1)))
h=(b-a)/n
I=f(a)+f(b)
for i in range (1, n-1):
j=a+(i*h)
if i % 2 == 0:
I+=2*fungsi(j)
else:
I += 4*fungsi(j)
I*=h/3
z = integrate(y,(x,a,b))
result = z.subs(x,1).evalf()
e = abs(result-I)
print("Hasil Metode : {}".format(I))
print("Hasil Eksak : {}".format(result))
print("Besar galat : {}".format(e))
3.2.2. Tampilan Program
3.2.2.1. Untuk 1/3 simpson

3.2.2.2. Untuk 3/8 simpson

3.3. Analisa Data


Untuk program 1/3 simpson dan 3/8 simpson memiliki galat yang
lebih besar?
4. Kesimpulan
Pada praktikum ini praktikan dapat menghitung integral secara numerik dari
suatu fungsi menggunakan metode segi empat, trapezium, titik tengah, dan
trapezium.
Ada metode yang dipelajari pada praktikum ini yaitu metode 1/3 simpson, 3/8
simpson, dan trapezium dimana trapezium merupakan metode paling
sederhana.

Anda mungkin juga menyukai