หน้าแรก คลังความรู้ พีชคณิตเชิงเส้น ระบบสมการเชิงเส้น
Linear Algebra
// บทที่ 7.3 · พีชคณิตเชิงเส้น · Systems of Linear Equations
ระบบสมการเชิงเส้นและการกำจัดแบบเกาส์ (Systems of Linear Equations)
การลดแถว (row reduction) คือวิธีที่ทรงพลังที่สุดของพีชคณิตเชิงเส้น ใช้ได้กับทุกระบบ ทุกขนาด ทั้งที่มีคำตอบเดียว ไม่มีคำตอบ หรือมีคำตอบไม่จำกัด และเป็นวิธีที่โปรแกรมจำลองวงจรอย่าง SPICE ใช้จริง หน้านี้เริ่มจากภาพของเส้นตรงตัดกันแบบ ม.ปลาย ไปจนถึงแรงก์ การแยก LU และกำลังสองน้อยสุด สูตรใช้รหัส L
สรุปใน 30 วินาที
เขียนระบบเป็นเมทริกซ์แต่งเติม [ A ∣ b ] [A\mid\mathbf b] [ A ∣ b ] แล้วลดแถวด้วยการดำเนินการสามแบบ: สลับแถว คูณแถว บวกพหุคูณ
ลดจนเป็นขั้นบันได (REF) แล้วแทนค่าย้อนกลับ หรือลดต่อเป็น RREF แล้วอ่านคำตอบ
แถว [ 0 ⋯ 0 ∣ c ≠ 0 ] [0\ \cdots\ 0\mid c\ne0] [ 0 ⋯ 0 ∣ c = 0 ] = ไม่มีคำตอบ · ตัวหลักครบทุกหลัก = คำตอบเดียว · มีหลักไม่มีตัวหลัก = คำตอบไม่จำกัด
แรงก์ = จำนวนตัวหลัก และจำนวนพารามิเตอร์อิสระ = จำนวนตัวแปร − แรงก์
ระดับ พื้นฐาน ม.ปลาย · ปี 1กลาง ป.ตรี วิศวกรรมขั้นสูง ป.โท · งานวิจัย
อ่านวิธีทำ ตัวหลัก (pivot) ค่าที่กำลังเปลี่ยน คำตอบ
ค้นหาสูตรในหน้านี้
โหมดฝึกทำ: ซ่อนวิธีทำ
ภาพของระบบสมการ: สามกรณีที่เป็นไปได้ พื้นฐาน
ระบบสองสมการสองตัวแปรคือเส้นตรงสองเส้น คำตอบคือจุดที่เส้นทั้งสองตัดกัน ซึ่งมีได้แค่สามแบบ และสามแบบนี้เป็นจริงกับระบบทุกขนาด ไม่มีระบบเชิงเส้นไหนมีคำตอบสองหรือสามคำตอบพอดี
ตัดกันจุดเดียว
ขนาน ไม่มีคำตอบ
ทับกัน คำตอบไม่จำกัด
สามมิติก็เหมือนกัน แต่เป็นระนาบตัดกัน: ตัดกันที่จุดเดียว ไม่มีจุดร่วม หรือตัดกันเป็นเส้น/ระนาบ (ไม่จำกัด)
L1 Matrix form and augmented matrix รูปเมทริกซ์และเมทริกซ์แต่งเติม
a 11 x 1 + ⋯ + a 1 n x n = b 1 ⋮ a m 1 x 1 + ⋯ + a m n x n = b m ⟺ A x = b ⟺ [ a 11 ⋯ a 1 n b 1 ⋮ ⋮ ⋮ a m 1 ⋯ a m n b m ] \begin{aligned} a_{11}x_1 + \cdots + a_{1n}x_n &= b_1 \\ &\ \,\vdots \\ a_{m1}x_1 + \cdots + a_{mn}x_n &= b_m \end{aligned} \iff A\mathbf x = \mathbf b \iff \left[\begin{array}{ccc|c} a_{11} & \cdots & a_{1n} & b_1 \\ \vdots & & \vdots & \vdots \\ a_{m1} & \cdots & a_{mn} & b_m \end{array}\right] a 11 x 1 + ⋯ + a 1 n x n a m 1 x 1 + ⋯ + a mn x n = b 1 ⋮ = b m ⟺ A x = b ⟺ a 11 ⋮ a m 1 ⋯ ⋯ a 1 n ⋮ a mn b 1 ⋮ b m
A A A เมทริกซ์สัมประสิทธิ์ (coefficient matrix) m × n m\times n m × n · x \mathbf x x เวกเตอร์ตัวแปร · b \mathbf b b ค่าคงที่ทางขวา · เส้นตั้งแยก A กับ b ไว้เพื่อเตือนว่าหลักขวาสุดคือค่าคงที่
การดำเนินการตามแถวเบื้องต้น พื้นฐาน
สามการดำเนินการนี้คือสิ่งที่ทำกับสมการได้อยู่แล้วตั้งแต่ ม.ต้น: สลับลำดับสมการ คูณสมการด้วยค่าไม่เป็นศูนย์ และเอาสมการหนึ่งบวกด้วยพหุคูณของอีกสมการ ทำแล้วคำตอบไม่เปลี่ยน ระบบใหม่จึง “สมมูล” กับระบบเดิม
L2 Elementary row operations การดำเนินการตามแถวเบื้องต้น
(1) R i ↔ R j (2) R i ← k R i ( k ≠ 0 ) (3) R i ← R i + k R j ( i ≠ j ) \text{(1) } R_i \leftrightarrow R_j \qquad \text{(2) } R_i \leftarrow kR_i \ (k \ne 0) \qquad \text{(3) } R_i \leftarrow R_i + kR_j \ (i \ne j) (1) R i ↔ R j (2) R i ← k R i ( k = 0 ) (3) R i ← R i + k R j ( i = j )
เขียนกำกับไว้บนลูกศรทุกครั้ง เช่น → R 2 ← R 2 − 2 R 1 \xrightarrow{R_2 \leftarrow R_2 - 2R_1} R 2 ← R 2 − 2 R 1 ช่วยให้ตรวจย้อนได้ และเป็นวิธีที่อาจารย์ให้คะแนนวิธีทำ
L3 Row echelon form (REF) รูปแบบขั้นบันไดแถว
( ■ ∗ ∗ ∗ 0 ■ ∗ ∗ 0 0 0 ■ 0 0 0 0 ) \begin{pmatrix} \hlP{\blacksquare} & * & * & * \\ 0 & \hlP{\blacksquare} & * & * \\ 0 & 0 & 0 & \hlP{\blacksquare} \\ 0 & 0 & 0 & 0 \end{pmatrix} ■ 0 0 0 ∗ ■ 0 0 ∗ ∗ 0 0 ∗ ∗ ■ 0
ตัวหลัก (pivot, ■ ไม่เป็นศูนย์) แต่ละแถวอยู่ขวาของแถวบน · ใต้ตัวหลักเป็นศูนย์ · แถวศูนย์อยู่ล่างสุด
L4 Reduced row echelon form (RREF) รูปแบบขั้นบันไดแถวลดรูป
( 1 0 ∗ 0 0 1 ∗ 0 0 0 0 1 0 0 0 0 ) \begin{pmatrix} \hlP{1} & 0 & * & 0 \\ 0 & \hlP{1} & * & 0 \\ 0 & 0 & 0 & \hlP{1} \\ 0 & 0 & 0 & 0 \end{pmatrix} 1 0 0 0 0 1 0 0 ∗ ∗ 0 0 0 0 1 0
เพิ่มจาก REF: ตัวหลักเป็น 1 และเหนือ ตัวหลักเป็นศูนย์ด้วย RREF ของเมทริกซ์หนึ่งมีแบบเดียว (unique)
การกำจัดแบบเกาส์ (Gaussian Elimination) พื้นฐาน
L8 Gaussian elimination + back substitution ขั้นตอนการกำจัดแบบเกาส์
[ A ∣ b ] → สร้างศูนย์ใต้ตัวหลักทีละหลัก [ U ∣ c ] → แทนค่าย้อนกลับ ล่าง → บน x [A\mid\mathbf b] \ \xrightarrow{\text{สร้างศูนย์ใต้ตัวหลักทีละหลัก}} \ [U\mid\mathbf c] \ \xrightarrow{\text{แทนค่าย้อนกลับ ล่าง → บน}} \ \mathbf x [ A ∣ b ] สร้างศูนย์ใต้ตัวหลักทีละหลัก [ U ∣ c ] แทนค่าย้อนกลับ ล่าง → บน x
ทีละหลักจากซ้ายไปขวา: (1) เลือกตัวหลักที่ไม่เป็นศูนย์ ถ้าเป็น 0 ให้สลับแถว (2) ใช้ R i ← R i − a i k a k k R k R_i \leftarrow R_i - \tfrac{a_{ik}}{a_{kk}}R_k R i ← R i − a kk a ik R k ล้างทุกตัวใต้ตัวหลัก (3) ขยับไปหลักถัดไป · เคล็ดลับทำมือ: ถ้ามีแถวที่ขึ้นต้นด้วย 1 ให้สลับขึ้นมาเป็นตัวหลัก เลี่ยงเศษส่วน
ตัวอย่าง L-1 · เกาส์ 3×3 แก้ระบบ x + y + z = 6 2 x − y + z = 3 x + 2 y − z = 2 \begin{aligned} x + y + z &= 6 \\ 2x - y + z &= 3 \\ x + 2y - z &= 2 \end{aligned} x + y + z 2 x − y + z x + 2 y − z = 6 = 3 = 2 ลองในเครื่องคิดเลข
เขียนเมทริกซ์แต่งเติม L1
[ 1 1 1 6 2 − 1 1 3 1 2 − 1 2 ] \left[\begin{array}{ccc|c} \hlP{1} & 1 & 1 & 6 \\ 2 & -1 & 1 & 3 \\ 1 & 2 & -1 & 2 \end{array}\right] 1 2 1 1 − 1 2 1 1 − 1 6 3 2
ใช้ 1 \hlP{1} 1 มุมซ้ายบนล้างหลักที่ 1 L2
→ R 3 ← R 3 − R 1 R 2 ← R 2 − 2 R 1 [ 1 1 1 6 0 − 3 − 1 − 9 0 1 − 2 − 4 ] \xrightarrow[R_3 \leftarrow R_3 - R_1]{R_2 \leftarrow R_2 - 2R_1} \left[\begin{array}{ccc|c} 1 & 1 & 1 & 6 \\ 0 & \hlF{-3} & \hlF{-1} & \hlF{-9} \\ 0 & \hlF{1} & \hlF{-2} & \hlF{-4} \end{array}\right] R 2 ← R 2 − 2 R 1 R 3 ← R 3 − R 1 1 0 0 1 − 3 1 1 − 1 − 2 6 − 9 − 4
แถว 3 ขึ้นต้นด้วย 1 สลับขึ้นมาเป็นตัวหลักจะไม่มีเศษส่วน
→ R 2 ↔ R 3 [ 1 1 1 6 0 1 − 2 − 4 0 − 3 − 1 − 9 ] \xrightarrow{R_2 \leftrightarrow R_3} \left[\begin{array}{ccc|c} 1 & 1 & 1 & 6 \\ 0 & \hlP{1} & -2 & -4 \\ 0 & -3 & -1 & -9 \end{array}\right] R 2 ↔ R 3 1 0 0 1 1 − 3 1 − 2 − 1 6 − 4 − 9
→ R 3 ← R 3 + 3 R 2 [ 1 1 1 6 0 1 − 2 − 4 0 0 − 7 − 21 ] \xrightarrow{R_3 \leftarrow R_3 + 3R_2} \left[\begin{array}{ccc|c} 1 & 1 & 1 & 6 \\ 0 & 1 & -2 & -4 \\ 0 & 0 & \hlF{-7} & \hlF{-21} \end{array}\right] R 3 ← R 3 + 3 R 2 1 0 0 1 1 0 1 − 2 − 7 6 − 4 − 21
ได้รูปขั้นบันได L3
แทนค่าย้อนกลับจากแถวล่าง
− 7 z = − 21 ⇒ z = 3 y − 2 ( 3 ) = − 4 ⇒ y = 2 x + 2 + 3 = 6 ⇒ x = 1 \begin{aligned} -7z &= -21 &&\Rightarrow\ \hlU{z = 3} \\ y - 2(3) &= -4 &&\Rightarrow\ \hlU{y = 2} \\ x + 2 + 3 &= 6 &&\Rightarrow\ \hlU{x = 1} \end{aligned} − 7 z y − 2 ( 3 ) x + 2 + 3 = − 21 = − 4 = 6 ⇒ z = 3 ⇒ y = 2 ⇒ x = 1
( x , y , z ) = ( 1 , 2 , 3 ) (x, y, z) = (1, 2, 3) ( x , y , z ) = ( 1 , 2 , 3 )
ตรวจ: 1 + 2 + 3 = 6 1 + 2 + 3 = 6 1 + 2 + 3 = 6 ✓ · 2 − 2 + 3 = 3 2 - 2 + 3 = 3 2 − 2 + 3 = 3 ✓ · 1 + 4 − 3 = 2 1 + 4 - 3 = 2 1 + 4 − 3 = 2 ✓
ตัวอย่าง L-2 · ลดต่อเป็น RREF (เกาส์-จอร์แดน)
ทำต่อจากขั้นบันไดของตัวอย่าง L-1 จนอ่านคำตอบได้ทันที
→ R 3 ← − 1 7 R 3 [ 1 1 1 6 0 1 − 2 − 4 0 0 1 3 ] \xrightarrow{R_3 \leftarrow -\frac17R_3} \left[\begin{array}{ccc|c} 1 & 1 & 1 & 6 \\ 0 & 1 & -2 & -4 \\ 0 & 0 & \hlP{1} & 3 \end{array}\right] R 3 ← − 7 1 R 3 1 0 0 1 1 0 1 − 2 1 6 − 4 3
ล้างเหนือ ตัวหลักของหลักที่ 3
→ R 1 ← R 1 − R 3 R 2 ← R 2 + 2 R 3 [ 1 1 0 3 0 1 0 2 0 0 1 3 ] \xrightarrow[R_1 \leftarrow R_1 - R_3]{R_2 \leftarrow R_2 + 2R_3} \left[\begin{array}{ccc|c} 1 & 1 & 0 & 3 \\ 0 & \hlP{1} & 0 & 2 \\ 0 & 0 & 1 & 3 \end{array}\right] R 2 ← R 2 + 2 R 3 R 1 ← R 1 − R 3 1 0 0 1 1 0 0 0 1 3 2 3
→ R 1 ← R 1 − R 2 [ 1 0 0 1 0 1 0 2 0 0 1 3 ] \xrightarrow{R_1 \leftarrow R_1 - R_2} \left[\begin{array}{ccc|c} 1 & 0 & 0 & \hlU{1} \\ 0 & 1 & 0 & \hlU{2} \\ 0 & 0 & 1 & \hlU{3} \end{array}\right] R 1 ← R 1 − R 2 1 0 0 0 1 0 0 0 1 1 2 3
ด้านซ้ายกลายเป็น I I I ด้านขวาคือคำตอบ L4
อ่านได้เลย x = 1 , y = 2 , z = 3 x = 1,\ y = 2,\ z = 3 x = 1 , y = 2 , z = 3 ถ้าวางหลัก I I I ทางขวาแทน b \mathbf b b จะได้อินเวอร์สด้วยวิธีเดียวกัน ดูหน้าอินเวอร์ส
แรงก์และเงื่อนไขการมีคำตอบ กลาง
เจาะลึกแยกหน้า: วิธีหาแรงก์ด้วยไมเนอร์ โจทย์พารามิเตอร์ k k k ปริภูมิศูนย์ แรงก์-ภาวะศูนย์ และแล็บสามระนาบ 3 มิติ อยู่ใน ค่าลำดับขั้นของเมทริกซ์ (แรงก์) บทที่ 7.10
หลังลดแถวแล้วไม่ต้องเดาอีก ทุกอย่างอ่านจากตำแหน่งของตัวหลัก จำนวนตัวหลักมีชื่อเรียกว่าแรงก์ (rank, ลำดับชั้น)
L5 Rank แรงก์
rank A = จำนวนตัวหลักใน REF ของ A \operatorname{rank}A = \text{จำนวนตัวหลักใน REF ของ } A rank A = จำนวนตัวหลักใน REF ของ A
เท่ากับจำนวนแถวที่อิสระเชิงเส้น = จำนวนหลักที่อิสระเชิงเส้น · rank A ≤ min ( m , n ) \operatorname{rank}A \le \min(m, n) rank A ≤ min ( m , n ) · rank A T = rank A \operatorname{rank}A^T = \operatorname{rank}A rank A T = rank A
L7 Homogeneous system and rank–nullity ระบบเอกพันธ์
A x = 0 มีคำตอบไม่ชัด ⟺ rank A < n , dim N ( A ) = n − rank A A\mathbf x = \mathbf 0 \text{ มีคำตอบไม่ชัด} \iff \operatorname{rank}A \lt n, \qquad \dim N(A) = n - \operatorname{rank}A A x = 0 มีคำตอบไม่ชัด ⟺ rank A < n , dim N ( A ) = n − rank A
ระบบเอกพันธ์มีคำตอบ x = 0 \mathbf x = \mathbf 0 x = 0 เสมอ (trivial) ถ้า A A A จัตุรัส มีคำตอบอื่นด้วยก็ต่อเมื่อ det A = 0 \det A = 0 det A = 0 ซึ่งเป็นหัวใจของการหาเวกเตอร์เฉพาะ
L6 Rouché–Capelli theorem เงื่อนไขการมีคำตอบ (ตัวแปร n n n ตัว)
{ rank A < rank [ A ∣ b ] ไม่มีคำตอบ (inconsistent) rank A = rank [ A ∣ b ] = n มีคำตอบเดียว rank A = rank [ A ∣ b ] = r < n มีคำตอบไม่จำกัด มีพารามิเตอร์อิสระ n − r ตัว \begin{cases} \operatorname{rank}A \lt \operatorname{rank}[A\mid\mathbf b] & \text{ไม่มีคำตอบ (inconsistent)} \\ \operatorname{rank}A = \operatorname{rank}[A\mid\mathbf b] = n & \text{มีคำตอบเดียว} \\ \operatorname{rank}A = \operatorname{rank}[A\mid\mathbf b] = r \lt n & \text{มีคำตอบไม่จำกัด มีพารามิเตอร์อิสระ } n - r \text{ ตัว} \end{cases} ⎩ ⎨ ⎧ rank A < rank [ A ∣ b ] rank A = rank [ A ∣ b ] = n rank A = rank [ A ∣ b ] = r < n ไม่มีคำตอบ (inconsistent) มีคำตอบเดียว มีคำตอบไม่จำกัด มีพารามิเตอร์อิสระ n − r ตัว
อ่านง่าย ๆ จาก REF: เจอแถว [ 0 ⋯ 0 ∣ c ≠ 0 ] [0\ \cdots\ 0\mid c\ne0] [ 0 ⋯ 0 ∣ c = 0 ] = ไม่มีคำตอบ · ไม่เจอ และทุกหลักของ A มีตัวหลัก = คำตอบเดียว · ไม่เจอ แต่บางหลักไม่มีตัวหลัก = ไม่จำกัด
L12 Structure of the general solution โครงสร้างของคำตอบทั่วไป
x = x p + x h , A x p = b , A x h = 0 \mathbf x = \mathbf x_p + \mathbf x_h, \qquad A\mathbf x_p = \mathbf b, \quad A\mathbf x_h = \mathbf 0 x = x p + x h , A x p = b , A x h = 0
คำตอบเฉพาะหนึ่งตัวบวกคำตอบทุกตัวของระบบเอกพันธ์ โครงสร้างเดียวกับคำตอบสมการเชิงอนุพันธ์ในวงจร (ผลตอบสนองบังคับ + ผลตอบสนองธรรมชาติ)
ตัวอย่าง L-3 · ระบบที่ไม่มีคำตอบ แก้ระบบ x + y + z = 3 x + 2 y + 3 z = 5 2 x + 3 y + 4 z = 9 \begin{aligned} x + y + z &= 3 \\ x + 2y + 3z &= 5 \\ 2x + 3y + 4z &= 9 \end{aligned} x + y + z x + 2 y + 3 z 2 x + 3 y + 4 z = 3 = 5 = 9 ลองในเครื่องคิดเลข
[ 1 1 1 3 1 2 3 5 2 3 4 9 ] → R 3 ← R 3 − 2 R 1 R 2 ← R 2 − R 1 [ 1 1 1 3 0 1 2 2 0 1 2 3 ] \left[\begin{array}{ccc|c} 1 & 1 & 1 & 3 \\ 1 & 2 & 3 & 5 \\ 2 & 3 & 4 & 9 \end{array}\right] \xrightarrow[R_3 \leftarrow R_3 - 2R_1]{R_2 \leftarrow R_2 - R_1} \left[\begin{array}{ccc|c} 1 & 1 & 1 & 3 \\ 0 & 1 & 2 & 2 \\ 0 & 1 & 2 & 3 \end{array}\right] 1 1 2 1 2 3 1 3 4 3 5 9 R 2 ← R 2 − R 1 R 3 ← R 3 − 2 R 1 1 0 0 1 1 1 1 2 2 3 2 3
→ R 3 ← R 3 − R 2 [ 1 1 1 3 0 1 2 2 0 0 0 1 ] \xrightarrow{R_3 \leftarrow R_3 - R_2} \left[\begin{array}{ccc|c} 1 & 1 & 1 & 3 \\ 0 & 1 & 2 & 2 \\ \hlF{0} & \hlF{0} & \hlF{0} & \hlF{1} \end{array}\right] R 3 ← R 3 − R 2 1 0 0 1 1 0 1 2 0 3 2 1
แถวสุดท้ายอ่านว่า 0 x + 0 y + 0 z = 1 0x + 0y + 0z = 1 0 x + 0 y + 0 z = 1 คือ 0 = 1 0 = 1 0 = 1 เป็นไปไม่ได้ · rank A = 2 < rank [ A ∣ b ] = 3 \operatorname{rank}A = 2 \lt \operatorname{rank}[A\mid\mathbf b] = 3 rank A = 2 < rank [ A ∣ b ] = 3 L6
ระบบไม่มีคำตอบ (สมการที่ 3 ขัดกับผลบวกของสมการ 1 และ 2 ซึ่งให้ 2 x + 3 y + 4 z = 8 2x + 3y + 4z = 8 2 x + 3 y + 4 z = 8 )
ตัวอย่าง L-4 · ระบบที่มีคำตอบไม่จำกัด เปลี่ยนค่าคงที่สมการที่ 3 เป็น 8: 2 x + 3 y + 4 z = 8 \ 2x + 3y + 4z = 8 2 x + 3 y + 4 z = 8 ลองในเครื่องคิดเลข
ลดแถวเหมือนเดิม แถวสุดท้ายกลายเป็นศูนย์ทั้งแถว แล้วลดต่อเป็น RREF
[ 1 1 1 3 0 1 2 2 0 0 0 0 ] → R 1 ← R 1 − R 2 [ 1 0 − 1 1 0 1 2 2 0 0 0 0 ] \left[\begin{array}{ccc|c} 1 & 1 & 1 & 3 \\ 0 & 1 & 2 & 2 \\ 0 & 0 & 0 & 0 \end{array}\right] \xrightarrow{R_1 \leftarrow R_1 - R_2} \left[\begin{array}{ccc|c} \hlP{1} & 0 & -1 & 1 \\ 0 & \hlP{1} & 2 & 2 \\ 0 & 0 & 0 & 0 \end{array}\right] 1 0 0 1 1 0 1 2 0 3 2 0 R 1 ← R 1 − R 2 1 0 0 0 1 0 − 1 2 0 1 2 0
หลักที่ 3 (ของ z z z ) ไม่มีตัวหลัก → z z z เป็นตัวแปรอิสระ ตั้ง z = t z = t z = t · จำนวนพารามิเตอร์ = 3 − 2 = 1 = 3 - 2 = 1 = 3 − 2 = 1 L6
x − z = 1 ⇒ x = 1 + t , y + 2 z = 2 ⇒ y = 2 − 2 t x - z = 1 \Rightarrow x = 1 + t, \qquad y + 2z = 2 \Rightarrow y = 2 - 2t x − z = 1 ⇒ x = 1 + t , y + 2 z = 2 ⇒ y = 2 − 2 t
เขียนในรูปเวกเตอร์ แยกส่วนคงที่กับส่วนที่คูณ t t t L12
( x y z ) = ( 1 2 0 ) ⏟ x p + t ( 1 − 2 1 ) ⏟ x h , t ∈ R \begin{pmatrix} x \\ y \\ z \end{pmatrix} = \underbrace{\begin{pmatrix} 1 \\ 2 \\ 0 \end{pmatrix}}_{\mathbf x_p} + t\underbrace{\begin{pmatrix} 1 \\ -2 \\ 1 \end{pmatrix}}_{\mathbf x_h}, \quad t \in \mathbb R x y z = x p 1 2 0 + t x h 1 − 2 1 , t ∈ R
คำตอบไม่จำกัด เป็นเส้นตรงในปริภูมิสามมิติ เช่น t = 0 t = 0 t = 0 ได้ ( 1 , 2 , 0 ) (1, 2, 0) ( 1 , 2 , 0 ) และ t = 1 t = 1 t = 1 ได้ ( 2 , 0 , 1 ) (2, 0, 1) ( 2 , 0 , 1 )
ตรวจ x h \mathbf x_h x h : A x h = ( 1 − 2 + 1 , 1 − 4 + 3 , 2 − 6 + 4 ) = ( 0 , 0 , 0 ) A\mathbf x_h = (1 - 2 + 1,\ 1 - 4 + 3,\ 2 - 6 + 4) = (0, 0, 0) A x h = ( 1 − 2 + 1 , 1 − 4 + 3 , 2 − 6 + 4 ) = ( 0 , 0 , 0 ) ✓ คำตอบที่เขียนต่างกัน (เช่นเลือก x = s x = s x = s เป็นพารามิเตอร์) ก็ถูกได้ ถ้าแทนกลับแล้วสอดคล้องทุกสมการ
เลือกวิธีไหนดี พื้นฐาน → กลาง
วิธี เหมาะกับ ข้อจำกัด จำนวนการคูณโดยประมาณ
แทนค่า/กำจัดตัวแปร (ม.ต้น)2 ตัวแปร เกิน 3 ตัวแปรสับสนง่าย —
คราเมอร์ 2–3 ตัวแปร ต้องการตัวแปรเดียว มีพารามิเตอร์ตัวอักษร ต้อง det A ≠ 0 \det A \ne 0 det A = 0 ช้ามากเมื่อ n ใหญ่ ( n + 1 ) (n+1) ( n + 1 ) ดีเทอร์มิแนนต์
อินเวอร์ส x = A − 1 b \mathbf x = A^{-1}\mathbf b x = A − 1 b A A A เดิม แต่ b \mathbf b b เปลี่ยนหลายรอบต้อง det A ≠ 0 \det A \ne 0 det A = 0 หาอินเวอร์สแพงกว่าแก้ตรง ≈ n 3 \approx n^3 ≈ n 3
เกาส์ / เกาส์-จอร์แดน ทุกกรณี บอกได้ว่าไม่มีหรือไม่จำกัด ทำมือนานเมื่อ n ใหญ่ ≈ n 3 / 3 \approx n^3/3 ≈ n 3 /3
LU (คอมพิวเตอร์)ระบบใหญ่ b \mathbf b b หลายชุด ต้องสลับแถวเพื่อความเสถียร ≈ n 3 / 3 \approx n^3/3 ≈ n 3 /3 ครั้งเดียว แล้ว n 2 n^2 n 2 ต่อ b \mathbf b b
การแยก LU (LU Decomposition) ขั้นสูง
เจาะลึกแยกหน้า: PA = LU แบบสลับแถว โชเลสกี อัลกอริทึมโทมัส และแล็บแยก LU ทีละขั้น อยู่ใน ผลเฉลยเชิงตัวเลข บทที่ 7.11
การกำจัดแบบเกาส์คือการแยก A A A เป็นผลคูณของสามเหลี่ยมล่าง L L L (เก็บตัวคูณที่ใช้ล้างแถว) กับสามเหลี่ยมบน U U U (ผลลัพธ์ขั้นบันได) แยกครั้งเดียวแล้วแก้ b \mathbf b b ใหม่ได้เร็วมาก วงจรเดิมที่เปลี่ยนแหล่งจ่ายหลายรอบจึงใช้ LU
L9 LU decomposition การแยก LU (แบบ Doolittle)
A = L U ⇒ A x = b ⟺ { L y = b (แทนค่าไปข้างหน้า บน → ล่าง) U x = y (แทนค่าย้อนกลับ ล่าง → บน) A = LU \quad\Rightarrow\quad A\mathbf x = \mathbf b \iff \begin{cases} L\mathbf y = \mathbf b & \text{(แทนค่าไปข้างหน้า บน → ล่าง)} \\ U\mathbf x = \mathbf y & \text{(แทนค่าย้อนกลับ ล่าง → บน)} \end{cases} A = LU ⇒ A x = b ⟺ { L y = b U x = y ( แทนค่าไปข้างหน้า บน → ล่าง ) ( แทนค่าย้อนกลับ ล่าง → บน )
L L L มี 1 บนเส้นทแยง และ l i k l_{ik} l ik = ตัวคูณที่ใช้ใน R i ← R i − l i k R k R_i \leftarrow R_i - l_{ik}R_k R i ← R i − l ik R k · ถ้าต้องสลับแถวจะได้ P A = L U PA = LU P A = LU โดย P P P คือเมทริกซ์สลับแถว · det A = ± ∏ u i i \det A = \pm\prod u_{ii} det A = ± ∏ u ii
ตัวอย่าง L-5 · แยก LU แล้วแก้ระบบ แยก A = ( 2 1 1 4 3 3 8 7 9 ) A = \begin{pmatrix} 2 & 1 & 1 \\ 4 & 3 & 3 \\ 8 & 7 & 9 \end{pmatrix} A = 2 4 8 1 3 7 1 3 9 แล้วแก้ A x = ( 4 , 10 , 24 ) T A\mathbf x = (4, 10, 24)^T A x = ( 4 , 10 , 24 ) T
ล้างหลัก 1 ด้วยตัวคูณ l 21 = 4 / 2 = 2 l_{21} = 4/2 = \hlF{2} l 21 = 4/2 = 2 และ l 31 = 8 / 2 = 4 l_{31} = 8/2 = \hlF{4} l 31 = 8/2 = 4
( 2 1 1 0 1 1 0 3 5 ) \begin{pmatrix} 2 & 1 & 1 \\ 0 & 1 & 1 \\ 0 & 3 & 5 \end{pmatrix} 2 0 0 1 1 3 1 1 5
ล้างหลัก 2 ด้วย l 32 = 3 / 1 = 3 l_{32} = 3/1 = \hlF{3} l 32 = 3/1 = 3 ได้ U U U แล้วเก็บตัวคูณลง L L L L9
U = ( 2 1 1 0 1 1 0 0 2 ) , L = ( 1 0 0 2 1 0 4 3 1 ) U = \begin{pmatrix} 2 & 1 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 2 \end{pmatrix}, \qquad L = \begin{pmatrix} 1 & 0 & 0 \\ \hlF{2} & 1 & 0 \\ \hlF{4} & \hlF{3} & 1 \end{pmatrix} U = 2 0 0 1 1 0 1 1 2 , L = 1 2 4 0 1 3 0 0 1
แทนค่าไปข้างหน้า L y = b L\mathbf y = \mathbf b L y = b
y 1 = 4 , 2 ( 4 ) + y 2 = 10 ⇒ y 2 = 2 , 4 ( 4 ) + 3 ( 2 ) + y 3 = 24 ⇒ y 3 = 2 y_1 = 4, \quad 2(4) + y_2 = 10 \Rightarrow y_2 = 2, \quad 4(4) + 3(2) + y_3 = 24 \Rightarrow y_3 = 2 y 1 = 4 , 2 ( 4 ) + y 2 = 10 ⇒ y 2 = 2 , 4 ( 4 ) + 3 ( 2 ) + y 3 = 24 ⇒ y 3 = 2
แทนค่าย้อนกลับ U x = y U\mathbf x = \mathbf y U x = y
2 x 3 = 2 ⇒ x 3 = 1 , x 2 + 1 = 2 ⇒ x 2 = 1 , 2 x 1 + 1 + 1 = 4 ⇒ x 1 = 1 2x_3 = 2 \Rightarrow x_3 = 1, \quad x_2 + 1 = 2 \Rightarrow x_2 = 1, \quad 2x_1 + 1 + 1 = 4 \Rightarrow x_1 = 1 2 x 3 = 2 ⇒ x 3 = 1 , x 2 + 1 = 2 ⇒ x 2 = 1 , 2 x 1 + 1 + 1 = 4 ⇒ x 1 = 1
x = ( 1 , 1 , 1 ) T \mathbf x = (1, 1, 1)^T x = ( 1 , 1 , 1 ) T และได้ det A = 2 ⋅ 1 ⋅ 2 = 4 \det A = 2\cdot1\cdot2 = 4 det A = 2 ⋅ 1 ⋅ 2 = 4 มาฟรี
ระบบป่วยและการสลับแถวเชิงตัวเลข ขั้นสูง
เจาะลึกแยกหน้า: นอร์ม เลขเงื่อนไข ขอบเขตความคลาดเคลื่อน การทดลองปัดเศษ และวิธีทำซ้ำจาโคบี เกาส์-ไซเดล SOR อยู่ใน ผลเฉลยเชิงตัวเลข บทที่ 7.11
บนกระดาษ det A ≠ 0 \det A \ne 0 det A = 0 ก็พอ แต่ในงานจริงค่าที่วัดมีความคลาดเคลื่อน ถ้าเส้นตรงสองเส้นเกือบขนานกัน ขยับข้อมูลนิดเดียวจุดตัดเลื่อนไปไกล ระบบแบบนี้เรียกระบบป่วย (ill-conditioned)
L11 Condition number เลขเงื่อนไข
κ ( A ) = ∥ A ∥ ∥ A − 1 ∥ , ∥ δ x ∥ ∥ x ∥ ≤ κ ( A ) ∥ δ b ∥ ∥ b ∥ \kappa(A) = \lVert A\rVert\,\lVert A^{-1}\rVert, \qquad \frac{\lVert\delta\mathbf x\rVert}{\lVert\mathbf x\rVert} \le \kappa(A)\,\frac{\lVert\delta\mathbf b\rVert}{\lVert\mathbf b\rVert} κ ( A ) = ∥ A ∥ ∥ A − 1 ∥ , ∥ x ∥ ∥ δ x ∥ ≤ κ ( A ) ∥ b ∥ ∥ δ b ∥
ความคลาดเคลื่อนสัมพัทธ์ของ b \mathbf b b ถูกขยายได้ถึง κ \kappa κ เท่า · κ ≈ 10 k \kappa \approx 10^k κ ≈ 1 0 k แปลว่าเสียความแม่นยำราว k k k หลัก · การลดแถวด้วยคอมพิวเตอร์ต้องเลือกตัวหลักที่มีขนาดใหญ่สุดในหลัก (partial pivoting) เพื่อไม่ขยายความคลาดเคลื่อนจากการปัดเศษ
ตัวอย่าง L-6 · เห็นระบบป่วยด้วยตา เปรียบเทียบ x + y = 2 x + 1.0001 y = 2.0001 \begin{aligned} x + y &= 2 \\ x + 1.0001y &= 2.0001 \end{aligned} x + y x + 1.0001 y = 2 = 2.0001 กับระบบที่เปลี่ยนค่าขวาของสมการที่ 2 เป็น 2.0002 2.0002 2.0002
ระบบแรก: ลบสมการได้ 0.0001 y = 0.0001 0.0001y = 0.0001 0.0001 y = 0.0001 จึง y = 1 , x = 1 y = 1,\ x = 1 y = 1 , x = 1
ระบบที่สอง: 0.0001 y = 0.0002 0.0001y = 0.0002 0.0001 y = 0.0002 จึง y = 2 , x = 0 y = 2,\ x = 0 y = 2 , x = 0
ค่าขวาเปลี่ยนแค่ 0.005% แต่คำตอบเปลี่ยนจาก ( 1 , 1 ) (1,1) ( 1 , 1 ) เป็น ( 0 , 2 ) (0,2) ( 0 , 2 ) · เลขเงื่อนไขของระบบนี้ κ ≈ 4 × 10 4 \kappa \approx 4\times10^4 κ ≈ 4 × 1 0 4 L11
สองเส้นเกือบทับกัน จุดตัดจึงไวมาก ในการวัดจริงต้องออกแบบการทดลองให้สมการ “ตัดกันชัด ๆ” หรือใช้ข้อมูลหลายจุดด้วยวิธีกำลังสองน้อยสุด
สมการมากกว่าตัวแปร: กำลังสองน้อยสุด ขั้นสูง
ในห้องแล็บเราวัดข้อมูลมากกว่าจำนวนตัวแปรที่ต้องการเสมอ ระบบจึงมีสมการเกินและไม่มีคำตอบที่ตรงทุกสมการ (ข้อมูลมีสัญญาณรบกวน) วิธีกำลังสองน้อยสุดหา x \mathbf x x ที่ทำให้ผลรวมกำลังสองของความคลาดเคลื่อนน้อยที่สุด
L10 Least squares (normal equations) สมการปกติ
min x ∥ A x − b ∥ 2 ⟺ A T A x ^ = A T b ⟺ x ^ = ( A T A ) − 1 A T b \min_{\mathbf x}\lVert A\mathbf x - \mathbf b\rVert^2 \iff A^TA\,\hat{\mathbf x} = A^T\mathbf b \iff \hat{\mathbf x} = (A^TA)^{-1}A^T\mathbf b x min ∥ A x − b ∥ 2 ⟺ A T A x ^ = A T b ⟺ x ^ = ( A T A ) − 1 A T b
A T A A^TA A T A จัตุรัสและสมมาตรเสมอ หาอินเวอร์สได้เมื่อหลักของ A A A อิสระเชิงเส้น · ( A T A ) − 1 A T (A^TA)^{-1}A^T ( A T A ) − 1 A T คืออินเวอร์สเทียม (pseudo-inverse) I15
ตัวอย่าง L-7 · หาค่าความต้านทานจากข้อมูลวัด วัดกระแสและแรงดันตกคร่อมตัวต้านทานได้ ( I , V ) (I, V) ( I , V ) = (1 mA, 2.1 V), (2 mA, 3.9 V), (3 mA, 6.2 V), (4 mA, 7.8 V) ฟิต V = R I + V 0 V = RI + V_0 V = R I + V 0
ตั้งสมการ 4 สมการ 2 ตัวแปร ( R , V 0 ) (R, V_0) ( R , V 0 ) โดย I I I หน่วย mA จึงได้ R R R หน่วย kΩ
( 1 1 2 1 3 1 4 1 ) ⏟ A ( R V 0 ) ≈ ( 2.1 3.9 6.2 7.8 ) ⏟ b \underbrace{\begin{pmatrix} 1 & 1 \\ 2 & 1 \\ 3 & 1 \\ 4 & 1 \end{pmatrix}}_{A}\begin{pmatrix} R \\ V_0 \end{pmatrix} \approx \underbrace{\begin{pmatrix} 2.1 \\ 3.9 \\ 6.2 \\ 7.8 \end{pmatrix}}_{\mathbf b} A 1 2 3 4 1 1 1 1 ( R V 0 ) ≈ b 2.1 3.9 6.2 7.8
คำนวณ A T A A^TA A T A และ A T b A^T\mathbf b A T b L10
A T A = ( ∑ I 2 ∑ I ∑ I 4 ) = ( 30 10 10 4 ) , A T b = ( ∑ I V ∑ V ) = ( 59.7 20 ) A^TA = \begin{pmatrix} \sum I^2 & \sum I \\ \sum I & 4 \end{pmatrix} = \begin{pmatrix} 30 & 10 \\ 10 & 4 \end{pmatrix}, \qquad A^T\mathbf b = \begin{pmatrix} \sum IV \\ \sum V \end{pmatrix} = \begin{pmatrix} 59.7 \\ 20 \end{pmatrix} A T A = ( ∑ I 2 ∑ I ∑ I 4 ) = ( 30 10 10 4 ) , A T b = ( ∑ I V ∑ V ) = ( 59.7 20 )
แก้ระบบ 2×2 ด้วยคราเมอร์ det = 120 − 100 = 20 \det = 120 - 100 = 20 det = 120 − 100 = 20
R = ( 59.7 ) ( 4 ) − ( 10 ) ( 20 ) 20 = 38.8 20 = 1.94 , V 0 = ( 30 ) ( 20 ) − ( 10 ) ( 59.7 ) 20 = 0.15 R = \frac{(59.7)(4) - (10)(20)}{20} = \frac{38.8}{20} = 1.94, \qquad V_0 = \frac{(30)(20) - (10)(59.7)}{20} = 0.15 R = 20 ( 59.7 ) ( 4 ) − ( 10 ) ( 20 ) = 20 38.8 = 1.94 , V 0 = 20 ( 30 ) ( 20 ) − ( 10 ) ( 59.7 ) = 0.15
R ≈ 1.94 k Ω R \approx 1.94\ \text{k}\Omega R ≈ 1.94 k Ω และ V 0 ≈ 0.15 V_0 \approx 0.15 V 0 ≈ 0.15 V (ค่าชดเชยของเครื่องวัด)
เครื่องคิดเลขแก้ระบบสมการแสดงวิธีทำ
ใส่ A A A และ b \mathbf b b เครื่องจะลดแถวแบบเกาส์-จอร์แดนเป็นเศษส่วนทีละขั้น บอกว่ามีคำตอบเดียว ไม่มีคำตอบ หรือไม่จำกัด (พร้อมคำตอบในรูปพารามิเตอร์) และถ้ามีคำตอบเดียวจะแสดงวิธีคราเมอร์ให้เทียบด้วย
คำถามที่พบบ่อย รู้ได้อย่างไรว่าระบบสมการไม่มีคำตอบ? ลดแถวเมทริกซ์แต่งเติม [ A ∣ b ] [A\mid\mathbf b] [ A ∣ b ] ถ้าเจอแถว [ 0 0 ⋯ 0 ∣ c ] [0\ 0\ \cdots\ 0\mid c] [ 0 0 ⋯ 0 ∣ c ] ที่ c ≠ 0 c \ne 0 c = 0 แปลว่า 0 = c 0 = c 0 = c เป็นไปไม่ได้ ระบบจึงไม่มีคำตอบ ในภาษาแรงก์คือ rank A < rank [ A ∣ b ] \operatorname{rank}A \lt \operatorname{rank}[A\mid\mathbf b] rank A < rank [ A ∣ b ]
คำตอบไม่จำกัดเขียนอย่างไร? ลดแถวเป็น RREF หลักที่ไม่มีตัวหลัก (pivot) คือตัวแปรอิสระ ตั้งให้เป็นพารามิเตอร์ เช่น z = t z = t z = t แล้วเขียนตัวแปรอื่นในรูป t t t จำนวนพารามิเตอร์เท่ากับจำนวนตัวแปรลบแรงก์
เกาส์กับเกาส์-จอร์แดนต่างกันอย่างไร? เกาส์ลดแถวจนเป็นขั้นบันได (สามเหลี่ยมบน) แล้วแทนค่าย้อนกลับจากล่างขึ้นบน เกาส์-จอร์แดนลดต่อจนตัวหลักเป็น 1 และเหนือ-ใต้ตัวหลักเป็นศูนย์หมด อ่านคำตอบได้ทันที เกาส์ใช้การคำนวณน้อยกว่าเล็กน้อย เกาส์-จอร์แดนเหมาะกับการหาอินเวอร์ส
ทำไมโปรแกรมคอมพิวเตอร์ไม่ใช้กฎของคราเมอร์? เพราะต้องหาดีเทอร์มิแนนต์ n + 1 n+1 n + 1 ตัว ซึ่งช้ากว่าการลดแถวมากเมื่อ n n n ใหญ่ โปรแกรมอย่าง MATLAB, NumPy และ SPICE ใช้การแยก LU พร้อมการสลับแถว (partial pivoting) ซึ่งทั้งเร็วและเสถียรเชิงตัวเลข
มด
อาจารย์มด · ธีรวุฒิ แสวงบุญ อาจารย์สาขาวิชาวิศวกรรมไฟฟ้า มหาวิทยาลัยราชภัฏธนบุรี สมุทรปราการ · ดูโปรไฟล์
บทความอ่านง่ายเกี่ยวกับหัวข้อนี้
ดูบทความทั้งหมด →