Praktikum 2 Komputasi Numerik
Kelas Komputasi Numerik (B)
Kelompok 5
- Akmal Sulthon Fathulloh (5025211047)
- Thariq Agfi Hermawan (5025211215)
- Tigo S Yoga (5025211125)
Salah satu kelemahan dari metode Trapezoidal adalah kita harus menggunakan jumlah interval yang besar untuk memperoleh akurasi yang diharapkan. Buatlah sebuah program komputer untuk menjelaskan bagaimana metode Integrasi Romberg dapat mengatasi kelemahan tersebut.
Metode integrasi Trapezoidal adalah salah satu metode numerik untuk menghitung aproksimasi nilai integral suatu fungsi dengan cara membagi domain integral menjadi sejumlah bagian kecil, kemudian menggunakan bentuk trapesium untuk menghitung setiap luasan partisi tersebut. Nilai integral diperoleh dengan menjumlahkan luas dari setiap trapesium yang dibentuk.
Secara umum, rumus integrasi Trapezoidal adalah sebagai berikut:
dimana:
h
adalah panjang interval, dihitung sebagai n
adalah jumlah subinterval.
Implementasi dalam bahasa Python:
def trapezoidal(f, a, b, n):
h = (b - a) / n
sum = 0.5 * (f(a) + f(b))
for i in range(1, n):
sum += f(a + i * h)
return sum * h
Metode ini hanya menggunakan dua titik di setiap subintervalnya untuk menghitung luasan. Hal ini dapat menyebabkan hasil yang kurang akurat jika fungsi yang diintegrasikan memiliki bentuk yang kompleks dan tajam. Untuk meningkatkan akurasi dari metode Trapezoidal, dapat diterapkan metode yang disebut integrasi Romberg. Metode ini didasarkan pada teknik ekstrapolasi Richardson yang melibatkan perhitungan sejumlah aproksimasi integral dengan jumlah titik penyampling berbeda, kemudian menggunakan hasilnya untuk menghitung nilai integral yang lebih akurat. Perlu diperhatikan bahwa setiap penerapan ekstrapolasi Richardson akan menaikkan orde galat pada hasilnya sebesar dua.
Secara umum, rumus integrasi Romberg dengan ekstrapolasi Richardson adalah sebagai berikut:
untuk
Berikut adalah langkah penyelesaian integrasi dengan metode Romberg:
- Menentukan fungsi yang akan diintegrasi
- Menentukan batas bawah dan batas atas
- Menentukan jumlah baris maksimum yang akan digunakan
- Menghitung nilai integrasi kolom pertama menggunakan metode Trapezoidal dengan jumlah subinterval (
n
)$2^i$ dimana$i=0,1,2,\dots$ - Menghitung nilai integrasi kolom kedua dan seterusnya dengan metode ekstrapolasi Richardson
- Mengulangi langkah 4 dan 5 hingga nilai integrasi yang diinginkan diperoleh (disesuaikan dengan jumlah baris maksimum)
Implementasi dalam bahasa Python:
def romberg(f, a, b, max_row):
matrix = np.zeros((max_row, max_row))
for row in range(max_row):
n = 2**row
matrix[row, 0] = trapezoid(f, a, b, n)
for col in range(1, row + 1):
matrix[row, col] = (
4**col * matrix[row, col - 1] - matrix[row - 1, col - 1]
) / (4**col - 1)
return matrix
Input:
Masukkan fungsi yang diinginkan (gunakan variabel x):
f(x) = np.sin(x)**2 + 2*x**3 + 2
Masukkan batas bawah: 1
Masukkan batas atas: 5
Masukkan jumlah baris maksimal: 5
Output:
Integrasi Romberg f(x) = np.sin(x)**2 + 2*x**3 + 2 dari 1.0 hingga 5.0 adalah:
------- ------- ------- ------- -------
515.255 0 0 0 0
369.667 321.138 0 0 0
334.233 322.422 322.507 0 0
325.333 322.366 322.362 322.36 0
323.106 322.363 322.363 322.363 322.363
------- ------- ------- ------- -------
Hasil integrasi Romberg: 322.3634
Program ini dijalankan menggunakan Python 3.11.1. Berikut adalah daftar library yang digunakan:
Untuk memasang library-library tersebut, jalankan perintah berikut:
python -m pip install -r requirements.txt