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.

Bagikan artikel ini

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 mm persamaan linear dan nn peubah. Kita dapat menuliskannya sebagai

Aθ=b,A\boldsymbol{\theta}=\boldsymbol{b},

dengan A∈Rm×nA\in\mathbb{R}^{m\times n} sebagai matriks koefisien, θ∈Rn\boldsymbol{\theta}\in\mathbb{R}^{n} memuat parameter yang tidak diketahui, dan b∈Rm\boldsymbol{b}\in\mathbb{R}^{m} memuat ruas kanan yang diamati. Setiap baris persamaan matriks mewakili satu persamaan skalar:

ai1θ1+ai2θ2+⋯+ainθn=bi.a_{i1}\theta_1+a_{i2}\theta_2+\cdots+a_{in}\theta_n=b_i.

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

S={θ∈Rn:Aθ=b}.\mathcal{S}=\left\{\boldsymbol{\theta}\in\mathbb{R}^{n}: A\boldsymbol{\theta}=\boldsymbol{b}\right\}.

Notasi matriks menjadi lebih berguna ketika ruas kanan ditempelkan pada baris koefisien:

[a11a12⋯a1nb1a21a22⋯a2nb2⋮⋮⋮⋮am1am2⋯amnbm].\left[\begin{array}{ccc|c} a_{11}&a_{12}&\cdots&a_{1n}&b_1\\ a_{21}&a_{22}&\cdots&a_{2n}&b_2\\ \vdots&\vdots&&\vdots&\vdots\\ a_{m1}&a_{m2}&\cdots&a_{mn}&b_m \end{array}\right].

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 RiR_i adalah satu baris lengkap dari matriks augmented. Tepat ada tiga operasi baris elementer:

Operasi yang sahNotasiAlasan dapat dibalik
Menukar dua barisRi↔RjR_i\leftrightarrow R_jTukar sekali lagi.
Mengalikan baris dengan skalar tak nolRi←λRiR_i\leftarrow\lambda R_i, λ≠0\lambda\ne0Kalikan dengan 1/λ1/\lambda.
Menambahkan kelipatan satu baris ke baris lainRi←Ri+λRjR_i\leftarrow R_i+\lambda R_j, i≠ji\ne jKurangi λRj\lambda R_j dari RiR_i.

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 RiR_i menjadi 0Ri0R_i 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

θ1+2θ2=5.\theta_1+2\theta_2=5.

Baris augmented-nya adalah [1    2∣5][1\;\;2\mid5]. Mengalikan persamaan dengan 33 berarti

3(θ1+2θ2)=3(5)⟺3θ1+6θ2=15,3(\theta_1+2\theta_2)=3(5) \quad\Longleftrightarrow\quad 3\theta_1+6\theta_2=15,

sehingga operasi matriks yang sah adalah

[1    2∣5]⟶[3    6∣15].[1\;\;2\mid5]\longrightarrow[3\;\;6\mid15].

Baris [3    6∣5][3\;\;6\mid5] justru akan menyatakan 3θ1+6θ2=53\theta_1+6\theta_2=5. 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

Ri:aiTθ=bi,Rj:ajTθ=bj,\begin{aligned} R_i &: \boldsymbol{a}_i^{\mathsf T}\boldsymbol{\theta}=b_i,\\ R_j &: \boldsymbol{a}_j^{\mathsf T}\boldsymbol{\theta}=b_j, \end{aligned}

maka mengganti RiR_i dengan Ri+λRjR_i+\lambda R_j berarti

(ai+λaj)Tθ=bi+λbj.(\boldsymbol{a}_i+\lambda\boldsymbol{a}_j)^{\mathsf T} \boldsymbol{\theta} =b_i+\lambda b_j.

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:

  • f1f_1: fitur kecocokan pengambilan;
  • f2f_2: fitur verifikasi; dan
  • f3f_3: fitur konfirmasi alat.

Aturan skornya adalah

s=θ1f1+θ2f2+θ3f3.s=\theta_1f_1+\theta_2f_2+\theta_3f_3.

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.

Observasif1f_1f2f_2f3f_3skor teramati ss
A0215
B1114
C24515

Ketiga barisnya menjadi

0θ1+2θ2+θ3=5,θ1+θ2+θ3=4,2θ1+4θ2+5θ3=15.\begin{aligned} 0\theta_1+2\theta_2+\theta_3&=5,\\ \theta_1+\theta_2+\theta_3&=4,\\ 2\theta_1+4\theta_2+5\theta_3&=15. \end{aligned}

Dalam bentuk matriks,

[0215111424515].\left[\begin{array}{ccc|c} 0&2&1&5\\ 1&1&1&4\\ 2&4&5&15 \end{array}\right].

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.

  1. Langkah 0Mulai: matriks augmented asli
    Matriks augmented asli
     θ₁θ₂θ₃b
    R10215
    R21114
    R324515
  2. Langkah 1R₁ ↔ R₃
    Matriks setelah langkah 1
     θ₁θ₂θ₃b
    R124515
    R21114
    R30215
  3. Langkah 2R₁ ← ½R₁
    Matriks setelah langkah 2
     θ₁θ₂θ₃b
    R1125/215/2
    R21114
    R30215
  4. Langkah 3R₂ ← R₂ − R₁
    Matriks setelah langkah 3
     θ₁θ₂θ₃b
    R1125/215/2
    R20-1-3/2-7/2
    R30215
  5. Langkah 4R₂ ↔ R₃
    Matriks setelah langkah 4
     θ₁θ₂θ₃b
    R1125/215/2
    R20215
    R30-1-3/2-7/2
  6. Langkah 5R₂ ← ½R₂
    Matriks setelah langkah 5
     θ₁θ₂θ₃b
    R1125/215/2
    R2011/25/2
    R30-1-3/2-7/2
  7. Langkah 6R₁ ← R₁ − 2R₂
    Matriks setelah langkah 6
     θ₁θ₂θ₃b
    R1103/25/2
    R2011/25/2
    R30-1-3/2-7/2
  8. Langkah 7R₃ ← R₃ + R₂
    Matriks setelah langkah 7
     θ₁θ₂θ₃b
    R1103/25/2
    R2011/25/2
    R300-1-1
  9. Langkah 8R₃ ← −R₃
    Matriks setelah langkah 8
     θ₁θ₂θ₃b
    R1103/25/2
    R2011/25/2
    R30011
  10. Langkah 9R₁ ← R₁ − 3/2R₃
    Matriks setelah langkah 9
     θ₁θ₂θ₃b
    R11001
    R2011/25/2
    R30011
  11. Langkah 10R₂ ← R₂ − 1/2R₃
    Matriks setelah langkah 10
     θ₁θ₂θ₃b
    R11001
    R20102
    R30011

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

Matriks augmented saat ini
 θ₁θ₂θ₃b
R10215
R21114
R324515

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:

[021111245][121]=[0+4+11+2+12+8+5]=[5415]=b.\begin{aligned} \begin{bmatrix} 0&2&1\\ 1&1&1\\ 2&4&5 \end{bmatrix} \begin{bmatrix}1\\2\\1\end{bmatrix} &= \begin{bmatrix} 0+4+1\\ 1+2+1\\ 2+8+5 \end{bmatrix}\\ &= \begin{bmatrix}5\\4\\15\end{bmatrix} =\boldsymbol{b}. \end{aligned}

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

r=Aθ^−b\boldsymbol{r}=A\widehat{\boldsymbol{\theta}}-\boldsymbol{b}

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:

  1. Baris semua nol dengan ruas kanan nol, [0    0    0∣0][0\;\;0\;\;0\mid0], redundan. Baris itu tidak menambahkan kendala. Jika sebuah peubah juga tidak memiliki pivot, sistem mungkin memiliki tak hingga banyak solusi.
  2. Baris semua nol dengan ruas kanan tak nol, misalnya [0    0    0∣1][0\;\;0\;\;0\mid1], menyatakan 0=10=1. Sistem tidak konsisten dan tidak memiliki solusi.

Sebagai contoh, dua baris berikut

[123246]→R2←R2−2R1[123000]\left[\begin{array}{cc|c} 1&2&3\\ 2&4&6 \end{array}\right] \xrightarrow{R_2\leftarrow R_2-2R_1} \left[\begin{array}{cc|c} 1&2&3\\ 0&0&0 \end{array}\right]

mengodekan garis yang sama dua kali. Mengubah hanya ruas kanan kedua menghasilkan hasil yang berbeda:

[123247]→R2←R2−2R1[123001],\left[\begin{array}{cc|c} 1&2&3\\ 2&4&7 \end{array}\right] \xrightarrow{R_2\leftarrow R_2-2R_1} \left[\begin{array}{cc|c} 1&2&3\\ 0&0&1 \end{array}\right],

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 θ1+θ2=3\theta_1+\theta_2=3 ketika sisi kirinya dikalikan 22. Hasil yang sah adalah 2θ1+2θ2=62\theta_1+2\theta_2=6, bukan 2θ1+2θ2=32\theta_1+2\theta_2=3. 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 g(θ)=0g(\boldsymbol{\theta})=0. Mengalikannya dengan 55 menghasilkan 5g(θ)=05g(\boldsymbol{\theta})=0. Karena 5≠05\ne0, persamaan asli dapat dipulihkan dengan mengalikan 1/51/5. Himpunan solusi tidak berubah.

Mengalikannya dengan nol menghasilkan 0=00=0 untuk setiap θ\boldsymbol{\theta}. 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:

R1=[1    2∣7],R2=[0    1∣3].R_1=[1\;\;2\mid7], \qquad R_2=[0\;\;1\mid3].

Kalikan baris kedua dengan 22:

2R2=[0    2∣6].2R_2=[0\;\;2\mid6].

Kurangkan komponen demi komponen:

R1−2R2=[1−0    2−2∣7−6]=[1    0∣1].R_1-2R_2 =[1-0\;\;2-2\mid7-6] =[1\;\;0\mid1].

Baris pertama yang baru adalah [1    0∣1][1\;\;0\mid1]. 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:

[012113113].\left[\begin{array}{cc|c} 0&1&2\\ 1&1&3 1&1&3 \end{array}\right].

Posisi pivot pertama bernilai nol, jadi tukar barisnya:

[113012].\left[\begin{array}{cc|c} 1&1&3\\ 0&1&2 \end{array}\right].

Hapus entri di atas pivot kedua:

R1←R1−R2⟹[101012].R_1\leftarrow R_1-R_2 \quad\Longrightarrow\quad \left[\begin{array}{cc|c} 1&0&1\\ 0&1&2 \end{array}\right].

Membaca blok identitas memberikan x=1x=1 dan y=2y=2. Substitusi memeriksa kedua persamaan asli: 0(1)+2=20(1)+2=2 dan 1+2=31+2=3.

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 [0    0∣0][0\;\;0\mid0] menyatakan 0=00=0. Baris itu redundan dan tidak membatasi peubah. Jika peubah lain tidak memiliki pivot, kebebasan tersebut dapat menghasilkan tak hingga banyak solusi.

Baris [0    0∣4][0\;\;0\mid4] menyatakan 0=40=4, 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 22 harus mengalikan setiap entri:

2[1    1∣3]=[2    2∣6].2[1\;\;1\mid3]=[2\;\;2\mid6].

Baris yang diklaim, [2    2∣3][2\;\;2\mid3], menyatakan 2θ1+2θ2=32\theta_1+2\theta_2=3. Membagi persamaan tersebut dengan 22 menghasilkan θ1+θ2=3/2\theta_1+\theta_2=3/2, bukan θ1+θ2=3\theta_1+\theta_2=3 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 10−1610^{-16}. 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 11 mungkin terlalu besar untuk pengukuran sekitar 10−910^{-9} 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 [0    0    0∣c][0\;\;0\;\;0\mid c] dengan c≠0c\ne0, 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.

Sumber

  1. Mathematics for Machine Learning companion website
  2. Mathematics for Machine Learning book PDF
  3. NumPy documentation: numpy.linalg.solve
  4. NumPy documentation: numpy.allclose
  5. NumPy documentation: numpy.finfo
  6. NumPy documentation: numpy.linalg.norm
  7. NumPy documentation: numpy.linalg.cond