Menghitung Metode Trapezoidal di R dan Python
Metode trapezoidal adalah metode numerik untuk memperkirakan luas area di bawah kurva. Metode ini sering digunakan ketika integral sulit dihitung secara manual atau data yang tersedia berupa titik-titik pengamatan.
Rumus Trapezoidal
Jika interval dari a sampai b dibagi menjadi n bagian dengan lebar h, rumus trapezoidal adalah:
Luas = h / 2 * (f(x0) + 2f(x1) + 2f(x2) + ... + 2f(xn-1) + f(xn))
Dengan:
h = (b - a) / nx0 = axn = b- nilai tengah dikalikan 2
Contoh Soal
Hitung pendekatan integral dari fungsi berikut pada interval 0 sampai 4 dengan 4 subinterval.
f(x) = x^2 + 2x + 1
Langkah awal:
a = 0b = 4n = 4h = (4 - 0) / 4 = 1- titik x adalah
0, 1, 2, 3, 4
Penyelesaian Manual Singkat
Hitung nilai fungsi pada setiap titik.
f(0) = 1
f(1) = 4
f(2) = 9
f(3) = 16
f(4) = 25
Masukkan ke rumus trapezoidal:
Luas = 1 / 2 * (1 + 2(4 + 9 + 16) + 25)
Luas = 0.5 * (1 + 58 + 25)
Luas = 42
Jadi, hasil pendekatan integralnya adalah 42.
Implementasi di R
f <- function(x) {
return(x ^ 2 + 2 * x + 1)
}
a <- 0
b <- 4
n <- 4
h <- (b - a) / n
x <- seq(a, b, by = h)
y <- f(x)
luas <- (h / 2) * (y[1] + 2 * sum(y[2:n]) + y[n + 1])
print(x)
print(y)
print(luas)
Penjelasan:
seq(a, b, by = h)membuat titik x dari 0 sampai 4. Nilai tengahy[2:n]dijumlahkan lalu dikalikan 2. Index R dimulai dari 1, sehingga nilai terakhir adalahy[n + 1].
Implementasi di Python
def f(x):
return x ** 2 + 2 * x + 1
a = 0
b = 4
n = 4
h = (b - a) / n
x = [a + i * h for i in range(n + 1)]
y = [f(item) for item in x]
luas = (h / 2) * (y[0] + 2 * sum(y[1:n]) + y[n])
print(x)
print(y)
print(luas)
Penjelasan: Python menggunakan index mulai dari 0. Karena itu, nilai pertama adalah
y[0]dan nilai terakhir adalahy[n].
Membuat Fungsi Trapezoidal di R
trapezoidal <- function(f, a, b, n) {
h <- (b - a) / n
x <- seq(a, b, by = h)
y <- f(x)
luas <- (h / 2) * (y[1] + 2 * sum(y[2:n]) + y[n + 1])
return(luas)
}
hasil <- trapezoidal(function(x) x ^ 2 + 2 * x + 1, 0, 4, 4)
print(hasil)
Membuat Fungsi Trapezoidal di Python
def trapezoidal(f, a, b, n):
h = (b - a) / n
x = [a + i * h for i in range(n + 1)]
y = [f(item) for item in x]
luas = (h / 2) * (y[0] + 2 * sum(y[1:n]) + y[n])
return luas
hasil = trapezoidal(lambda x: x ** 2 + 2 * x + 1, 0, 4, 4)
print(hasil)
Perbandingan R dan Python
| Bagian | R | Python |
|---|---|---|
| Membuat fungsi | function(x) | def f(x): atau lambda x: |
| Pangkat | x ^ 2 | x ** 2 |
| Membuat urutan angka | seq(a, b, by = h) | list comprehension dengan range() |
| Index awal | 1 | 0 |
| Nilai terakhir pada rumus | y[n + 1] | y[n] |
Latihan Singkat
Coba kerjakan soal berikut menggunakan R dan Python:
- Hitung integral pendekatan dari
f(x) = x^3 + 1pada interval 0 sampai 2 dengan 4 subinterval. - Hitung integral pendekatan dari
f(x) = 2x + 3pada interval 1 sampai 5 dengan 8 subinterval. - Ubah fungsi
trapezoidal()agar juga menampilkan nilaix, nilaiy, dan hasil luas.