Laporan Akhir Praktikum
Algoritma dan Pemrograman
AKN - 7
INTEGRASI NUMERIK
Nama : Wahib Al-Gifari
NPM : 140310200041
Hari/Tanggal : Selasa, 27 April 2021
Waktu : 07.30-12.30
Asisten : Muhammad Fahmi Fauzi
LABORATORIUM KOMPUTASI
DEPARTEMEN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS PADJADJARAN
2021
LEMBAR PENGESAHAN
AKN - 7
INTEGRASI NUMERIK
Nama : Wahib Al-Gifari
NPM : 140310200041
Hari / Tanggal : Selasa, 27 April 2021
Waktu / Sesi : 07.30-12.30
Asisten : Muhammad Fahmi Fauzi
Laporan Awal Presentasi Praktikum Laporan Akhir
Bandung, 5 Mei 2021
Asisten
( )
Integrasi Numerik
Rabu, 5 Mei 2021
III. Tugas Praktikum
1. Aproksimasikan integral-integral berikut menggunakan metode trapesium dengan
nilai 𝑁 ∈ {2, 4,8, 16, 32, 64}
2
a. ∫−2 𝑥𝑒 2𝑥 𝑑𝑥
Listing program
import numpy as np
def fungsi (x):
y = x*[Link](2*x)
return y
print ("f(x) = xe^(2x)")
hasileksak = 1.708172266
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
print ("iterasi" , "\t\t" , "n" , "\t" , "trapesium")
for iterasi in range(1, 7, 1):
n = 2**iterasi
h = (b-a)/n
#metode trapesium
xi = a
y = 0
for i in range (1,n):
xi = xi+h
y+= fungsi (xi)
It = (h)*((fungsi(a)+(2*y)+fungsi(b))/2)
print (iterasi , "\t\t" , n , "\t" , It)
Tampilan program
Analisis program
1) Library numpy diubah menjadi np supaya mempermudah membuat
program.
import numpy as np
2) Mendefinisikan fungsi yang akan dicari nilai integralnya
def fungsi (x):
y = x*[Link](2*x)
return y
3) Cetak fungsi yang akan diintegrasi (f(x)) dan inisialisasi hasil eksak dari
fungsi tersebut.
print ("f(x) = xe^(2x)")
hasileksak = 1.708172266
4) Input batas bawah (a) dan batas atas integral (b).
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
5) Cetak tabel untuk iterasi, banyak bilah (n), dan integrasi metode Trapesium.
print ("iterasi" , "\t\t" , "n" , "\t" , "trapesium")
6) Lakukan looping untuk iterasi yang berbeda, mulai dari 1 sampai 7, dengan
perkalian 2
for iterasi in range(1, 7, 1):
7) Hitung banyaknya bilah (n) yang merupakan 2 berpangkat dari 1 sampai 7 ,
hitung lebar setiap bilah (h), inisialisasi nilai xi sama dengan batas bawah
(a) dan luasan tengah (y) awal sama dengan 0, melakukan looping untuk
menghitung menghitung jumlah luasan yang berada di antara batas bawah
(a) dan batas atas (b), mulai dari 1 hingga n. Dimana xi = xi+h dan y +=
fungsi(xi). Lalu hitung hasil integrasi.
n = 2**iterasi
h = (b-a)/n
#metode trapesium
xi = a
y = 0
for i in range (1,n):
xi = xi+h
y+= fungsi (xi)
It = (h)*((fungsi(a)+(2*y)+fungsi(b))/2)
8) Cetak nilai iterasi, banyak bilah (n) dan nilai integrasi metode trapesium (It).
print (iterasi , "\t\t" , n , "\t" , It)
2 ln (1+𝑥)
b. ∫1 𝑑𝑥
𝑥
Listing program
import numpy as np
def fungsi (x):
y = ([Link](1+x)/x)
return y
print ("f(x) = ln(1+x)/x")
hasileksak = -0.01131424292
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
print ("iterasi" , "\t\t" , "n" , "\t" , "trapesium")
for iterasi in range(1, 7, 1):
n = 2**iterasi
h = (b-a)/n
#metode trapesium
xi = a
y = 0
for i in range (1,n):
xi = xi+h
y+= fungsi (xi)
It = (h)*((fungsi(a)+(2*y)+fungsi(b))/2)
print (iterasi , "\t\t" , n , "\t" , It)
Tampilan program
Analisis program
1) Library numpy diubah menjadi np supaya mempermudah membuat
program.
import numpy as np
2) Mendefinisikan fungsi yang akan dicari nilai integralnya
def fungsi (x):
y = ([Link](1+x)/x)
return y
3) Cetak fungsi yang akan diintegrasi (f(x)) dan inisialisasi hasil eksak dari
fungsi tersebut.
print ("f(x) = ln(1+x)/x")
hasileksak = -0.01131424292
4) Input batas bawah (a) dan batas atas integral (b).
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
5) Cetak tabel untuk iterasi, banyak bilah (n), dan integrasi metode Trapesium.
print ("iterasi" , "\t\t" , "n" , "\t" , "trapesium")
6) Lakukan looping untuk iterasi yang berbeda, mulai dari 1 sampai 7, dengan
perkalian 2
for iterasi in range(1, 7, 1):
7) Hitung banyaknya bilah (n) yang merupakan 2 berpangkat dari 1 sampai 7 ,
hitung lebar setiap bilah (h), inisialisasi nilai xi sama dengan batas bawah
(a) dan luasan tengah (y) awal sama dengan 0, melakukan looping untuk
menghitung menghitung jumlah luasan yang berada di antara batas bawah
(a) dan batas atas (b), mulai dari 1 hingga n. Dimana xi = xi+h dan y +=
fungsi(xi). Lalu hitung hasil integrasi.
n = 2**iterasi
h = (b-a)/n
#metode trapesium
xi = a
y = 0
for i in range (1,n):
xi = xi+h
y+= fungsi (xi)
It = (h)*((fungsi(a)+(2*y)+fungsi(b))/2)
8) Cetak nilai iterasi, banyak bilah (n) dan nilai integrasi metode trapesium (It).
print (iterasi , "\t\t" , n , "\t" , It)
3 𝑥 𝑠𝑖𝑛𝑥
c. ∫2 (𝑥−1)2
𝑑𝑥
Listing program
import numpy as np
def fungsi (x):
y = (x*[Link](x)/(x-1)**2)
return y
print ("f(x) = x sin(x)/(x-1)^2")
hasileksak = -0.2687117212
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
print ("iterasi" , "\t" , "n" , "\t" , "trapesium")
for iterasi in range(1, 7, 1):
n = 2**iterasi
h = (b-a)/n
#metode trapesium
xi = a
y = 0
for i in range (1,n):
xi = xi+h
y+= fungsi (xi)
It = (h)*((fungsi(a)+(2*y)+fungsi(b))/2)
print (iterasi , "\t\t\t" , n , "\t" , It)
Tampilan program
Analisis program
1) Library numpy diubah menjadi np supaya mempermudah membuat
program.
import numpy as np
2) Mendefinisikan fungsi yang akan dicari nilai integralnya
def fungsi (x):
y = (x*[Link](x)/(x-1)**2)
return y
3) Cetak fungsi yang akan diintegrasi (f(x)) dan inisialisasi hasil eksak dari
fungsi tersebut.
print ("f(x) = x sin(x)/(x-1)^2")
hasileksak = -0.2687117212
4) Input batas bawah (a) dan batas atas integral (b).
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
5) Cetak tabel untuk iterasi, banyak bilah (n), dan integrasi metode Trapesium.
print ("iterasi" , "\t\t" , "n" , "\t" , "trapesium")
6) Lakukan looping untuk iterasi yang berbeda, mulai dari 1 sampai 7, dengan
perkalian 2
for iterasi in range(1, 7, 1):
7) Hitung banyaknya bilah (n) yang merupakan 2 berpangkat dari 1 sampai 7 ,
hitung lebar setiap bilah (h), inisialisasi nilai xi sama dengan batas bawah
(a) dan luasan tengah (y) awal sama dengan 0, melakukan looping untuk
menghitung menghitung jumlah luasan yang berada di antara batas bawah
(a) dan batas atas (b), mulai dari 1 hingga n. Dimana xi = xi+h dan y +=
fungsi(xi). Lalu hitung hasil integrasi.
n = 2**iterasi
h = (b-a)/n
#metode trapesium
xi = a
y = 0
for i in range (1,n):
xi = xi+h
y+= fungsi (xi)
It = (h)*((fungsi(a)+(2*y)+fungsi(b))/2)
8) Cetak nilai iterasi, banyak bilah (n) dan nilai integrasi metode trapesium (It).
print (iterasi , "\t\t" , n , "\t" , It)
2. Aproksimasi integral-integral berikut menggunakan metode Simpson 1/3 dengan
nilai 𝑁 ∈ {2,4,8,16,32,64}
2
a. ∫−2 𝑥𝑒 2𝑥 𝑑𝑥
Listing program
import numpy as np
def fungsi (x):
y = x*[Link](2*x)
return y
print ("f(x) = xe^(2x)")
hasileksak = 1.71144
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
print ("iterasi" , "\t" , "n" , "\t" , "Simpson1/3")
for iterasi in range(1, 7, 1):
n = 2**iterasi
h = (b-a)/n
#metode simpson 1/3
jmlganjil = 0
jmlgenap = 0
xi = a+h
xj = a+(a*h)
for isimpson in range (1,n,2):
jmlganjil += fungsi(xi)
xi += (2*h)
for jsimpson in range (2,n-1,2):
jmlgenap += fungsi(xj)
xj += (2*h)
Is = (h)*((fungsi (a)+(4*jmlganjil)+(2*jmlgenap)+fungsi
(b))/3)
print (iterasi , "\t\t\t" , n , "\t" , Is)
Tampilan program
Analisis program
1) Library numpy diubah menjadi np supaya mempermudah membuat
program.
import numpy as np
2) Mendefinisikan fungsi yang akan dicari nilai integralnya
def fungsi (x):
y = x*[Link](2*x)
return y
3) Cetak fungsi yang akan diintegrasi (f(x)) dan inisialisasi hasil eksak dari
fungsi tersebut.
print ("f(x) = xe^(2x)")
hasileksak = 1.71144
4) Input batas bawah (a) dan batas atas integral (b).
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
5) Cetak tabel untuk iterasi, banyak bilah (n), dan integrasi metode Simpson
1/3.
print ("iterasi" , "\t\t" , "n" , "\t" , "Simpson1/3")
6) Lakukan looping untuk iterasi yang berbeda, mulai dari 1 sampai 7, dengan
perkalian 2
for iterasi in range(1, 7, 1):
7) Untuk integrasi Simpson 1/3, inisialisasi jumlah bilah ganjil dan genap sama
dengan nol, hitung batas baru untuk bilah ganjil (xi) adalah (xi=a+h) dan
hitung batas baru untuk bilah genap (xj) adalah (xj=a+(2*h)). Lalu lakukan
looping untuk luasan bilah ganjil mulai dari 1 hingga n-1 dengan selisih dua
angka. Hitung luasan bilah ganjil (jmlganjil += fungsi(xi)) dan menghitung
batas baru (xi) dimana batas bilah lama ditambah dengan dua lebar bilah
(xi+=(2*h)). Lalu lakukan looping untuk luasan bilah genap dari 2 hingga
n-2 dengan selisih dua angka. Hitung luasan bilah genap
(jmlgenap+=fungsi(xj)). Dan hitung batas baru (xj) dimana batas bilah lama
ditambah dengan dua lebar bilah (xj+=(2*h)).
jmlganjil = 0
jmlgenap = 0
xi = a+h
xj = a+(a*h)
for isimpson in range (1,n,2):
jmlganjil += fungsi(xi)
xi += (2*h)
for jsimpson in range (2,n-1,2):
jmlgenap += fungsi(xj)
xj += (2*h)
8) Hitung nilai integrasi Simpson (Is)
Is = (h)*((fungsi (a)+(4*jmlganjil)+(2*jmlgenap)+fungsi
(b))/3)
9) Cetak nilai iterasi, banyak bilah (n), serta nilai integrasi Simpson (Is)
print (iterasi , "\t\t\t" , n , "\t" , Is)
2 ln (1+𝑥)
b. ∫1 𝑑𝑥
𝑥
Listing program
import numpy as np
def fungsi (x):
y = ([Link](1+x)/x)
return y
print ("f(x) = ln(1+x)/x")
hasileksak = -0.01131424292
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
print ("iterasi" , "\t" , "n" , "\t" , "Simpson1/3")
for iterasi in range(1, 7, 1):
n = 2**iterasi
h = (b-a)/n
#metode simpson 1/3
jmlganjil = 0
jmlgenap = 0
xi = a+h
xj = a+(a*h)
for isimpson in range (1,n,2):
jmlganjil += fungsi(xi)
xi += (2*h)
for jsimpson in range (2,n-1,2):
jmlgenap += fungsi(xj)
xj += (2*h)
Is = (h)*((fungsi (a)+(4*jmlganjil)+(2*jmlgenap)+fungsi
(b))/3)
print (iterasi , "\t\t\t" , n , "\t" , Is)
Tampilan program
Analisis program
1) Library numpy diubah menjadi np supaya mempermudah membuat
program.
import numpy as np
2) Menentukan definisi fungsi yang akan dicari nilai integral nya.
def fungsi (x):
y = ([Link](1+x)/x)
return y
3) Cetak fungsi yang akan diintegrasi dan inisialisasi hasil eksak dari fungsi
tersebut.
print ("f(x) = ln(1+x)/x")
hasileksak = -0.01131424292
4) Masukkan batas bawah integral (a) dan batas atas integral (b) dengan
perintah meng-input.
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
5) Cetak tabel untuk iterasi, banyaknya bilah (n), dan integrasi Simpson 1/3.
print ("iterasi" , "\t" , "n" , "\t" , "Simpson1/3")
6) Lakukan looping untuk iterasi yang berbeda, mulai dari 1 sampai 7 dengan
kelipatan kali 2
for iterasi in range(1, 7, 1):
n = 2**iterasi
h = (b-a)/n
7) Untuk integrasi Simpson 1/3, inisialisasi jumlah bilah ganjil dan genap sama
dengan nol, hitung batas baru untuk bilah ganjil (xi) adalah (xi=a+h) dan
hitung batas baru untuk bilah genap (xj) adalah (xj=a+(2*h)). Lalu lakukan
looping untuk luasan bilah ganjil mulai dari 1 hingga n-1 dengan selisih dua
angka. Hitung luasan bilah ganjil (jmlganjil += fungsi(xi)) dan menghitung
batas baru (xi) dimana batas bilah lama ditambah dengan dua lebar bilah
(xi+=(2*h)). Lalu lakukan looping untuk luasan bilah genap dari 2 hingga
n-2 dengan selisih dua angka. Hitung luasan bilah genap
(jmlgenap+=fungsi(xj)). Dan hitung batas baru (xj) dimana batas bilah lama
ditambah dengan dua lebar bilah (xj+=(2*h)).
jmlganjil = 0
jmlgenap = 0
xi = a+h
xj = a+(a*h)
for isimpson in range (1,n,2):
jmlganjil += fungsi(xi)
xi += (2*h)
for jsimpson in range (2,n-1,2):
jmlgenap += fungsi(xj)
xj += (2*h)
8) Hitung nilai integrasi Simpson 1/3 (Is)
Is = (h)*((fungsi (a)+(4*jmlganjil)+(2*jmlgenap)+fungsi
(b))/3)
9) Cetak nilai iterasi, banyak bilah (n), dan integrasi Simpson 1/3 (Is)
print (iterasi , "\t\t\t" , n , "\t" , Is)
3 𝑥 sin(𝑥)
c. ∫2 (𝑥−1)2
𝑑𝑥
Listing program
import numpy as np
def fungsi (x):
y = (x*[Link](x)/(x-1)**2)
return y
print ("f(x) = x sin(x)/(x-1)^2")
hasileksak = -0.2687117212
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
print ("iterasi" , "\t" , "n" , "\t" , "Simpson 1/3")
for iterasi in range(1, 7, 1):
n = 2**iterasi
h = (b-a)/n
jmlganjil = 0
jmlgenap = 0
xi = a+h
xj = a+(a*h)
for isimpson in range (1,n,2):
jmlganjil += fungsi(xi)
xi += (2*h)
for jsimpson in range (2,n-1,2):
jmlgenap += fungsi(xj)
xj += (2*h)
Is = (h)*((fungsi (a)+(4*jmlganjil)+(2*jmlgenap)+fungsi
(b))/3)
print (iterasi , "\t\t\t" , n , "\t" , Is)
Tampilan program
Analisis program
1) Library numpy diubah menjadi np supaya mempermudah membuat
program.
import numpy as np
2) Menentukan definisi fungsi yang akan dicari nilai integral nya.
def fungsi (x):
y = (x*[Link](x)/(x-1)**2)
return y
3) Cetak fungsi yang akan diintegrasi dan inisialisasi hasil eksak dari fungsi
tersebut.
print ("f(x) = x sin(x)/(x-1)^2")
hasileksak = -0.2687117212
4) Masukkan batas bawah integral (a) dan batas atas integral (b) dengan
perintah meng-input.
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
5) Cetak tabel untuk iterasi, banyaknya bilah (n), dan integrasi Simpson 1/3.
print ("iterasi" , "\t" , "n" , "\t" , "Simpson1/3")
6) Lakukan looping untuk iterasi yang berbeda, mulai dari 1 sampai 7 dengan
kelipatan kali 2
for iterasi in range(1, 7, 1):
n = 2**iterasi
h = (b-a)/n
7) Untuk integrasi Simpson 1/3, inisialisasi jumlah bilah ganjil dan genap sama
dengan nol, hitung batas baru untuk bilah ganjil (xi) adalah (xi=a+h) dan
hitung batas baru untuk bilah genap (xj) adalah (xj=a+(2*h)). Lalu lakukan
looping untuk luasan bilah ganjil mulai dari 1 hingga n-1 dengan selisih dua
angka. Hitung luasan bilah ganjil (jmlganjil += fungsi(xi)) dan menghitung
batas baru (xi) dimana batas bilah lama ditambah dengan dua lebar bilah
(xi+=(2*h)). Lalu lakukan looping untuk luasan bilah genap dari 2 hingga
n-2 dengan selisih dua angka. Hitung luasan bilah genap
(jmlgenap+=fungsi(xj)). Dan hitung batas baru (xj) dimana batas bilah lama
ditambah dengan dua lebar bilah (xj+=(2*h)).
jmlganjil = 0
jmlgenap = 0
xi = a+h
xj = a+(a*h)
for isimpson in range (1,n,2):
jmlganjil += fungsi(xi)
xi += (2*h)
for jsimpson in range (2,n-1,2):
jmlgenap += fungsi(xj)
xj += (2*h)
8) Hitung nilai integrasi Simpson 1/3 (Is)
Is = (h)*((fungsi (a)+(4*jmlganjil)+(2*jmlgenap)+fungsi
(b))/3)
9) Cetak nilai iterasi, banyak bilah (n), dan integrasi Simpson 1/3 (Is)
print (iterasi , "\t\t\t" , n , "\t" , Is)
3. Aproksimasi integral-integral berikut menggunakan metode Simpson 3/8 dengan
nilai 𝑁 ∈ {2,4,8,16,32,64}
2
a. ∫−2 𝑥𝑒 2𝑥 𝑑𝑥
Listing program
import numpy as np
def fungsi (x):
y = x*[Link](2*x)
return y
print ("f(x) = xe^(2x)")
hasileksak = 1.71144
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
print ("iterasi" , "\t" , "n" , "\t" , "Simpson 3/8")
for iterasi in range(1, 7, 1):
n = 2**iterasi
h = (b-a)/n
#metode simpson 3/8
jmlganjil = 0
jmlgenap = 0
xi = a+h
xj = a+(a*h)
for isimpson in range (1,n,3):
jmlganjil += fungsi(xi)
xi += (3*h)
for jsimpson in range (2,n-1,3):
jmlgenap += fungsi(xj)
xj += (3*h)
Is = (h)*((fungsi (a)+(3*jmlganjil)+(2*jmlgenap)+fungsi
(b))/8)
print (iterasi , "\t\t\t" , n , "\t" , Is)
Tampilan program
Analisis program
1) Library numpy diubah menjadi np supaya mempermudah membuat
program.
import numpy as np
2) Menentukan definisi fungsi yang akan dicari nilai integral nya.
def fungsi (x):
y = x*[Link](2*x)
return y
3) Cetak fungsi yang akan diintegrasi dan inisialisasi hasil eksak dari fungsi
tersebut.
print ("f(x) = xe^(2x)")
hasileksak = 1.71144
4) Masukkan batas bawah integral (a) dan batas atas integral (b) dengan
perintah meng-input.
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
5) Cetak tabel untuk iterasi, banyaknya bilah (n), dan integrasi Simpson 3/8.
print ("iterasi" , "\t" , "n" , "\t" , "Simpson3/8")
6) Lakukan looping untuk iterasi yang berbeda, mulai dari 1 sampai 7 dengan
kelipatan kali 2
for iterasi in range(1, 7, 1):
n = 2**iterasi
h = (b-a)/n
7) Untuk integrasi Simpson 3/8, inisialisasi jumlah bilah ganjil dan genap sama
dengan nol, hitung batas baru untuk bilah ganjil (xi) adalah (xi=a+h) dan
hitung batas baru untuk bilah genap (xj) adalah (xj=a+(2*h)). Lalu lakukan
looping untuk luasan bilah ganjil mulai dari 1 hingga n-1 dengan selisih dua
angka. Hitung luasan bilah ganjil (jmlganjil += fungsi(xi)) dan menghitung
batas baru (xi) dimana batas bilah lama ditambah dengan dua lebar bilah
(xi+=(3*h)). Lalu lakukan looping untuk luasan bilah genap dari 2 hingga
n-2 dengan selisih dua angka. Hitung luasan bilah genap
(jmlgenap+=fungsi(xj)). Dan hitung batas baru (xj) dimana batas bilah lama
ditambah dengan dua lebar bilah (xj+=(3*h)).
jmlganjil = 0
jmlgenap = 0
xi = a+h
xj = a+(a*h)
for isimpson in range (1,n,3):
jmlganjil += fungsi(xi)
xi += (3*h)
for jsimpson in range (2,n-1,3):
jmlgenap += fungsi(xj)
xj += (3*h)
8) Hitung nilai integrasi Simpson 3/8 (Is)
Is = (h)*((fungsi (a)+(3*jmlganjil)+(2*jmlgenap)+fungsi
(b))/8)
9) Cetak nilai iterasi, banyak bilah (n), dan integrasi Simpson 3/8 (Is)
print (iterasi , "\t\t\t" , n , "\t" , Is)
2 ln(1+𝑥)
b. ∫1 𝑑𝑥
𝑥
Listing program
import numpy as np
def fungsi (x):
y = ([Link](1+x)/x)
return y
print ("f(x) = ln(1+x)/x")
hasileksak = -0.01131424292
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
print ("iterasi" , "\t" , "n" , "\t" , "Simpson 3/8")
for iterasi in range(1, 7, 1):
n = 2**iterasi
h = (b-a)/n
#metode simpson 3/8
jmlganjil = 0
jmlgenap = 0
xi = a+h
xj = a+(a*h)
for isimpson in range (1,n,3):
jmlganjil += fungsi(xi)
xi += (3*h)
for jsimpson in range (2,n-1,3):
jmlgenap += fungsi(xj)
xj += (3*h)
Is = (h)*((fungsi (a)+(3*jmlganjil)+(2*jmlgenap)+fungsi
(b))/8)
print (iterasi , "\t\t\t" , n , "\t" , Is)
Tampilan program
Analisis program
1) Library numpy diubah menjadi np supaya mempermudah membuat
program.
import numpy as np
2) Menentukan definisi fungsi yang akan dicari nilai integral nya.
def fungsi (x):
y = ([Link](1+x)/x)
return y
3) Cetak fungsi yang akan diintegrasi dan inisialisasi hasil eksak dari fungsi
tersebut.
print ("f(x) = ln(1+x)/x")
hasileksak = -0.01131424292
4) Masukkan batas bawah integral (a) dan batas atas integral (b) dengan
perintah meng-input.
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
5) Cetak tabel untuk iterasi, banyaknya bilah (n), dan integrasi Simpson 3/8.
print ("iterasi" , "\t" , "n" , "\t" , "Simpson3/8")
6) Lakukan looping untuk iterasi yang berbeda, mulai dari 1 sampai 7 dengan
kelipatan kali 2
for iterasi in range(1, 7, 1):
n = 2**iterasi
h = (b-a)/n
7) Untuk integrasi Simpson 3/8, inisialisasi jumlah bilah ganjil dan genap sama
dengan nol, hitung batas baru untuk bilah ganjil (xi) adalah (xi=a+h) dan
hitung batas baru untuk bilah genap (xj) adalah (xj=a+(2*h)). Lalu lakukan
looping untuk luasan bilah ganjil mulai dari 1 hingga n-1 dengan selisih dua
angka. Hitung luasan bilah ganjil (jmlganjil += fungsi(xi)) dan menghitung
batas baru (xi) dimana batas bilah lama ditambah dengan dua lebar bilah
(xi+=(3*h)). Lalu lakukan looping untuk luasan bilah genap dari 2 hingga
n-2 dengan selisih dua angka. Hitung luasan bilah genap
(jmlgenap+=fungsi(xj)). Dan hitung batas baru (xj) dimana batas bilah lama
ditambah dengan dua lebar bilah (xj+=(3*h)).
jmlganjil = 0
jmlgenap = 0
xi = a+h
xj = a+(a*h)
for isimpson in range (1,n,3):
jmlganjil += fungsi(xi)
xi += (3*h)
for jsimpson in range (2,n-1,3):
jmlgenap += fungsi(xj)
xj += (3*h)
8) Hitung nilai integrasi Simpson 3/8 (Is)
Is = (h)*((fungsi (a)+(3*jmlganjil)+(2*jmlgenap)+fungsi
(b))/8)
9) Cetak nilai iterasi, banyak bilah (n), dan integrasi Simpson 3/8 (Is)
print (iterasi , "\t\t\t" , n , "\t" , Is)
3 𝑥 sin(𝑥)
c. ∫2 (𝑥−1)2
𝑑𝑥
Listing program
import numpy as np
def fungsi (x):
y = (x*[Link](x)/(x-1)**2)
return y
print ("f(x) = x sin(x)/(x-1)^2")
hasileksak = -0.2687117212
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
print ("iterasi" , "\t" , "n" , "\t" , "Simpson 3/8")
for iterasi in range(1, 7, 1):
n = 2**iterasi
h = (b-a)/n
#metode simpson 3/8
jmlganjil = 0
jmlgenap = 0
xi = a+h
xj = a+(a*h)
for isimpson in range (1,n,3):
jmlganjil += fungsi(xi)
xi += (3*h)
for jsimpson in range (2,n-1,3):
jmlgenap += fungsi(xj)
xj += (3*h)
Is = (h)*((fungsi (a)+(3*jmlganjil)+(2*jmlgenap)+fungsi
(b))/8)
print (iterasi , "\t\t\t" , n , "\t" , Is)
Tampilan program
Analisis program
1) Library numpy diubah menjadi np supaya mempermudah membuat
program.
import numpy as np
2) Menentukan definisi fungsi yang akan dicari nilai integral nya.
def fungsi (x):
y = (x*[Link](x)/(x-1)**2)
return y
3) Cetak fungsi yang akan diintegrasi dan inisialisasi hasil eksak dari fungsi
tersebut.
print ("f(x) = x sin(x)/(x-1)^2")
hasileksak = -0.2687117212
4) Masukkan batas bawah integral (a) dan batas atas integral (b) dengan
perintah meng-input.
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
5) Cetak tabel untuk iterasi, banyaknya bilah (n), dan integrasi Simpson 3/8.
print ("iterasi" , "\t" , "n" , "\t" , "Simpson 3/8")
6) Lakukan looping untuk iterasi yang berbeda, mulai dari 1 sampai 7 dengan
kelipatan kali 2
for iterasi in range(1, 7, 1):
n = 2**iterasi
h = (b-a)/n
7) Untuk integrasi Simpson 3/8, inisialisasi jumlah bilah ganjil dan genap sama
dengan nol, hitung batas baru untuk bilah ganjil (xi) adalah (xi=a+h) dan
hitung batas baru untuk bilah genap (xj) adalah (xj=a+(2*h)). Lalu lakukan
looping untuk luasan bilah ganjil mulai dari 1 hingga n-1 dengan selisih dua
angka. Hitung luasan bilah ganjil (jmlganjil += fungsi(xi)) dan menghitung
batas baru (xi) dimana batas bilah lama ditambah dengan dua lebar bilah
(xi+=(3*h)). Lalu lakukan looping untuk luasan bilah genap dari 2 hingga
n-2 dengan selisih dua angka. Hitung luasan bilah genap
(jmlgenap+=fungsi(xj)). Dan hitung batas baru (xj) dimana batas bilah lama
ditambah dengan dua lebar bilah (xj+=(3*h)).
jmlganjil = 0
jmlgenap = 0
xi = a+h
xj = a+(a*h)
for isimpson in range (1,n,3):
jmlganjil += fungsi(xi)
xi += (3*h)
for jsimpson in range (2,n-1,3):
jmlgenap += fungsi(xj)
xj += (3*h)
8) Hitung nilai integrasi Simpson 3/8 (Is)
Is = (h)*((fungsi (a)+(3*jmlganjil)+(2*jmlgenap)+fungsi
(b))/8)
9) Cetak nilai iterasi, banyak bilah (n), dan integrasi Simpson 3/8 (Is)
print (iterasi , "\t\t\t" , n , "\t" , Is)
IV. Tugas Akhir
1. Laju seorang penerjun payung selama melayang di udara setelah payungnya
mengembang adalah
𝑔𝑚 𝑡
𝑣(𝑡) = [1 − 𝑒 −𝑐 𝑚 ]
𝑐
Di mana 𝑔 = 9,8 𝑚⁄𝑠 2 adalah percepatan gravitasi, 𝑚 = 68,1 𝑘𝑔 adalah massa
𝑘𝑔⁄
penerjun, 𝑐 = 12,5 𝑠 adalah hambatan oleh udara. Berapa jarak yang ditempuh
oleh penerjun tersebut selama 10 detik? Jarak yang ditempuh penerjun dapat
dihitung dengan menggunakan hubungan
𝑡
ℎ = ∫ 𝑣(𝑡)𝑑𝑡
0
buatlah program menggunakan bahasa Python dengan metode yang telah dipelajari
pada modul ini.
Jawab :
a) Metode Trapesium
Listing program
import numpy as np
def fungsi (x):
y = (g*m/c)*([Link](-c*t/m))
return y
g = float(input("Percepatan gravitasinya sebesar : "))
m = float(input("Massa penerjun sebesar : "))
c = float(input("Hambatan udara sebesar : "))
t = float(input("Berapa waktu yang ditempuh oleh penerjun
tersebut : "))
print ("v(t) = gm/c(1-e^-c t/m)")
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
print ("iterasi" , "\t" , "n" , "\t" , "trapesium")
for iterasi in range(1, 7, 1):
n = 2*iterasi
h = (b-a)/n
xi = a
y = 0
for i in range (1,n):
xi = xi+h
y+= fungsi (xi)
It = (h)*((fungsi(a)+(2*y)+fungsi(b))/2)
print (iterasi , "\t\t\t" , n , "\t" , It)
Tampilan program
b) Metode Simpson 1/3
Listing program
import numpy as np
def fungsi (x):
y = (g*m/c)*([Link](-c*t/m))
return y
g = float(input("Percepatan gravitasinya sebesar : "))
m = float(input("Massa penerjun sebesar : "))
c = float(input("Hambatan udara sebesar : "))
t = float(input("Berapa waktu yang ditempuh oleh penerjun
tersebut : "))
print ("v(t) = gm/c(1-e^-c t/m)")
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
print ("iterasi" , "\t" , "n" , "\t" , "Simpson 1/3")
for iterasi in range(1, 7, 1):
n = 2*iterasi
h = (b-a)/n
jmlganjil = 0
jmlgenap = 0
xi = a+h
xj = a+(a*h)
for isimpson in range (1,n,2):
jmlganjil += fungsi(xi)
xi += (2*h)
for jsimpson in range (2,n-1,2):
jmlgenap += fungsi(xj)
xj += (2*h)
Is = (h)*((fungsi (a)+(4*jmlganjil)+(2*jmlgenap)+fungsi
(b))/3)
print (iterasi , "\t\t\t" , n , "\t" , Is)
Tampilan program
c) Metode Simpson 3/8
Listing program
import numpy as np
def fungsi (x):
y = (g*m/c)*([Link](-c*t/m))
return y
g = float(input("Percepatan gravitasinya sebesar : "))
m = float(input("Massa penerjun sebesar : "))
c = float(input("Hambatan udara sebesar : "))
t = float(input("Berapa waktu yang ditempuh oleh penerjun
tersebut : "))
print ("v(t) = gm/c(1-e^-c t/m)")
a = float(input("Masukkan batas bawah integrasi : "))
b = float(input("Masukkan batas atas integrasi : "))
print ("iterasi" , "\t" , "n" , "\t" , "Simpson 3/8")
for iterasi in range(1, 7, 1):
n = 2*iterasi
h = (b-a)/n
jmlganjil = 0
jmlgenap = 0
xi = a+h
xj = a+(a*h)
for isimpson in range (1,n,3):
jmlganjil += fungsi(xi)
xi += (3*h)
for jsimpson in range (2,n-1,3):
jmlgenap += fungsi(xj)
xj += (3*h)
Is = (h)*((fungsi (a)+(3*jmlganjil)+(2*jmlgenap)+fungsi
(b))/8)
print (iterasi , "\t\t\t" , n , "\t" , Is)
Tampilan program
2. Bandingkan hasil percobaan untuk metode trapesium, Simpson 1/3 dan 3/8.
Jawab : Algoritma yang saya pakai pada tugas kali ini sama seperti pada tugas
percobaan. Baik dari metode trapesium, Simpson 1/3 maupun Simpson 3/8. Disini
kita menggunakan variabel g (percepatan gravitasi), m (massa penerjun), c
(hambatan oleh udara). Dengan batas bawah 0 dan batas atas t dari integralnya. Oleh
𝑡
karena itu, disini saya menuliskan fungsi dari 𝑣(𝑡) nya adalah 1 − 𝑒 −𝑐𝑚 .
Dari hasil yang didapatkan, perbedaannya lumayan jauh, yaitu : (iterasi 1)
a) Metode Trapesium, dengan hasil 448,73137571348394
b) Metode Simpson 1/3, dengan hasil 448,73137571348394
c) Metode Simpson 3/8, dengan hasil 140,22855491046374
Yang saya dapatkan, mungkin untuk hasil dari metode Trapesium dan metode
Simpson 1/3 mendapatkan hasil yang sama, namun dari metode Simpson 3/8 ini
mendapatkan hasil yang lumayan hampir 1/3 dari hasil metode Trapesium maupun
metode Simpson 1/3. Mungkin ini terjadi karena kesalahan pada algoritma atau
tidak teliti dalam membuat program.
3. Diberikan tabel sebagai berikut :
x f(x)
0 1
0.25 0.8
0.625 0.6
0.75 0.57
0.875 0.53
1 0.5
Bagaimana cara mencari integral dari data dengan interval yang tidak seragam
seperti tabel diatas?
Jawab : Karena data yang didapatkan adalah data yang tidak merata, maka
disini saya akan menggunakan metode Trapesium. Dimana pada metode ini setiap
jaraknya adalah tinggi dari trapesiumnya. Persamaan yang akan saya gunakan
adalah :
𝑓(𝑥0 ) + 𝑓(𝑥1 ) 𝑓(𝑥1 ) + 𝑓(𝑥2 ) 𝑓(𝑥𝑛−1 ) + 𝑓(𝑥𝑛 )
𝐼 = ℎ1 + ℎ2 + ⋯ + ℎ𝑛
2 2 2
Listing program
import numpy as np
x = [Link]([[0], [0.25], [0.625], [0.75], [0.875], [1]])
y = [Link]([[1], [0.8], [0.6], [0.57], [0.53], [0.5]])
n = len(x)
iterasi = 0
for i in range (1,n):
iterasi = iterasi + (x[i] - x[i-1])*(y[i] - y[i-1])/2
hasil_metode_trapesium = iterasi
print (hasil_metode_trapesium)
Tampilan program
V. Kesimpulan
Praktikan dapat menghitung integral secara numerik suatu fungsi menggunakan
metode Trapesium, metode Simpson 1/3 dan metode Simpson 3/8.