Jika matriks A non-singular maka ia dapat difaktorkan (diuraikan atau di-dekomposisi) menjadi matriks segitiga bawah L (lower) dan matriks segitiga atas U (upper): A = LU
Dekomposisi LU: Materi Lengkap
1. Pendahuluan
Dekomposisi LU adalah teknik yang sering digunakan dalam penyelesaian sistem persamaan linier. Teknik ini memecah sebuah matriks A menjadi dua matriks segitiga: matriks lower triangular (L) dan upper triangular (U). Proses dekomposisi memungkinkan kita menyederhanakan penyelesaian persamaan linier dengan metode substitusi maju dan mundur.
2. Teori Dekomposisi LU
Matriks A dapat dinyatakan sebagai hasil kali dari dua matriks: A = LU, di mana:
- L adalah matriks segitiga bawah (lower triangular matrix) dengan elemen-elemen diagonal utama yang bernilai 1.
- U adalah matriks segitiga atas (upper triangular matrix).
Jika kita memiliki sistem persamaan Ax = b, setelah dekomposisi LU, kita dapat menyelesaikannya dalam dua tahap:
- Menyelesaikan Ly = b dengan substitusi maju.
- Menyelesaikan Ux = y dengan substitusi mundur.
3. Algoritma Dekomposisi LU (Algoritma Doolittle)
Doolittle adalah salah satu algoritma yang digunakan untuk melakukan dekomposisi LU. Dalam algoritma ini, diagonal dari matriks L bernilai 1, sedangkan matriks U memuat elemen-elemen asli dari matriks A setelah dilakukan eliminasi Gauss. Proses dekomposisi melibatkan eliminasi elemen-elemen di bawah diagonal utama untuk membentuk matriks segitiga bawah L.
4. Implementasi Dekomposisi LU dalam Python
4.1 Menggunakan Library (Numpy)
Berikut adalah contoh implementasi menggunakan library numpy dan scipy:
import numpy as np
from scipy.linalg import lu
A = np.array([[2, -1, -2],
[-4, 6, 3],
[-4, -2, 8]])
P, L, U = lu(A)
print("Matriks P:", P)
print("Matriks L:", L)
print("Matriks U:", U)
4.2 Tanpa Menggunakan Library
Berikut adalah contoh implementasi dekomposisi LU tanpa menggunakan library:
def lu_decomposition(A):
n = len(A)
L = [[0.0 for _ in range(n)] for _ in range(n)]
U = [[0.0 for _ in range(n)] for _ in range(n)]
for i in range(n):
for k in range(i, n):
sum_u = sum(L[i][j] * U[j][k] for j in range(i))
U[i][k] = A[i][k] - sum_u
for k in range(i, n):
if i == k:
L[i][i] = 1.0
else:
sum_l = sum(L[k][j] * U[j][i] for j in range(i))
L[k][i] = (A[k][i] - sum_l) / U[i][i]
return L, U
5. Kesimpulan
Dekomposisi LU adalah metode yang sangat efisien untuk menyelesaikan sistem persamaan linier, terutama untuk sistem besar. Dengan memisahkan perhitungan menjadi dua tahap menggunakan matriks L dan U, kita dapat menyederhanakan proses penyelesaian persamaan. Implementasi dapat dilakukan secara manual atau menggunakan pustaka numerik seperti numpy untuk perhitungan yang lebih cepat.
Comments
Post a Comment
terima kasih