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*}
-
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*}
-
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.
-
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?
-
Dengan menyubstitusikan nilai
\(y\) yang kita peroleh ke persamaan pertama, nilai
\(x\) apakah yang diperoleh?
-
Bandingkan solusi yang diperoleh komputer dengan solusi sebenarnya dan nilailah kualitas hampirannya.
-
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?
-
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.
-
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.
-
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{.}\)
-
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{.}\)
-
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{.}\)
-
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.
-
Setelah menentukan
\(\cvec\text{,}\) tentukan
\(\xvec\) dengan menyelesaikan
\(U\xvec = \cvec\text{.}\)
-
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{.}\)
-
\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.
-
Definisikan vektor
\(\bvec = \threevec8{-13}{8}\) dalam Sage dan hitung
\(P\bvec\text{.}\)
-
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.
-
Gunakan faktorisasi tersebut untuk menyelesaikan persamaan
\(A\xvec
= \threevec9{-16}{10}\text{.}\)
-
Bagaimana faktorisasi tersebut menunjukkan bahwa
\(A\) invertibel sehingga setiap persamaan
\(A\xvec=\bvec\) memiliki solusi tunggal?
-
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.
-
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{.}\)