# Nakafa Framework: LLM
URL: /id/subject/university/bachelor/ai-ds/linear-methods/lu-decomposition
Source: https://raw.githubusercontent.com/nakafaai/nakafa.com/refs/heads/main/packages/contents/subject/university/bachelor/ai-ds/linear-methods/lu-decomposition/id.mdx
Output docs content for large language models.
---
export const metadata = {
    title: "LU Dekomposisi",
    description: "Kuasai dekomposisi LU: faktorisasi matriks menjadi bentuk segitiga bawah/atas dengan eliminasi Gauss, implementasi Python dan penyelesaian sistem.",
    authors: [{ name: "Nabil Akbarazzima Fatih" }],
    date: "07/13/2025",
    subject: "Metode Linear AI",
};
## Apa itu Dekomposisi LU?
Dekomposisi LU adalah singkatan dari **Lower-Upper decomposition** atau dekomposisi Lower-Upper. Nama ini berasal dari dua matriks hasil dekomposisi:
- **L (Lower)** = Matriks segitiga bawah yang memiliki elemen nol di atas diagonal utama
- **U (Upper)** = Matriks segitiga atas yang memiliki elemen nol di bawah diagonal utama
Mengapa kita memerlukan dekomposisi ini? Karena menyelesaikan sistem persamaan linear dengan matriks segitiga jauh lebih mudah daripada dengan matriks biasa.
## Konsep Dasar Dekomposisi LU
Dekomposisi LU adalah cara memecah matriks menjadi perkalian dua matriks yang lebih sederhana. Bayangkan kita memiliki teka-teki yang rumit, lalu kita bongkar menjadi kepingan-kepingan yang lebih mudah disusun kembali.
Untuk matriks  yang diberikan, kita mendapatkan:
Di mana  adalah matriks permutasi (pengatur urutan baris),  adalah matriks segitiga bawah, dan  adalah matriks segitiga atas.
Eliminasi Gauss menghitung dekomposisi LU ini melalui serangkaian operasi baris yang sistematis. Proses ini dapat dituliskan sebagai:
dengan , matriks pertukaran baris  atau  dan matriks eliminasi:
Invers dari  adalah:
Karena , kita dapat menulis ulang rangkaian operasi ini menjadi bentuk yang lebih sederhana hingga akhirnya mendapatkan .
## Struktur Hasil Dekomposisi
Dari eliminasi Gauss dengan langkah-langkah , kita mendapatkan tiga matriks dengan struktur khusus:
Matriks  diperoleh dari penerapan vektor permutasi  pada baris-baris matriks identitas. Ketiga matriks memiliki sifat:
1.  adalah matriks segitiga atas dalam bentuk baris bertingkat dengan peringkat 
2.  adalah matriks segitiga bawah reguler dengan 1 pada diagonal
3.  adalah matriks permutasi dengan 
## Langkah Eliminasi Gauss
Mari kita lihat contoh konkret. Bayangkan kita sedang membersihkan rumah lantai demi lantai, mulai dari atas.
1. **Kolom pertama** dengan elemen pivot . Kita tukar baris pertama dan kedua seperti menukar posisi furniture.
   
   
   
   
   Eliminasi entri lain pada kolom tersebut: , 
2. **Kolom kedua** dengan elemen pivot . Tidak ada pertukaran diperlukan.
   Eliminasi: 
3. **Kolom ketiga** tidak memiliki elemen pivot yang bisa digunakan.
4. **Kolom keempat** dengan elemen pivot . Tidak ada operasi lagi diperlukan.
Hasil akhir:
Dari hasil eliminasi ini, kita peroleh:
Pembuktian menunjukkan bahwa  untuk matriks  yang diberikan awalnya.
## Algoritma dan Kompleksitas
Algoritma eliminasi Gauss bekerja seperti pembersihan sistematis. Untuk setiap kolom, kita melakukan:
1. Cari elemen pivot terbaik
2. Tukar baris jika perlu
3. Eliminasi elemen di bawah pivot
4. Simpan informasi multiplier
Kompleksitas waktu untuk menghitung dekomposisi LU adalah  operasi aritmatika. Pembuktian menunjukkan bahwa perkalian dan penjumlahan terjadi bersamaan dalam transformasi baris eliminasi .
## Implementasi Algoritma dalam Python
Berikut adalah implementasi algoritma dekomposisi LU dalam Python:
 abs(U[max_row, i]):
                max_row = k
        
        if max_row != i:
            U[[i, max_row]] = U[[max_row, i]]
            P[[i, max_row]] = P[[max_row, i]]
            if i > 0:
                L[[i, max_row], :i] = L[[max_row, i], :i]
        
        for k in range(i + 1, n):
            if U[i, i] != 0:
                factor = U[k, i] / U[i, i]
                L[k, i] = factor
                U[k, i:] = U[k, i:] - factor * U[i, i:]
    
    np.fill_diagonal(L, 1)
    return L, U, P
def forward_substitution(L, b):
    """
    Substitusi maju untuk menyelesaikan L * y = b
    """
    n = len(b)
    y = np.zeros(n)
    
    for i in range(n):
        y[i] = b[i] - np.dot(L[i, :i], y[:i])
    
    return y
def backward_substitution(U, y):
    """
    Substitusi mundur untuk menyelesaikan U * x = y
    """
    n = len(y)
    x = np.zeros(n)
    
    for i in range(n - 1, -1, -1):
        if U[i, i] != 0:
            x[i] = (y[i] - np.dot(U[i, i+1:], x[i+1:])) / U[i, i]
    
    return x
def solve_linear_system(A, b):
    """
    Menyelesaikan sistem Ax = b menggunakan dekomposisi LU
    """
    L, U, P = lu_decomposition(A)
    pb = np.dot(P, b)
    y = forward_substitution(L, pb)
    x = backward_substitution(U, y)
    return x, L, U, P`
}]} />
## Penyelesaian Sistem Linear
Setelah mendapatkan dekomposisi LU, menyelesaikan sistem  menjadi seperti menyelesaikan teka-teki yang sudah diurutkan.
Sistem  berubah menjadi  melalui dua tahap:
### Substitusi Maju
Algoritma substitusi maju menyelesaikan  dengan matriks segitiga bawah reguler  dan vektor . Proses ini seperti mengisi tangga dari bawah ke atas, di mana setiap langkah bergantung pada langkah sebelumnya.
Untuk setiap baris , kita menghitung:
Algoritma ini efisien karena kita hanya perlu menghitung satu nilai di setiap langkah. Elemen diagonal  selalu bernilai 1 untuk matriks  dari dekomposisi LU, sehingga pembagian menjadi sederhana.
### Substitusi Mundur
Algoritma substitusi mundur menyelesaikan  dengan matriks  dalam bentuk baris bertingkat dengan  langkah pada kolom-kolom  dan vektor .
Pertama, kita periksa apakah sistem dapat diselesaikan. Jika  dan terdapat  untuk , maka sistem tidak memiliki solusi.
Jika sistem dapat diselesaikan, kita inisialisasi matriks kernel  dengan ukuran , dan mulai dengan  serta .
Algoritma bekerja mundur dari kolom  hingga . Untuk setiap kolom, kita periksa apakah kolom tersebut adalah langkah pivot atau bukan.
1. **Jika kolom j adalah langkah pivot**, artinya  untuk langkah ke-, maka kita hitung solusi untuk variabel :
   
   Dan kita juga hitung kontribusi variabel ini terhadap matriks kernel:
   
   
   untuk , kemudian kita kurangi  dengan 1.
2. **Jika kolom j bukan langkah pivot**, artinya tidak ada pivot pada kolom tersebut, maka variabel  adalah variabel bebas. Kita set:
   - 
   -  (solusi khusus)
   -  (basis kernel)
Algoritma ini menghasilkan solusi  dan matriks  yang memenuhi  dan .
Kolom-kolom dari matriks  membentuk basis untuk kernel (ruang null) dari matriks . Ini berarti bahwa setiap kolom  adalah vektor yang ketika dikalikan dengan  menghasilkan vektor nol.
Himpunan solusi lengkap adalah:
## Contoh Penerapan
Mari kita lihat bagaimana dekomposisi LU digunakan untuk menyelesaikan sistem linear secara konkret. Misalkan kita memiliki vektor  dan ingin menyelesaikan sistem .
1. **Langkah pertama** adalah menghitung . Karena matriks permutasi  menukar baris pertama dengan baris kedua, kita mendapatkan:
   
2. **Langkah kedua** adalah substitusi maju untuk menyelesaikan . Kita menggunakan matriks segitiga bawah  yang sudah kita peroleh. Proses ini dilakukan dari atas ke bawah seperti mengisi tangga satu per satu.
   Untuk baris pertama dengan , kita dapatkan .
   Untuk baris kedua dengan , kita dapatkan .
   Untuk baris ketiga dengan , kita hitung:
   
   
   
   
   
   Sehingga diperoleh:
   
3. **Langkah ketiga** adalah substitusi mundur untuk menyelesaikan . Matriks  dalam bentuk baris bertingkat memiliki pivot pada kolom 1, 2, dan 4. Kolom 3 tidak memiliki pivot sehingga menjadi variabel bebas.
   Dari proses substitusi mundur, kita memperoleh solusi khusus:
   
   dan matriks kernel:
   
4. **Interpretasi hasil** sangat penting untuk dipahami. Solusi  adalah satu solusi khusus dari sistem persamaan. Matriks  menunjukkan arah di mana kita bisa bergerak dalam ruang solusi tanpa mengubah hasil perkalian .
5. **Verifikasi matematis** menunjukkan bahwa untuk setiap nilai parameter , solusi umum  tetap memenuhi persamaan asli.
   Mari kita buktikan dengan menghitung . Hasilnya adalah:
   
   
   
   
   Perhatikan bahwa , yang berarti vektor  berada dalam ruang null dari matriks . Ini menjelaskan mengapa menambahkan kelipatan  pada solusi tidak mengubah hasil.
Dibandingkan dengan menghitung dekomposisi LU secara penuh, proses substitusi maju dan mundur ini jauh lebih efisien untuk menyelesaikan sistem linear dengan vektor ruas kanan yang berbeda-beda.