Kursus Matematika untuk AI · Pelajaran 23 dari 180
Eliminasi Gauss Mempertahankan Himpunan Solusi
Pulihkan parameter model dari sistem dengan pivot nol, lalu implementasikan operasi baris yang aman dan pemeriksaan residual di NumPy.
Sistem pemulihan parameter dapat memuat informasi yang tepat tetapi tetap dimulai dengan angka nol yang tidak nyaman. Jika pivot pertama bernilai nol, respons yang aman bukanlah menciptakan persamaan baru atau membagi dengan nol. Tulis ulang kendala yang sama sampai strukturnya terlihat.
Itulah janji eliminasi Gauss: gunakan operasi baris elementer yang dapat dibalik untuk menyederhanakan sistem linear sambil mempertahankan himpunan solusi yang persis sama. Setelah menyelesaikan pelajaran ini, Anda akan dapat menerapkan tiga operasi baris yang sah, menyelesaikan masalah pemulihan parameter kecil, mengimplementasikan operasinya di NumPy, serta mendiagnosis pivot nol, baris redundan, kontradiksi, dan residual koma mengambang.
Hasil pembelajaran: Terapkan operasi baris elementer tanpa mengubah solusi.
Pelajaran 13: Tidak ada solusi, satu solusi, atau banyak solusi mengelompokkan sistem linear berdasarkan himpunan solusinya. Pelajaran 18: Matriks mengatur aturan linear memberi kita cara ringkas untuk menyimpan koefisien. Companion resmi Mathematics for Machine Learning menempatkan langkah berikutnya di Bagian 2.3 dari PDF buku saat ini. Sumber tersebut menjelaskan transformasi elementer dan matriks augmented; angka, skenario parameter, kode, visual, dan asesmen di sini adalah orisinal.
Tujuannya adalah sistem yang lebih sederhana, bukan pertanyaan yang berbeda
Pertimbangkan sistem dengan persamaan linear dan peubah. Kita dapat menuliskannya sebagai
dengan sebagai matriks koefisien, memuat parameter yang tidak diketahui, dan memuat ruas kanan yang diamati. Setiap baris persamaan matriks mewakili satu persamaan skalar:
Eliminasi Gauss mengubah tampilan baris-baris tersebut agar pivot dan peubah lebih mudah dibaca. Namun, eliminasi tidak boleh mengubah vektor parameter mana yang membuat semua persamaan benar. Invariannya adalah himpunan
Notasi matriks menjadi lebih berguna ketika ruas kanan ditempelkan pada baris koefisien:
Ini adalah matriks augmented. Garis pemisah vertikal mengingatkan bahwa kolom terakhir bukan koefisien peubah lain. Kolom itu adalah keluaran persamaan dan harus ikut berpindah bersama barisnya setiap kali baris tersebut diubah.
Tiga langkah yang dapat dibalik mempertahankan himpunan solusi
Misalkan adalah satu baris lengkap dari matriks augmented. Tepat ada tiga operasi baris elementer:
| Operasi yang sah | Notasi | Alasan dapat dibalik |
|---|---|---|
| Menukar dua baris | Tukar sekali lagi. | |
| Mengalikan baris dengan skalar tak nol | , | Kalikan dengan . |
| Menambahkan kelipatan satu baris ke baris lain | , | Kurangi dari . |
Operasi ketiga sering disebut penggantian baris. Operasi ini mencakup menambahkan satu persamaan ke persamaan lain, mengurangkan satu persamaan dari persamaan lain, dan menghapus koefisien dengan kelipatan yang dipilih secara cermat.
Syarat tak nol itu penting. Mengubah menjadi menghapus sebuah kendala; tidak ada operasi invers yang dapat memulihkannya. Aturan untuk seluruh baris juga penting: mengalikan koefisien tanpa mengalikan entri ruas kanan yang bersesuaian akan membuat persamaan baru.
Mengapa matriks augmented membawa seluruh persamaan
Misalkan satu baris mewakili
Baris augmented-nya adalah . Mengalikan persamaan dengan berarti
sehingga operasi matriks yang sah adalah
Baris justru akan menyatakan . Itu adalah kendala yang berbeda. Eliminasi Gauss bukan izin untuk mengedit sisi kiri dan sisi kanan secara terpisah; eliminasi adalah penulisan ulang terkontrol atas persamaan lengkap.
Prinsip yang sama menjelaskan penggantian baris. Jika
maka mengganti dengan berarti
Setiap koefisien dan ruas kanan menerima kombinasi yang sama. Baris baru lebih mudah digunakan, tetapi masih mengodekan informasi yang sudah ada pada pasangan baris lama.
Contoh: memulihkan tiga parameter skor
Bayangkan skor linear mainan yang dibangun dari tiga sinyal terukur:
- : fitur kecocokan pengambilan;
- : fitur verifikasi; dan
- : fitur konfirmasi alat.
Aturan skornya adalah
Hitungan dan skor di bawah sengaja dibuat kecil. Ini adalah masalah identifikasi parameter untuk pembelajaran, bukan klaim bahwa sistem pemeringkatan produksi seharusnya memakai fitur atau bobot tersebut.
| Observasi | skor teramati | |||
|---|---|---|---|---|
| A | 0 | 2 | 1 | 5 |
| B | 1 | 1 | 1 | 4 |
| C | 2 | 4 | 5 | 15 |
Ketiga barisnya menjadi
Dalam bentuk matriks,
Entri pertama bernilai nol, jadi baris pertama tidak dapat diskalakan menjadi pivot pertama. Ini adalah masalah pencatatan, bukan bukti bahwa sistem tidak memiliki solusi. Kita dapat menukar baris tak nol ke posisi tersebut. Visual statis-first mencatat setiap keadaan, termasuk label operasi dan matriks augmented lengkap:
Setiap operasi baris dalam contoh pemulihan tiga parameter.
Setiap operasi baris dalam contoh pemulihan tiga parameter
Catatan statis lengkap
Setiap keadaan tetap terlihat di bawah kontrol opsional. Operasi mengubah satu baris lengkap, sehingga setiap keadaan merepresentasikan sistem ekuivalen.
Matriks augmented asli θ₁ θ₂ θ₃ b R1 0 2 1 5 R2 1 1 1 4 R3 2 4 5 15 Matriks setelah langkah 1 θ₁ θ₂ θ₃ b R1 2 4 5 15 R2 1 1 1 4 R3 0 2 1 5 Matriks setelah langkah 2 θ₁ θ₂ θ₃ b R1 1 2 5/2 15/2 R2 1 1 1 4 R3 0 2 1 5 Matriks setelah langkah 3 θ₁ θ₂ θ₃ b R1 1 2 5/2 15/2 R2 0 -1 -3/2 -7/2 R3 0 2 1 5 Matriks setelah langkah 4 θ₁ θ₂ θ₃ b R1 1 2 5/2 15/2 R2 0 2 1 5 R3 0 -1 -3/2 -7/2 Matriks setelah langkah 5 θ₁ θ₂ θ₃ b R1 1 2 5/2 15/2 R2 0 1 1/2 5/2 R3 0 -1 -3/2 -7/2 Matriks setelah langkah 6 θ₁ θ₂ θ₃ b R1 1 0 3/2 5/2 R2 0 1 1/2 5/2 R3 0 -1 -3/2 -7/2 Matriks setelah langkah 7 θ₁ θ₂ θ₃ b R1 1 0 3/2 5/2 R2 0 1 1/2 5/2 R3 0 0 -1 -1 Matriks setelah langkah 8 θ₁ θ₂ θ₃ b R1 1 0 3/2 5/2 R2 0 1 1/2 5/2 R3 0 0 1 1 Matriks setelah langkah 9 θ₁ θ₂ θ₃ b R1 1 0 0 1 R2 0 1 1/2 5/2 R3 0 0 1 1 Matriks setelah langkah 10 θ₁ θ₂ θ₃ b R1 1 0 0 1 R2 0 1 0 2 R3 0 0 1 1
Telusuri satu transformasi sah setiap kali
Fokuskan panel ini lalu gunakan tombol atau tombol panah kiri dan kanan untuk berpindah antar-keadaan.
Langkah 0 / 10
OperasiMulai: matriks augmented asli
| θ₁ | θ₂ | θ₃ | b | |
|---|---|---|---|---|
| R1 | 0 | 2 | 1 | 5 |
| R2 | 1 | 1 | 1 | 4 |
| R3 | 2 | 4 | 5 | 15 |
Entri pertama pada kolom pertama adalah nol, sehingga penskalaan baris itu tidak sah. Baris tak nol di bawahnya dapat menyediakan pivot pertama.
Label baris, teks operasi, dan garis vertikal sebelum b menyampaikan makna tanpa bergantung pada warna. Urutan statis adalah cadangan jika JavaScript tidak tersedia.
Berikut perhitungan yang sama dalam urutan aljabar. Kita menggunakan pivot parsial pada dua kolom pertama: ketika beberapa kandidat tak nol tersedia, pilih kandidat dengan magnitudo terbesar pada kolom saat ini. Visual pelajaran mempertahankan pecahan agar setiap operasi dapat diperiksa dengan tangan.
Parameter yang dipulihkan lolos pemeriksaan substitusi langsung:
Solusi ini tidak muncul karena operasi baris menebak parameter baru. Setiap langkah hanya mengubah representasi dari tiga kendala yang sama. Blok identitas terakhir membuat jawabannya mudah dibaca.
Implementasi NumPy mencerminkan matematikanya
Implementasi berikut membuat ketiga operasi sah terlihat secara eksplisit. Implementasi bekerja pada salinan array augmented dua dimensi yang bernilai real dan berhingga. Kolom terakhir diperlakukan sebagai ruas kanan, dan atol adalah ambang di bawahnya nilai koma mengambang dianggap nol. Implementasi melakukan eliminasi Gauss–Jordan, sehingga entri dibersihkan baik di bawah maupun di atas setiap pivot.
import numpy as np
def swap_rows(matrix, first, second):
result = np.array(matrix, dtype=float, copy=True)
result[[first, second], :] = result[[second, first], :]
return result
def scale_row(matrix, row, factor):
if factor == 0:
raise ValueError("row scaling needs a nonzero factor")
result = np.array(matrix, dtype=float, copy=True)
result[row, :] *= factor
return result
def replace_row(matrix, target, source, factor):
if target == source:
raise ValueError("target and source rows must be different")
result = np.array(matrix, dtype=float, copy=True)
result[target, :] += factor * result[source, :]
return result
def gauss_jordan(augmented, atol=1e-12):
work = np.array(augmented, dtype=float, copy=True)
if work.ndim != 2 or work.shape[1] < 2:
raise ValueError("expected a 2D augmented matrix")
if not np.all(np.isfinite(work)):
raise ValueError("all entries must be finite")
row_count, column_count = work.shape
variable_count = column_count - 1
pivot_row = 0
for pivot_column in range(variable_count):
if pivot_row == row_count:
break
candidates = np.abs(work[pivot_row:, pivot_column])
pivot_offset = int(np.argmax(candidates))
if candidates[pivot_offset] <= atol:
continue
pivot = pivot_row + pivot_offset
if pivot != pivot_row:
work = swap_rows(work, pivot_row, pivot)
pivot_value = work[pivot_row, pivot_column]
work = scale_row(work, pivot_row, 1.0 / pivot_value)
for row in range(row_count):
if row == pivot_row:
continue
coefficient = work[row, pivot_column]
if abs(coefficient) > atol:
work = replace_row(
work, row, pivot_row, -coefficient
)
pivot_row += 1
work[np.abs(work) <= atol] = 0.0
return work
A = np.array(
[
[0.0, 2.0, 1.0],
[1.0, 1.0, 1.0],
[2.0, 4.0, 5.0],
]
)
b = np.array([5.0, 4.0, 15.0])
augmented = np.column_stack((A, b))
rref = gauss_jordan(augmented)
theta = rref[:, -1] # valid here because the coefficient block is full rank
residual = A @ theta - b
assert np.allclose(residual, 0.0, rtol=1e-12, atol=1e-12)
assert np.allclose(
theta,
np.linalg.solve(A, b),
rtol=1e-12,
atol=1e-12,
)
print(theta)
print(np.linalg.norm(residual, ord=np.inf))
Output yang diverifikasi adalah
[1. 2. 1.]
0.0
Assertion terakhir membandingkan hasil eliminasi yang dibuat secara manual dengan numpy.linalg.solve, yang menurut dokumentasi NumPy saat ini didefinisikan untuk sistem persegi berpangkat penuh dan dilaporkan melempar LinAlgError untuk matriks koefisien singular atau non-persegi. Perbandingan ini adalah pemeriksaan silang, bukan alasan untuk menyembunyikan operasi baris: tujuan pelajaran ini adalah membuat mekanisme yang mempertahankan ekuivalensi dapat diperiksa.
Residual
mengukur seberapa baik parameter yang dihitung memenuhi persamaan yang diberikan. Norma infinity yang digunakan kode adalah koordinat residual dengan nilai absolut terbesar. Dalam aritmetika eksak, contoh ini menghasilkan vektor nol. Dalam aritmetika koma mengambang, hasil yang benar dapat menghasilkan nilai dengan orde sebesar pembulatan mesin.
Kasus batas memperlihatkan arti pivot
Pivot nol adalah titik percabangan algoritme, bukan vonis. Jika posisi pivot saat ini nol dan ada entri tak nol di bawah pada kolom yang sama, tukar baris. Jika semua entri di bawah nol, lanjutkan ke kolom berikutnya; kolom tersebut mungkin memang tidak memuat informasi independen baru.
Setelah eliminasi, periksa baris dengan semua koefisien nol. Ada dua hasil berbeda:
- Baris semua nol dengan ruas kanan nol, , redundan. Baris itu tidak menambahkan kendala. Jika sebuah peubah juga tidak memiliki pivot, sistem mungkin memiliki tak hingga banyak solusi.
- Baris semua nol dengan ruas kanan tak nol, misalnya , menyatakan . Sistem tidak konsisten dan tidak memiliki solusi.
Sebagai contoh, dua baris berikut
mengodekan garis yang sama dua kali. Mengubah hanya ruas kanan kedua menghasilkan hasil yang berbeda:
yang merupakan kontradiksi. Baris koefisien tampak dependen pada kedua contoh; ruas kanan menentukan apakah kendala yang diamati selaras. Eliminasi harus membawa entri tersebut agar algoritme dapat membedakan redundansi dari kontradiksi.
Uji miskonsepsi paling singkat adalah menanyakan apa yang terjadi pada ketika sisi kirinya dikalikan . Hasil yang sah adalah , bukan . Operasi baris mempertahankan himpunan solusi karena persamaan lengkap ditransformasikan secara dapat dibalik.
Mengapa ini penting dalam alur AI
Skor mainan tersebut menunjukkan penggunaan langsung: beberapa observasi dapat memulihkan bobot yang tidak diketahui ketika persamaan mengidentifikasi satu vektor parameter. Dalam pipeline nyata, matriks dapat menggambarkan bobot kalibrasi, model fisik kecil, sistem kendala, atau irisan diagnostik dari model yang lebih besar. Eliminasi membantu menjawab tiga pertanyaan praktis:
- Apakah observasi menyediakan pivot untuk setiap parameter?
- Apakah observasi yang tampak berulang sebenarnya hanya redundan?
- Apakah target terukur bertentangan dengan aturan linear yang diasumsikan?
Metode ini juga menunjukkan batas masalah eksak. Pengukuran yang bising sering membuat persamaan tidak konsisten, dan dataset dengan terlalu banyak persamaan mungkin tidak memiliki vektor yang memenuhi setiap baris secara eksak. Dalam situasi itu, memaksa kontradiksi pergi akan mengubah pertanyaan. Metode kuadrat terkecil menanyakan hal yang berbeda—mencari vektor dengan kesalahan agregat kecil—dan termasuk dalam keputusan aljabar linear numerik berikutnya, bukan klaim ekuivalensi baris eksak. Demikian pula, numpy.linalg.solve mengharapkan matriks koefisien persegi berpangkat penuh; masalah singular atau non-persegi membutuhkan metode yang dipilih sesuai tujuannya.
Pelajaran berikutnya memberi nama pada pola tangga yang diperlihatkan eliminasi: pivot, peubah dasar, peubah bebas, dan bentuk solusi umum. Invarian yang perlu dibawa ke depan sederhana: setiap operasi baris yang sah mengubah cara pandang terhadap sistem, bukan himpunan jawabannya.
Uji pemahaman Anda
Question 1
Mengapa mengalikan satu baris dengan nol bukan operasi baris elementer, sedangkan mengalikannya dengan 5 adalah sah?
Show the step-by-step solution
Mulai dari persamaan baris . Mengalikannya dengan menghasilkan . Karena , persamaan asli dapat dipulihkan dengan mengalikan . Himpunan solusi tidak berubah.
Mengalikannya dengan nol menghasilkan untuk setiap . Kendala asli menghilang, dan tidak ada perkalian yang dapat memulihkannya. Operasi tersebut tidak dapat dibalik dan karena itu dapat memperbesar himpunan solusi.
Question 2
Terapkan R₁ ← R₁ − 2R₂ pada matriks augmented [[1, 2 | 7], [0, 1 | 3]]. Apa baris pertama yang baru?
Show the step-by-step solution
Gunakan baris kedua lengkap, termasuk entri ruas kanannya:
Kalikan baris kedua dengan :
Kurangkan komponen demi komponen:
Baris pertama yang baru adalah . Menghilangkan pengurangan pada ruas kanan akan menghasilkan persamaan berbeda.
Question 3
Selesaikan sistem 0x + y = 2 dan x + y = 3 menggunakan pertukaran baris sebelum eliminasi.
Show the step-by-step solution
Tuliskan matriks augmented:
Posisi pivot pertama bernilai nol, jadi tukar barisnya:
Hapus entri di atas pivot kedua:
Membaca blok identitas memberikan dan . Substitusi memeriksa kedua persamaan asli: dan .
Question 4
Apa arti baris semua nol dalam masing-masing kasus: [0, 0 | 0] dan [0, 0 | 4]?
Show the step-by-step solution
Baris menyatakan . Baris itu redundan dan tidak membatasi peubah. Jika peubah lain tidak memiliki pivot, kebebasan tersebut dapat menghasilkan tak hingga banyak solusi.
Baris menyatakan , yang mustahil. Satu baris kontradiktif membuat seluruh sistem tidak memiliki solusi, meskipun baris lain tampak konsisten.
Perbedaannya sepenuhnya berada pada ruas kanan. Eliminasi harus membawa entri tersebut agar algoritme dapat membedakan redundansi dari kontradiksi.
Question 5
Seorang pengembang mengubah [1, 1 | 3] menjadi [2, 2 | 3] dan mengatakan ini hanya penskalaan baris. Apakah klaim itu benar?
Show the step-by-step solution
Penskalaan baris dengan harus mengalikan setiap entri:
Baris yang diklaim, , menyatakan . Membagi persamaan tersebut dengan menghasilkan , bukan yang asli. Klaim itu salah karena ruas kanan diubah secara terpisah.
Question 6
Mengapa implementasi NumPy menggunakan toleransi saat menentukan apakah pivot atau residual bernilai nol?
Show the step-by-step solution
Dalam aritmetika eksak, nol adalah nilai yang tepat. Operasi koma mengambang menyimpan banyak pecahan secara pendekatan, sehingga hasil yang secara matematis nol dapat muncul sebagai nilai kecil seperti . Menganggap setiap pola bit tak nol sebagai pivot sungguhan dapat membuat operasi baris yang tidak bermakna.
Karena itu implementasi membandingkan magnitudo dengan atol. Implementasi juga memeriksa residual dengan toleransi relatif dan absolut. Toleransi harus sesuai dengan skala data: ambang yang masuk akal untuk nilai sekitar mungkin terlalu besar untuk pengukuran sekitar atau terlalu kecil untuk nilai yang sangat besar. Residual kecil adalah bukti kecocokan, bukan bukti bahwa estimasi parameter pada sistem berkondisi buruk itu stabil.
Question 7
Sistem pemulihan memiliki tiga parameter tak diketahui, tetapi eliminasi berakhir dengan hanya dua pivot dan satu baris semua nol. Apa kesimpulan Anda sebelum memilih metode numerik?
Show the step-by-step solution
Dua pivot membatasi dua arah parameter yang independen. Baris semua nol tidak menambahkan informasi baru, sehingga setidaknya satu arah parameter bebas kecuali baris lain menunjukkan kontradiksi.
Jika tidak ada baris berbentuk dengan , sistem konsisten dan memiliki tak hingga banyak solusi. Data tidak mengidentifikasi satu vektor parameter yang unik di bawah model ini. Menambahkan angka sembarang pada pivot yang hilang adalah keputusan pemodelan, bukan konsekuensi eliminasi; langkah berikutnya adalah melaporkan parameter bebas atau mengumpulkan pengukuran independen.