Lewati ke konten utama
Logo Memahami Aljabar Linear

Subbab 5.1 Meninjau kembali eliminasi Gauss

Dalam bagian ini, kita meninjau kembali eliminasi Gauss dan menelaah beberapa masalah yang muncul ketika menerapkannya secara langsung seperti yang telah dijelaskan dalam Subbab 1.2. Secara khusus, kita akan melihat bagaimana fakta bahwa komputer hanya melakukan operasi aritmetika secara hampiran dapat membuat kita memperoleh solusi yang jauh dari solusi sebenarnya. Selanjutnya, kita akan menelaah banyaknya kerja yang diperlukan untuk menerapkan eliminasi Gauss dan merancang cara yang lebih efisien untuk menerapkannya ketika kita ingin menyelesaikan persamaan \(A\xvec = \bvec\) untuk beberapa vektor \(\bvec\) yang berbeda.

Subbagian 5.1.1 Pendahuluan

Aktivitas Pratinjau 5.1.1.

Untuk memulai, mari kita mengingat kembali cara menerapkan eliminasi Gauss dengan memperhatikan matriks
\begin{equation*} A = \left[\begin{array}{rrrr} 1 \amp 2 \amp -1 \amp 2 \\ 1 \amp 0 \amp -2 \amp 1 \\ 3 \amp 2 \amp 1 \amp 0 \\ \end{array}\right]\text{.} \end{equation*}
(a)
Apa operasi baris pertama yang kita lakukan? Jika matriks yang dihasilkan adalah \(A_1\text{,}\) tentukan matriks \(E_1\) sedemikian sehingga \(E_1A = A_1\text{.}\)
(b)
Apa bentuk matriks \(E_1^{-1}\text{?}\) Anda dapat menentukannya dengan teknik yang Anda sukai untuk mencari invers matriks. Namun, mungkin lebih mudah untuk memikirkan pengaruh operasi baris tersebut dan cara membatalkannya.
(c)
Lakukan dua langkah berikutnya dalam algoritma eliminasi Gauss untuk memperoleh \(A_3\text{.}\) Nyatakan langkah-langkah ini dengan perkalian matriks \(E_2\) dan \(E_3\) sedemikian sehingga
\begin{equation*} E_3E_2E_1A = A_3\text{.} \end{equation*}
(d)
Misalkan kita perlu menskalakan baris kedua dengan \(-2\text{.}\) Tentukan matriks \(3\times3\) yang melakukan operasi baris ini melalui perkalian dari kiri.
(e)
Misalkan kita perlu mempertukarkan baris pertama dan kedua. Tentukan matriks \(3\times3\) yang melakukan operasi baris ini melalui perkalian dari kiri.

Subbagian 5.1.2 Pivot parsial

Masalah pertama yang kita bahas adalah fakta bahwa komputer tidak melakukan operasi aritmetika secara eksak. Misalnya, Python akan menghitung 0.1 + 0.2 dan melaporkan 0.30000000000000004, padahal kita mengetahui bahwa nilai sebenarnya adalah 0.3. Ada beberapa penyebab hal ini.
Pertama, komputer melakukan aritmetika dengan menggunakan bilangan berbasis 2. Artinya, bilangan yang kita masukkan dalam bentuk desimal, seperti \(0.1\text{,}\) harus dikonversi ke basis 2. Meskipun 0.1 memiliki bentuk desimal yang sederhana, representasinya dalam basis 2 berupa desimal berulang
\begin{equation*} 0.000110011001100110011001100110011001100110011\ldots\text{.}\text{,} \end{equation*}
Untuk menyatakan bilangan ini secara akurat di dalam komputer diperlukan tak hingga banyaknya digit. Karena komputer hanya dapat menyimpan sejumlah digit yang berhingga, sekadar menyatakan bilangan ini di dalam komputer saja sudah mengharuskan kita menggunakan suatu hampiran.
Selain itu, operasi aritmetika, seperti penjumlahan, rentan terhadap galat. Agar pembahasannya sederhana, misalkan kita memiliki komputer yang menyatakan bilangan dengan menggunakan hanya tiga digit desimal. Misalnya, bilangan 1.023 akan dinyatakan sebagai 1.02, sedangkan 0.023421 akan dinyatakan sebagai 0.0234. Jika kedua bilangan ini dijumlahkan, kita memperoleh 1.023 + 0.023421 = 1.046421; komputer melaporkan jumlah ini sebagai 1.02 + 0.0234 = 1.04, dengan digit terakhir yang tidak dibulatkan secara benar. Secara umum, masalah yang disebut galat pembulatan ini akan muncul setiap kali kita menjumlahkan bilangan-bilangan yang besarannya jauh berbeda.
Ingat bahwa eliminasi Gauss, ketika diterapkan pada matriks \(n\times n\text{,}\) memerlukan sekitar \(\frac 23 n^3\) operasi. Jika kita memiliki matriks \(1000\times1000\text{,}\) pelaksanaan eliminasi Gauss memerlukan kira-kira satu miliar operasi, dan galat yang muncul pada setiap operasi dapat terakumulasi. Bagaimana kita dapat memercayai hasil akhirnya? Kita tidak pernah dapat sepenuhnya menghindari galat ini, tetapi kita dapat mengambil langkah-langkah untuk menguranginya. Aktivitas berikut akan memperkenalkan salah satu teknik tersebut.

Kegiatan 5.1.2.

Misalkan kita memiliki komputer hipotetis yang menyatakan bilangan dengan menggunakan hanya tiga digit desimal. Kita akan memperhatikan sistem linear
\begin{equation*} \begin{alignedat}{3} 0.0001x \amp {}+{} \amp y \amp {}={} \amp 1 \\ x \amp {}+{} \amp y \amp {}={} \amp 2\text{.} \\ \end{alignedat} \end{equation*}
  1. Tunjukkan bahwa sistem ini memiliki solusi tunggal
    \begin{equation*} \begin{aligned} x \amp {}={} \frac{10000}{9999} = 1.00010001\ldots, \\ y \amp {}={} \frac{9998}{9999} = 0.99989998\ldots\text{.} \end{aligned} \end{equation*}
  2. Jika kita menyatakan solusi ini di dalam komputer yang hanya dapat menyimpan 3 digit desimal, solusi apakah yang kita peroleh? Inilah hasil terbaik yang dapat kita harapkan dari komputer tersebut.
  3. Bayangkan bahwa kita menggunakan komputer tersebut untuk menentukan solusi dengan eliminasi Gauss; artinya, setelah setiap operasi aritmetika, kita hanya mempertahankan tiga digit desimal. Langkah pertama adalah mengalikan persamaan pertama dengan 10000 dan mengurangkannya dari persamaan kedua. Jika bilangan dinyatakan dengan hanya tiga digit desimal, nilai \(y\) apakah yang diperoleh?
  4. Dengan menyubstitusikan nilai \(y\) yang kita peroleh ke persamaan pertama, nilai \(x\) apakah yang diperoleh?
  5. Bandingkan solusi yang diperoleh komputer dengan solusi sebenarnya dan nilailah kualitas hampirannya.
  6. Sekarang mari kita ubah sistem linear tersebut dengan sekadar mempertukarkan kedua persamaannya:
    \begin{equation*} \begin{alignedat}{3} x \amp {}+{} \amp y \amp {}={} \amp 2 \\ 0.0001x \amp {}+{} \amp y \amp {}={} \amp 1\text{.} \\ \end{alignedat} \end{equation*}
    Tentu saja, hal ini tidak mengubah solusi sebenarnya. Bayangkan kita menggunakan komputer tersebut untuk menentukan solusi dengan eliminasi Gauss. Lakukan langkah pertama dengan mengalikan persamaan pertama dengan 0.0001 dan mengurangkannya dari persamaan kedua. Nilai \(y\) apakah yang diperoleh jika bilangan dinyatakan dengan hanya tiga digit desimal?
  7. Substitusikan nilai \(y\) yang Anda peroleh ke persamaan pertama dan tentukan \(x\text{.}\) Kemudian bandingkan solusi hampiran yang diperoleh komputer hipotetis tersebut dengan solusi eksaknya.
  8. Pendekatan manakah yang menghasilkan hampiran paling akurat?
Aktivitas ini menunjukkan perbedaan antara aspek praktis dan teoretis dalam komputasi. Kita mengetahui bahwa urutan penulisan persamaan tidak memengaruhi ruang solusi; pertukaran baris merupakan salah satu dari tiga operasi baris yang diperbolehkan dalam algoritma eliminasi Gauss. Namun, ketika kita hanya dapat melakukan operasi aritmetika secara hampiran, menerapkan pertukaran baris dapat meningkatkan keakuratan hampiran secara drastis.
Jika kita dapat menghitung solusi secara eksak, kita memperoleh
\begin{equation*} x = 1.00010001\ldots, \qquad y = 0.99989998\ldots\text{.} \end{equation*}
Karena komputer hipotetis kita menyatakan bilangan dengan hanya tiga digit desimal, komputer tersebut memperoleh
\begin{equation*} x \approx 1.00, \qquad y \approx 1.00. \end{equation*}
Inilah hasil terbaik yang dapat kita harapkan dari komputer tersebut karena solusi itu tidak mungkin dinyatakan secara eksak.
Ketika persamaan ditulis dalam urutan semula, lalu persamaan pertama dikalikan dengan 10000 dan dikurangkan dari persamaan kedua, kita memperoleh
\begin{equation*} \begin{aligned} (1-10000)y \amp {}={}2-10000 \\ -9999 y \amp {}={} -9998 \\ -10000y\amp {}\approx{} -10000 \\ y \amp {}\approx{} 1.00\text{.} \\ \end{aligned} \end{equation*}
Bahkan, kita memperoleh nilai \(y\) yang sama ketika kedua persamaan dipertukarkan. Di sini, kita mengalikan persamaan pertama dengan 0.0001 dan mengurangkannya dari persamaan kedua. Kita kemudian memperoleh
\begin{equation*} \begin{aligned} (1-0.0001)y \amp {}={}1-0.0002 \\ 0.9999 y \amp {}={} 0.9998 \\ y \amp {}\approx{} 1.00\text{.} \\ \end{aligned} \end{equation*}
Perbedaannya muncul ketika kita menyubstitusikan \(y\approx 1\) ke persamaan pertama. Ketika persamaan ditulis dalam urutan semula, kita memperoleh
\begin{equation*} \begin{aligned} 0.0001x + 1.00 \amp {}\approx{} 1.00 \\ 0.0001x \amp {}\approx{} 0.00 \\ x \amp {}\approx{} 0.00\text{.} \\ \end{aligned} \end{equation*}
Dengan urutan persamaan semula, kita memperoleh solusi \(x\approx 0.00, y \approx 1.00\text{.}\)
Namun, ketika kita menulis persamaan dalam urutan sebaliknya, menyubstitusikan \(y\approx 1\) ke persamaan pertama menghasilkan
\begin{equation*} \begin{aligned} x + 1.00 \amp {}\approx{} 2.00 \\ x \amp {}\approx{} 1.00\text{.} \\ \end{aligned} \end{equation*}
Dalam hal ini, kita memperoleh solusi hampiran \(x\approx 1.00, y\approx1.00\text{,}\) yaitu solusi paling akurat yang dapat diperoleh komputer hipotetis kita. Sekadar mempertukarkan urutan persamaan menghasilkan solusi yang jauh lebih akurat.
Kita dapat memahami secara grafis mengapa hal ini berhasil. Setiap persamaan menyatakan sebuah garis pada bidang, dan solusinya adalah titik perpotongan. Perhatikan bahwa gradien kedua garis ini sangat berbeda.
Grafik dua garis \(x+y=2\) dan \(0.0001x+y=1\text{.}\) Kedua garis ini berpotongan dengan sudut kira-kira \(45\) derajat.
Kontrol papan ketik untuk menjelajahi diagram
Tombol Tindakan
Enter, A Aktifkan penjelajahan dengan papan ketik
B Aktifkan penjelajahan dengan menu
Escape Keluar dari mode penjelajahan
Panah bawah Jelajahi tingkat berikutnya di bawah
Panah atas Jelajahi tingkat berikutnya di atas
Panah kanan Jelajahi elemen berikutnya pada tingkat ini
Panah kiri Jelajahi elemen sebelumnya pada tingkat ini
X Aktifkan atau nonaktifkan mode ahli
W Tampilkan rincian tambahan jika tersedia
Spasi Ulangi keluaran suara
M Aktifkan pembesaran bertahap
Koma Aktifkan pembesaran langsung
N Nonaktifkan pembesaran
Z Tampilkan atau sembunyikan subtitel
C Gilir pengaturan kontras
T Gunakan warna monokrom
L Ganti bahasa jika tersedia
K Hentikan suara saat ini
Y Hentikan keluaran suara
O Mulai atau hentikan sonifikasi
P Ulangi keluaran sonifikasi
Ketika persamaan ditulis dalam urutan semula, kita menyubstitusikan \(y\approx1\) ke persamaan \(0.0001x + y = 1\text{,}\) yang menyatakan garis hampir horizontal. Pada garis ini, perubahan kecil pada \(y\) mengakibatkan perubahan besar pada \(x\text{.}\) Perbedaan kecil antara hampiran \(y\approx 1\) dan nilai eksak \(y=0.9998999\ldots\) mengakibatkan perbedaan besar antara hampiran \(x\approx0\) dan nilai eksak \(x=1.00010001\ldots\text{.}\)
Jika kita mempertukarkan urutan penulisan persamaan, kita menyubstitusikan hampiran \(y\approx 1\) ke persamaan \(x+y=2\text{.}\) Perhatikan bahwa gradien garis terkait adalah \(-1\text{.}\) Pada garis ini, perubahan kecil pada \(y\) juga mengakibatkan perubahan yang relatif kecil pada \(x\text{.}\) Oleh karena itu, perbedaan antara hampiran \(y\approx1\) dan nilai eksaknya hanya mengakibatkan perbedaan kecil antara hampiran \(x\approx1\) dan nilai eksaknya.
Contoh ini memotivasi teknik yang biasanya digunakan komputer untuk melakukan eliminasi Gauss. Kita hanya perlu melakukan pertukaran baris ketika terdapat nol pada posisi pivot, seperti
\begin{equation*} \left[\begin{array}{rrrr} 1 \amp -1 \amp 2 \amp 2 \\ 0 \amp 0 \amp -3 \amp 1 \\ 0 \amp 2 \amp 2 \amp -3 \\ \end{array}\right]\text{.} \end{equation*}
Namun, kita akan melakukan pertukaran baris untuk menempatkan entri dengan nilai absolut terbesar yang mungkin pada posisi pivot. Misalnya, ketika melakukan eliminasi Gauss pada matriks berikut, kita mulai dengan mempertukarkan baris pertama dan ketiga agar entri kiri atas memiliki nilai absolut terbesar yang mungkin.
\begin{equation*} \left[\begin{array}{rrrr} 2 \amp 1 \amp 2 \amp 3 \\ 1 \amp -3 \amp -2 \amp 1 \\ -3 \amp 2 \amp 3 \amp -2 \\ \end{array}\right] \sim \left[\begin{array}{rrrr} -3 \amp 2 \amp 3 \amp -2 \\ 1 \amp -3 \amp -2 \amp 1 \\ 2 \amp 1 \amp 2 \amp 3 \\ \end{array}\right]\text{.} \end{equation*}
Teknik ini disebut pivot parsial. Artinya, dalam praktiknya kita akan melakukan jauh lebih banyak operasi pertukaran baris daripada yang biasanya dilakukan ketika menghitung secara eksak dengan tangan.

Subbagian 5.1.3 Faktorisasi \(LU\)

Dalam Subbagian 1.3.3, kita melihat bahwa banyaknya operasi aritmetika yang diperlukan untuk melakukan eliminasi Gauss pada matriks \(n\times n\) adalah sekitar \(\frac23 n^3\text{.}\) Artinya, matriks \(1000\times1000\) memerlukan sekitar dua pertiga miliar operasi.
Misalkan kita ingin menyelesaikan dua persamaan, \(A\xvec = \bvec_1\) dan \(A\xvec = \bvec_2\text{.}\) Biasanya, kita akan membentuk matriks diperbesar \(\left[\begin{array}{c|c} A \amp \bvec_1 \\ \end{array}\right]\) dan \(\left[\begin{array}{c|c} A \amp \bvec_2 \\ \end{array}\right]\) dan menerapkan eliminasi Gauss. Tentu saja, langkah-langkah dalam kedua perhitungan ini hampir identik. Adakah cara untuk menyimpan sebagian perhitungan yang dilakukan ketika mereduksi \(\left[\begin{array}{c|c} A \amp \bvec_1 \\ \end{array}\right]\) dan menggunakannya kembali untuk menyelesaikan persamaan-persamaan berikutnya? Aktivitas selanjutnya akan mengarahkan kita menuju cara tersebut.

Kegiatan 5.1.3.

Kita akan memperhatikan matriks
\begin{equation*} A = \left[\begin{array}{rrr} 1 \amp 2 \amp 1 \\ -2 \amp -3 \amp -2 \\ 3 \amp 7 \amp 4 \\ \end{array}\right] \end{equation*}
dan mulai melakukan eliminasi Gauss tanpa menggunakan pivot parsial.
  1. Lakukan dua operasi penggantian baris untuk menentukan matriks yang ekuivalen baris
    \begin{equation*} A' = \left[\begin{array}{rrr} 1 \amp 2 \amp 1 \\ 0 \amp 1 \amp 0 \\ 0 \amp 1 \amp 1 \\ \end{array}\right]\text{.} \end{equation*}
    Tentukan matriks elementer \(E_1\) dan \(E_2\) yang melakukan kedua operasi ini sedemikian sehingga \(E_2E_1 A = A'\text{.}\)
  2. Lakukan operasi penggantian baris ketiga untuk menentukan matriks segitiga atas
    \begin{equation*} U = \left[\begin{array}{rrr} 1 \amp 2 \amp 1 \\ 0 \amp 1 \amp 0 \\ 0 \amp 0 \amp 1 \\ \end{array}\right]\text{.} \end{equation*}
    Tentukan matriks elementer \(E_3\) sedemikian sehingga \(E_3E_2E_1A = U\text{.}\)
  3. Kita dapat menuliskan \(A=E_1^{-1}E_2^{-1}E_3^{-1} U\text{.}\) Tentukan matriks-matriks invers \(E_1^{-1}\text{,}\) \(E_2^{-1}\text{,}\) dan \(E_3^{-1}\text{,}\) serta hasil kali \(L = E_1^{-1}E_2^{-1}E_3^{-1}\text{.}\) Kemudian verifikasikan bahwa \(A=LU\text{.}\)
  4. Misalkan kita ingin menyelesaikan persamaan \(A\xvec = \bvec = \threevec4{-7}{12}\text{.}\) Kita akan menuliskan
    \begin{equation*} A\xvec = LU\xvec = L(U\xvec) = \bvec \end{equation*}
    dan memperkenalkan vektor tak diketahui \(\cvec\) sedemikian sehingga \(U\xvec = \cvec\text{.}\) Tentukan \(\cvec\) dengan memperhatikan bahwa \(L\cvec = \bvec\) dan menyelesaikan persamaan ini.
  5. Setelah menentukan \(\cvec\text{,}\) tentukan \(\xvec\) dengan menyelesaikan \(U\xvec = \cvec\text{.}\)
  6. Dengan menggunakan faktorisasi \(A=LU\) dan proses dua langkah ini, selesaikan persamaan \(A\xvec = \threevec{2}{-2}{7}\text{.}\)
Aktivitas ini memperkenalkan metode untuk memfaktorkan matriks \(A\) sebagai hasil kali dua matriks segitiga, \(A=LU\text{,}\) dengan \(L\) segitiga bawah dan \(U\) segitiga atas. Kunci untuk menentukan faktorisasi ini adalah menyatakan operasi-operasi baris yang kita terapkan dalam algoritma eliminasi Gauss melalui perkalian dengan matriks elementer.

Contoh 5.1.1.

Misalkan kita memiliki persamaan
\begin{equation*} \begin{bmatrix} 2 \amp -3 \amp 1 \\ -4 \amp 5 \amp 0 \\ 2 \amp -2 \amp 2 \end{bmatrix} \xvec = \cthreevec8{-13}8, \end{equation*}
yang kita tulis dalam bentuk \(A\xvec = \bvec\text{.}\) Kita mulai dengan menerapkan algoritma eliminasi Gauss untuk menentukan faktorisasi \(LU\) dari \(A\text{.}\)
Langkah pertama adalah mengalikan baris pertama \(A\) dengan \(2\) dan menambahkannya ke baris kedua. Matriks elementer
\begin{equation*} E_1 = \begin{bmatrix} 1 \amp 0 \amp 0 \\ 2 \amp 1 \amp 0 \\ 0 \amp 0 \amp 1 \\ \end{bmatrix} \end{equation*}
melakukan operasi ini sehingga \(E_1A = \begin{bmatrix} 2 \amp -3 \amp 1 \\ 0 \amp -1 \amp 2 \\ 2 \amp -2 \amp 2 \end{bmatrix} \text{.}\)
Selanjutnya, kita menerapkan matriks
\begin{equation*} E_2 = \begin{bmatrix} 1 \amp 0 \amp 0 \\ 0 \amp 1 \amp 0 \\ -1 \amp 0 \amp 1 \end{bmatrix},~~~ E_3 = \begin{bmatrix} 1 \amp 0 \amp 0 \\ 0 \amp 1 \amp 0 \\ 0 \amp 1 \amp 1 \end{bmatrix} \end{equation*}
untuk memperoleh matriks segitiga atas \(U = E_3E_2E_1 A = \begin{bmatrix} 2 \amp -3 \amp 1 \\ 0 \amp -1 \amp 2 \\ 0 \amp 0 \amp 3 \end{bmatrix} \text{.}\)
Kita dapat menuliskan \(U = (E_3E_2E_1)A\text{,}\) yang menunjukkan bahwa
\begin{equation*} A = (E_3E_2E_1)^{-1}U = \begin{bmatrix} 1 \amp 0 \amp 0 \\ -2 \amp 1 \amp 0 \\ 1 \amp -1 \amp 1 \end{bmatrix} U = LU. \end{equation*}
Dengan kata lain, kita memperoleh
\begin{equation*} A = LU = \begin{bmatrix} 1 \amp 0 \amp 0 \\ -2 \amp 1 \amp 0 \\ 1 \amp -1 \amp 1 \end{bmatrix} \begin{bmatrix} 2 \amp -3 \amp 1 \\ 0 \amp -1 \amp 2 \\ 0 \amp 0 \amp 3 \end{bmatrix}. \end{equation*}
Perhatikan bahwa matriks \(L\) segitiga bawah. Hal ini merupakan akibat dari fakta bahwa matriks elementer \(E_1\text{,}\) \(E_2\text{,}\) dan \(E_3\) juga segitiga bawah.
Setelah memfaktorkan \(A=LU\) menjadi dua matriks segitiga, kita dapat menyelesaikan persamaan \(A\xvec = \bvec\) dengan menyelesaikan dua sistem segitiga. Kita menuliskan
\begin{equation*} A\xvec = L(U\xvec) = \bvec \end{equation*}
dan mendefinisikan vektor tak diketahui \(\cvec = U\xvec\text{,}\) yang ditentukan oleh persamaan \(L\cvec = \bvec\text{.}\) Karena \(L\) segitiga bawah, kita menentukan solusinya dengan substitusi maju, \(\cvec = \threevec833\text{.}\) Terakhir, kita menentukan \(\xvec\text{,}\) yaitu solusi sistem semula \(A\xvec = \bvec\text{,}\) dengan menerapkan substitusi mundur untuk menyelesaikan \(U\xvec = \cvec\text{.}\) Hal ini menghasilkan \(\xvec = \threevec2{-1}1\text{.}\)
Jika kita ingin menyelesaikan \(A\xvec = \bvec\) untuk ruas kanan \(\bvec\) yang berbeda, kita cukup mengulangi proses dua langkah ini.
Faktorisasi \(LU\) memungkinkan kita mengganti satu persamaan \(A\xvec = \bvec\) dengan dua persamaan yang lebih sederhana
\begin{equation*} \begin{aligned} L\cvec \amp = \bvec \\ U\xvec \amp = \cvec. \\ \end{aligned} \end{equation*}
Misalnya, persamaan \(L\cvec = \bvec\) dalam contoh kita berbentuk
\begin{equation*} \left[\begin{array}{rrr} 1 \amp 0 \amp 0 \\ -2 \amp 1 \amp 0 \\ 1 \amp -1 \amp 1 \end{array}\right]\cvec = \threevec8{-13}8\text{.} \end{equation*}
Karena \(L\) merupakan matriks segitiga bawah, kita dapat langsung membaca komponen pertama \(\cvec\) dari persamaan: \(c_1 = 8\text{.}\) Selanjutnya, kita memperoleh \(-2c_1+c_2 = -13\text{,}\) yang menghasilkan \(c_2 = 3\text{,}\) dan \(c_1 - c_2 + c_3 = 8\text{,}\) yang menghasilkan \(c_3=3\text{.}\) Penyelesaian sistem segitiga lebih sederhana karena kita hanya perlu melakukan serangkaian substitusi.
Bahkan, penyelesaian persamaan dengan matriks segitiga \(n\times n\) memerlukan sekitar \(\frac 12 n^2\) operasi. Setelah memiliki faktorisasi \(A=LU\text{,}\) kita menyelesaikan persamaan \(A\xvec=\bvec\) dengan menyelesaikan dua persamaan yang melibatkan matriks segitiga, yang memerlukan sekitar \(n^2\) operasi. Misalnya, jika \(A\) merupakan matriks \(1000\times1000\text{,}\) kita menyelesaikan persamaan \(A\xvec = \bvec\) dengan sekitar satu juta langkah. Bandingkan hal ini dengan kira-kira satu miliar operasi yang diperlukan untuk melakukan eliminasi Gauss; penghematannya sangat besar. Tentu saja, kita harus terlebih dahulu menentukan faktorisasi \(LU\) dari \(A\text{,}\) dan hal ini memerlukan kira-kira sebanyak kerja yang diperlukan untuk melakukan eliminasi Gauss. Namun, setelah memiliki faktorisasi \(LU\text{,}\) kita dapat menggunakannya untuk menyelesaikan \(A\xvec=\bvec\) bagi ruas kanan \(\bvec\) yang berbeda-beda.
Namun, pembahasan kita sejauh ini mengabaikan satu masalah. Ingat bahwa kadang-kadang kita harus melakukan operasi pertukaran baris selain penggantian baris. Pertukaran baris pada umumnya dinyatakan dengan perkalian oleh matriks seperti
\begin{equation*} P = \left[\begin{array}{rrr} 0 \amp 0 \amp 1 \\ 0 \amp 1 \amp 0 \\ 1 \amp 0 \amp 0 \\ \end{array}\right]\text{,} \end{equation*}
yang mempertukarkan baris pertama dan ketiga. Perhatikan bahwa matriks ini bukan matriks segitiga, sehingga melakukan pertukaran baris akan mengganggu struktur faktorisasi \(LU\) yang kita cari. Tanpa membahas perinciannya, kita cukup memperhatikan bahwa paket perangkat lunak aljabar linear menyediakan matriks \(P\) yang mendeskripsikan cara baris-baris dipermutasikan dalam proses eliminasi Gauss. Secara khusus, kita akan menuliskan \(PA = LU\text{,}\) dengan \(P\) matriks permutasi, \(L\) segitiga bawah, dan \(U\) segitiga atas.
Oleh karena itu, untuk menyelesaikan persamaan \(A\xvec = \bvec\text{,}\) pertama-tama kita mengalikan kedua ruas dengan \(P\) sehingga memperoleh
\begin{equation*} PA\xvec = LU\xvec = P\bvec\text{.} \end{equation*}
Artinya, kita mengalikan \(\bvec\) dengan \(P\text{,}\) lalu menentukan \(\xvec\) dengan menggunakan faktorisasi tersebut: \(L\cvec = P\bvec\) dan \(U\xvec = \cvec\text{.}\)

Kegiatan 5.1.4.

Sage dapat membuat faktorisasi \(LU\text{;}\) setelah memiliki matriks A, kita menuliskan P, L, U = A.LU() untuk memperoleh matriks \(P\text{,}\) \(L\text{,}\) dan \(U\) sedemikian sehingga \(PA = LU\text{.}\)
  1. Dalam Contoh 5.1.1, kita menentukan faktorisasi \(LU\)
    \begin{equation*} A = \begin{bmatrix} 2 \amp -3 \amp 1 \\ -4 \amp 5 \amp 0 \\ 2 \amp -2 \amp 2 \end{bmatrix} = \begin{bmatrix} 1 \amp 0 \amp 0 \\ -2 \amp 1 \amp 0 \\ 1 \amp -1 \amp 1 \end{bmatrix} \begin{bmatrix} 2 \amp -3 \amp 1 \\ 0 \amp -1 \amp 2 \\ 0 \amp 0 \amp 3 \end{bmatrix}=LU. \end{equation*}
    Dengan menggunakan Sage, definisikan matriks \(A\text{,}\) lalu mintalah Sage menentukan faktorisasi \(LU\text{.}\) Apakah matriks \(P\text{,}\) \(L\text{,}\) dan \(U\) yang diperoleh?
    Perhatikan bahwa Sage memperoleh faktorisasi \(LU\) yang berbeda dari faktorisasi yang kita peroleh pada contoh sebelumnya. Hal ini karena Sage menggunakan pivot parsial, seperti yang dijelaskan dalam bagian sebelumnya, ketika melakukan eliminasi Gauss.
  2. Definisikan vektor \(\bvec = \threevec8{-13}{8}\) dalam Sage dan hitung \(P\bvec\text{.}\)
  3. Gunakan matriks L dan U untuk menyelesaikan \(L\cvec = P\bvec\) dan \(U\xvec = \cvec\text{.}\) Anda seharusnya memperoleh solusi \(\xvec\) yang sama dengan yang diperoleh dalam contoh sebelumnya.
  4. Gunakan faktorisasi tersebut untuk menyelesaikan persamaan \(A\xvec = \threevec9{-16}{10}\text{.}\)
  5. Bagaimana faktorisasi tersebut menunjukkan bahwa \(A\) invertibel sehingga setiap persamaan \(A\xvec=\bvec\) memiliki solusi tunggal?
  6. Misalkan kita memiliki matriks
    \begin{equation*} B = \left[\begin{array}{rrr} 3 \amp -1 \amp 2 \\ 2 \amp -1 \amp 1 \\ 2 \amp 1 \amp 3 \\ \end{array}\right]\text{.} \end{equation*}
    Gunakan Sage untuk menentukan faktorisasi \(LU\text{.}\) Jelaskan bagaimana faktorisasi tersebut menunjukkan bahwa \(B\) tidak invertibel.
  7. Perhatikan matriks
    \begin{equation*} C = \left[\begin{array}{rrrr} -2 \amp 1 \amp 2 \amp -1 \\ 1 \amp -1 \amp 0 \amp 2 \\ 3 \amp 2 \amp -1 \amp 0 \\ \end{array}\right] \end{equation*}
    dan tentukan faktorisasi \(LU\)-nya. Jelaskan mengapa \(C\) dan \(U\) memiliki ruang nol yang sama, lalu gunakan pengamatan ini untuk menentukan basis bagi \(\nul(C)\text{.}\)

Subbagian 5.1.4 Ringkasan

Kita meninjau kembali eliminasi Gauss, yang telah digunakan sebagai alat utama untuk menentukan solusi sistem linear, dan menelaah kepraktisannya dari segi keakuratan numerik maupun usaha komputasi.
  • Kita melihat bahwa keakuratan perhitungan yang dilakukan komputer dapat ditingkatkan dengan menggunakan pivot parsial, yaitu teknik yang melakukan pertukaran baris agar entri pada posisi pivot memiliki nilai absolut terbesar yang mungkin.
  • Dengan memulai dari matriks \(A\text{,}\) kita menggunakan algoritma eliminasi Gauss untuk menuliskan \(PA = LU\text{,}\) dengan \(P\) matriks permutasi, \(L\) segitiga bawah, dan \(U\) segitiga atas.
  • Menentukan faktorisasi ini memerlukan kira-kira sebanyak kerja yang diperlukan untuk melakukan eliminasi Gauss. Namun, setelah memiliki faktorisasi tersebut, kita dapat dengan cepat menyelesaikan persamaan berbentuk \(A\xvec = \bvec\) dengan terlebih dahulu menyelesaikan \(L\cvec = P\bvec\text{,}\) lalu \(U\xvec = \cvec\text{.}\)

Latihan 5.1.5 Latihan

1.

Dalam bagian ini, kita melihat bahwa galat dalam aritmetika komputer dapat menghasilkan solusi hampiran yang jauh dari solusi eksaknya. Berikut ini contoh lain terjadinya hal tersebut. Perhatikan matriks
\begin{equation*} A = \left[\begin{array}{cc} 1 \amp 1 \\ 1 \amp 1.0001 \\ \end{array}\right]\text{.} \end{equation*}
  1. Tentukan solusi eksak persamaan \(A\xvec = \twovec{2}{2}\text{.}\)
  2. Misalkan sistem linear ini muncul di tengah perhitungan yang lebih besar. Namun, akibat suatu galat dalam perhitungan ruas kanan persamaan, komputer mengira kita ingin menyelesaikan \(A\xvec = \ctwovec{2}{2.0001}\text{.}\) Tentukan solusi persamaan ini dan bandingkan dengan solusi persamaan pada bagian sebelumnya dalam latihan ini.
Perhatikan bahwa perubahan kecil pada ruas kanan persamaan mengakibatkan perubahan besar pada solusi. Dalam hal ini, kita mengatakan bahwa matriks \(A\) berkondisi buruk karena solusinya sangat peka terhadap perubahan kecil pada ruas kanan persamaan. Meskipun tidak akan kita lakukan di sini, kita dapat membuat ukuran bagi matriks yang menunjukkan apakah suatu matriks berkondisi buruk. Sayangnya, tidak banyak yang dapat kita lakukan untuk mengatasi masalah ini.

2.

Dalam bagian ini, pada salah satu aktivitas kita menentukan faktorisasi \(LU\) dari matriks
\begin{equation*} A = \left[\begin{array}{rrr} 1 \amp 2 \amp 1 \\ -2 \amp -3 \amp -2 \\ 3 \amp 7 \amp 4 \\ \end{array}\right] \end{equation*}
tanpa menggunakan pivot parsial. Sekarang, terapkan serangkaian operasi baris dengan menggunakan pivot parsial untuk menentukan matriks segitiga atas \(U\) yang ekuivalen baris dengan \(A\text{.}\)

3.

Dalam latihan berikut, gunakan faktorisasi \(LU\) yang diberikan untuk menyelesaikan persamaan \(A\xvec = \bvec\text{.}\)
  1. Selesaikan persamaan
    \begin{equation*} A\xvec = \left[\begin{array}{rr} 1 \amp 0 \\ -2 \amp 1 \\ \end{array}\right] \left[\begin{array}{rr} 3 \amp 1 \\ 0 \amp -2 \\ \end{array}\right]\xvec = \twovec{-3}{0}\text{.} \end{equation*}
  2. Selesaikan persamaan
    \begin{equation*} A\xvec = \left[\begin{array}{rrr} 1 \amp 0 \amp 0 \\ -2 \amp 1 \amp 0 \\ -1 \amp 2 \amp 1 \\ \end{array}\right] \left[\begin{array}{rrr} 2 \amp 1 \amp 0 \\ 0 \amp -1 \amp 3 \\ 0 \amp 0 \amp 1 \\ \end{array}\right]\xvec = \threevec{5}{-5}{7}\text{.} \end{equation*}

4.

Gunakan Sage untuk menyelesaikan persamaan berikut dengan menentukan faktorisasi \(LU\text{:}\)
\begin{equation*} \left[\begin{array}{rrr} 3 \amp 4 \amp -1 \\ 2 \amp 4 \amp 1 \\ -3 \amp 1 \amp 4 \\ \end{array}\right] \xvec = \threevec{-3}{-3}{-4}\text{.} \end{equation*}

5.

Berikut ini masalah lain terkait aritmetika hampiran komputer yang akan kita jumpai dalam bagian selanjutnya. Perhatikan matriks
\begin{equation*} A = \left[\begin{array}{rrr} 0.2 \amp 0.2 \amp 0.4 \\ 0.2 \amp 0.3 \amp 0.1 \\ 0.6 \amp 0.5 \amp 0.5 \\ \end{array}\right]\text{.} \end{equation*}
  1. Perhatikan bahwa matriks ini merupakan matriks stokastik positif. Apa yang kita ketahui tentang nilai-nilai eigen matriks ini?
  2. Gunakan Sage untuk mendefinisikan matriks \(A\) dengan desimal seperti 0.2 dan matriks identitas \(3\times3\) \(I\text{.}\) Mintalah Sage menghitung \(B = A-I\) dan menentukan bentuk eselon baris tereduksi dari \(B\text{.}\)
  3. Mengapa perhitungan yang dilakukan Sage tidak benar?
  4. Jelaskan mengapa penggunaan komputer untuk menentukan vektor-vektor eigen matriks \(A\) dengan menentukan basis bagi \(\nul(A-\lambda I)\) menimbulkan masalah.

6.

Dalam praktiknya, invers matriks \(A\) jarang ditentukan. Menghitungnya memerlukan banyak usaha, dan kita dapat menyelesaikan setiap persamaan berbentuk \(A\xvec = \bvec\) dengan menggunakan faktorisasi \(LU\text{,}\) sehingga invers tidak diperlukan. Bagaimanapun, cara terbaik untuk menghitung invers adalah menggunakan faktorisasi \(LU\text{,}\) sebagaimana ditunjukkan oleh latihan ini.
  1. Misalkan \(PA = LU\text{.}\) Jelaskan mengapa \(A^{-1} = U^{-1}L^{-1}P\text{.}\)
    Karena \(L\) dan \(U\) merupakan matriks segitiga, menentukan inversnya relatif efisien. Hal ini menjadikan metode tersebut cara yang efektif untuk menentukan \(A^{-1}\text{.}\)
  2. Perhatikan matriks
    \begin{equation*} A = \left[\begin{array}{rrr} 3 \amp 4 \amp -1 \\ 2 \amp 4 \amp 1 \\ -3 \amp 1 \amp 4 \\ \end{array}\right]\text{.} \end{equation*}
    Tentukan faktorisasi \(LU\) dari \(A\) dan gunakan faktorisasi tersebut untuk menentukan \(A^{-1}\text{.}\)

7.

Perhatikan matriks
\begin{equation*} A = \left[\begin{array}{rrrr} a \amp a \amp a \amp a \\ a \amp b \amp b \amp b \\ a \amp b \amp c \amp c \\ a \amp b \amp c \amp d \\ \end{array}\right]\text{.} \end{equation*}
  1. Tentukan faktorisasi \(LU\) dari \(A\text{.}\)
  2. Syarat apakah pada \(a\text{,}\) \(b\text{,}\) \(c\text{,}\) dan \(d\) yang menjamin bahwa \(A\) invertibel?

8.

Dalam faktorisasi \(LU\) suatu matriks, semua entri diagonal \(L\) bernilai \(1\text{,}\) sedangkan entri diagonal \(U\) tidak harus bernilai \(1\text{.}\) Latihan ini akan menelaah pengamatan tersebut dengan memperhatikan matriks
\begin{equation*} A = \left[\begin{array}{rrr} 3 \amp 1 \amp 1 \\ -6 \amp -4 \amp -1 \\ 0 \amp -4 \amp 1 \\ \end{array}\right]\text{.} \end{equation*}
  1. Lakukan eliminasi Gauss tanpa pivot parsial untuk menentukan \(U\text{,}\) yaitu matriks segitiga atas yang ekuivalen baris dengan \(A\text{.}\)
  2. Entri-entri diagonal \(U\) disebut pivot. Jelaskan mengapa \(\det A\) sama dengan hasil kali pivot-pivotnya.
  3. Berapakah \(\det A\) untuk matriks \(A\) ini?
  4. Secara lebih umum, jika kita memiliki \(PA=LU\text{,}\) jelaskan mengapa \(\det A\) sama dengan positif atau negatif hasil kali pivot-pivotnya.

9.

Berikan alasan yang mendukung jawaban Anda atas pertanyaan- pertanyaan berikut.
  1. Dalam bagian ini, komputer hipotetis kita hanya dapat menyimpan bilangan dengan 3 tempat desimal. Kebanyakan komputer dapat menyimpan bilangan dengan 15 tempat desimal atau lebih. Mengapa kita tetap perlu memperhatikan keakuratan perhitungan ketika menyelesaikan sistem persamaan linear?
  2. Menentukan faktorisasi \(LU\) suatu matriks \(A\) memerlukan kira-kira sebanyak kerja yang diperlukan untuk menentukan bentuk eselon baris tereduksinya. Lalu, mengapa faktorisasi \(LU\) berguna?
  3. Bagaimana kita dapat menentukan apakah suatu matriks invertibel dari faktorisasi \(LU\)-nya?

10.

Perhatikan matriks
\begin{equation*} A = \left[\begin{array}{rrrr} -1 \amp 1 \amp 0 \amp 0 \\ 1 \amp -2 \amp 1 \amp 0 \\ 0 \amp 1 \amp -2 \amp 1 \\ 0 \amp 0 \amp -1 \amp 1 \\ \end{array}\right]\text{.} \end{equation*}
  1. Tentukan faktorisasi \(LU\) dari \(A\text{.}\)
  2. Gunakan faktorisasi tersebut untuk menentukan basis bagi \(\nul(A)\text{.}\)
  3. Kita telah melihat bahwa \(\nul(A) = \nul(U)\text{.}\) Apakah \(\col(A) = \col(L)\) benar?