---
title: "การหาผลเฉลยเชิงตัวเลขของระบบสมการเชิงเส้นด้วยเมทริกซ์: เกาส์ การสลับแถว LU โชเลสกี โทมัส จาโคบี เกาส์-ไซเดล SOR และเลขเงื่อนไข"
url: https://modsengineeringmath.com/learn/linear-algebra/numerical-methods/
site: "Mod's Engineering Mathematics (อาจารย์มด)"
language: th
updated: 2026-10-25
---

> วิธีเชิงตัวเลขแก้ระบบสมการเชิงเส้น Ax = b ครบทั้งวิธีตรงและวิธีทำซ้ำ จำนวนการคำนวณ การกำจัดแบบเกาส์กับการสลับแถว (partial pivoting) การแยก LU และ PA = LU โชเลสกี อัลกอริทึมโทมัส จาโคบี เกาส์-ไซเดล SOR เงื่อนไขการลู่เข้า รัศมีสเปกตรัม เลขเงื่อนไข พร้อมตัวอย่างที่ตรวจตัวเลขแล้วและซิมูเลเตอร์ 5 ชุดที่ใช้บนมือถือได้

ฉบับ Markdown ของ https://modsengineeringmath.com/learn/linear-algebra/numerical-methods/ สำหรับผู้ช่วย AI และเครื่องมือค้นหา สูตรเขียนเป็น LaTeX ($…$ และ $$…$$) แล็บโต้ตอบและรูปมีเฉพาะในหน้าเว็บ

# การหาผลเฉลยเชิงตัวเลขของระบบสมการเชิงเส้นด้วยเมทริกซ์: เกาส์ การสลับแถว LU โชเลสกี โทมัส จาโคบี เกาส์-ไซเดล SOR และเลขเงื่อนไข

// บทที่ 7.11 · พีชคณิตเชิงเส้น · Numerical Solution of Linear Systems


โปรแกรมจำลองวงจร ซอฟต์แวร์วิเคราะห์โครงสร้าง และเกมฟิสิกส์ล้วนแก้ $A\mathbf x = \mathbf b$ ที่มีตัวแปรหลักพันถึงหลักล้านตัว วิธีที่ใช้ในห้องเรียนอย่างคราเมอร์จึงใช้ไม่ได้ หน้านี้อธิบายว่าคอมพิวเตอร์แก้ระบบสมการอย่างไรให้เร็วและไม่เพี้ยน ทั้งวิธีตรง (เกาส์ LU โชเลสกี โทมัส) และวิธีทำซ้ำ (จาโคบี เกาส์-ไซเดล SOR) พร้อมเครื่องมือวัดว่าคำตอบเชื่อได้แค่ไหน สูตรใช้รหัส N

สรุปใน 30 วินาที

- วิธีตรง ทำจำนวนขั้นแน่นอน: เกาส์ $\approx \tfrac23 n^3$ flops ต้องสลับแถวให้ตัวหลักใหญ่สุดเสมอ · LU แยกครั้งเดียวใช้ได้กับ $\mathbf b$ หลายตัว · โชเลสกีสำหรับเมทริกซ์สมมาตรบวกแน่นอน · โทมัสสำหรับสามแนวทแยง $O(n)$

- วิธีทำซ้ำ เริ่มจากค่าเดา แล้วปรับทีละรอบ: จาโคบีใช้ค่าเก่าทั้งหมด เกาส์-ไซเดลใช้ค่าใหม่ทันที SOR เร่งด้วย $\omega$ เหมาะกับระบบใหญ่และเบาบาง

- ลู่เข้าแน่นอนถ้าทแยงเด่น เงื่อนไขแท้คือ $\rho(T) \lt 1$ และยิ่ง $\rho$ เล็กยิ่งเร็ว

- เลขเงื่อนไข $\kappa(A) = \lVert A\rVert\lVert A^{-1}\rVert$ บอกว่าความคลาดเคลื่อนถูกขยายกี่เท่า เสียความแม่นยำราว $\log_{10}\kappa$ หลัก

ระดับพื้นฐาน ปี 1 · เริ่มเรียนวิธีเชิงตัวเลขกลาง ป.ตรี วิศวกรรม (Numerical Methods)ขั้นสูง ป.โท · งานจำลองจริง

## ทำไมต้องวิธีเชิงตัวเลข: ขนาดของปัญหาจริง พื้นฐาน

ในห้องเรียนเราแก้ระบบ 2–3 ตัวแปรด้วย คราเมอร์ หรือ อินเวอร์ส ได้สบาย แต่วงจรรวมหนึ่งชิปมีโนดนับหมื่น แบบจำลองไฟไนต์เอลิเมนต์ของสะพานมีตัวแปรนับล้าน คำถามจึงเปลี่ยนจาก “หาได้ไหม” เป็น “หาได้เร็วแค่ไหน และคำตอบเพี้ยนเพราะการปัดเศษหรือเปล่า”

แผนที่วิธีแก้ $A\mathbf x = \mathbf b$: วิธีตรงให้คำตอบในจำนวนขั้นที่แน่นอน วิธีทำซ้ำค่อย ๆ เข้าใกล้คำตอบ เลือกตามขนาด ความเบาบาง และโครงสร้างของเมทริกซ์

N1 Operation counts จำนวนการคำนวณ (ระบบ $n\times n$ หนาแน่น)

$$\text{เกาส์ / LU} \approx \tfrac23 n^3 \text{ flops},\quad \text{แทนค่าย้อนกลับ} \approx n^2,\quad \text{เกาส์-จอร์แดน} \approx n^3,\quad \text{คราเมอร์ (โคแฟกเตอร์)} \approx (n + 1)!$$

1 flop = การบวก/ลบ/คูณ/หารหนึ่งครั้งของเลขทศนิยม · การหาอินเวอร์สแล้วคูณ $A^{-1}\mathbf b$ ใช้ราว $2n^3$ จึงช้ากว่าและคลาดเคลื่อนมากกว่าการแก้ตรง

| จำนวนตัวแปร $n$ | เกาส์ $\approx n^3/3$ การคูณ | คราเมอร์ด้วยโคแฟกเตอร์ $\approx (n+1)!$ | เวลาที่ $10^9$ ครั้ง/วินาที (คราเมอร์) |

| 3 | 9 | 24 | ไม่ถึงไมโครวินาที |

| 10 | 333 | $4.0\times10^{7}$ | 0.04 วินาที |

| 20 | 2,667 | $5.1\times10^{19}$ | ราว 1,600 ปี |

| 100 | $3.3\times10^{5}$ | $9.4\times10^{159}$ | นานกว่าอายุเอกภพมาก |

| 1,000 | $3.3\times10^{8}$ (≈ 0.3 วินาที) | $\approx 10^{2570}$ | — |

N2 Machine epsilon ความละเอียดของเลขทศนิยม

$$\epsilon_{\text{mach}} = 2^{-52} \approx 2.22\times10^{-16} \ (\text{double, IEEE 754})$$

เลข double เก็บได้ราว 15–16 หลักนัยสำคัญ ทุกการคำนวณถูกปัดเศษ ความคลาดเคลื่อนสะสมได้ถ้าอัลกอริทึมไม่ดี

N3 Direct vs iterative วิธีตรงกับวิธีทำซ้ำ

$$\text{ตรง: } A = LU \to \mathbf x \ (\text{จำนวนขั้นแน่นอน}),\qquad \text{ทำซ้ำ: } \mathbf x^{(k+1)} = T\mathbf x^{(k)} + \mathbf c$$

วิธีตรงแม่นถึงระดับการปัดเศษ วิธีทำซ้ำหยุดเมื่อแม่นพอ ไม่ต้องเก็บเมทริกซ์เต็มและไม่เติมศูนย์ให้กลายเป็นตัวเลข (fill-in)

## การกำจัดแบบเกาส์ในมุมของอัลกอริทึม กลาง

หลักการเหมือน การกำจัดแบบเกาส์ที่ทำมือ ทุกประการ แต่เขียนเป็นสูตรที่โปรแกรมทำซ้ำได้ แบ่งเป็นสองช่วง: กำจัดไปข้างหน้า (forward elimination) ให้ได้เมทริกซ์สามเหลี่ยมบน แล้วแทนค่าย้อนกลับ (back substitution) จากล่างขึ้นบน

N4 Forward elimination & back substitution กำจัดไปข้างหน้าและแทนค่าย้อนกลับ

$$m_{ik} = \frac{a_{ik}}{{a_{kk}}},\quad a_{ij} \leftarrow a_{ij} - m_{ik}a_{kj},\quad b_i \leftarrow b_i - m_{ik}b_k \qquad (i \gt k)$$

$$x_n = \frac{b_n}{a_{nn}},\qquad x_i = \frac{1}{a_{ii}}\Bigl(b_i - \sum_{j=i+1}^{n} a_{ij}x_j\Bigr),\ i = n - 1, \dots, 1$$

for k = 1 … n−1 # หลักของตัวหลัก
(สลับแถว: หา p ที่ |a_pk| มากสุด แล้วสลับแถว p กับ k)
for i = k+1 … n
m = a[i][k] / a[k][k]
for j = k … n: a[i][j] -= m * a[k][j]
b[i] -= m * b[k]
for i = n … 1 # แทนค่าย้อนกลับ
x[i] = (b[i] − Σ_{j>i} a[i][j]·x[j]) / a[i][i]

## การเลือกตัวหลัก (Pivoting): ทำไมต้องสลับแถวแม้ตัวหลักไม่เป็นศูนย์ กลาง

ถ้าตัวหลักเป็นศูนย์ การกำจัดหยุดทันที เรื่องนี้ทุกคนรู้ แต่อันตรายกว่าคือตัวหลักเล็กมาก ตัวคูณ $m = a_{ik}/a_{kk}$ จะใหญ่มาก แล้วกลืนตัวเลขอื่นจนหายไปตอนปัดเศษ

N5 Partial pivoting การสลับแถวบางส่วน

$$p = \arg\max_{i \ge k}|a_{ik}|,\quad R_k \leftrightarrow R_p \ \Rightarrow\ |m_{ik}| \le 1$$

เป็นค่าเริ่มต้นของ LAPACK (numpy.linalg.solve, MATLAB A\b) ราคาถูกเพราะแค่เทียบค่าในหลักเดียว

N6 Scaled & complete pivoting ปรับสเกลและสลับเต็ม

$$s_i = \max_j |a_{ij}|,\quad p = \arg\max_{i \ge k}\frac{|a_{ik}|}{s_i}$$

ใช้เมื่อแต่ละแถวมีหน่วยหรือขนาดต่างกันมาก · complete pivoting เลือกจากทั้งเมทริกซ์ย่อย (สลับหลักด้วย) เสถียรที่สุดแต่แพง จึงไม่ค่อยใช้

ตัวอย่าง N-1 · เครื่องคิดเลข 3 หลัก

### แก้ $\begin{aligned} 0.0001x + y &= 1 \\ x + y &= 2 \end{aligned}$ โดยปัดทุกผลลัพธ์เหลือ 3 หลักนัยสำคัญ ทั้งแบบไม่สลับและสลับแถว (ค่าจริง $x = 1.0001\dots,\ y = 0.9998\dots$)

- ไม่สลับ: $m = 1/0.0001 = 10^4$ แล้ว

$$a_{22} = 1 - 10^4 = -9999 \to {-1.00\times10^4},\qquad b_2 = 2 - 10^4 = -9998 \to {-1.00\times10^4}$$

- $y = 1.00$ แทนกลับ: $x = \dfrac{1 - 1.00}{0.0001} = 0$ — ผิดทั้งหมด (คลาดเคลื่อน 100%)

- สลับแถว ให้ $1$ เป็นตัวหลัก N5: $m = 0.0001$

$$a_{22} = 1 - 0.0001 = 0.9999 \to 1.00,\qquad b_2 = 1 - 0.0002 = 0.9998 \to 1.00$$

- $y = 1.00,\ x = 2 - 1.00 = 1.00$ — ถูกต้องตามจำนวนหลักที่มี

ไม่สลับ: $(x, y) = (0, 1.00)$ ✗ · สลับแถว: $(1.00, 1.00)$ ✓

ต้นเหตุ: ตัวคูณ $10^4$ ทำให้เลข 1 ใน $1 - 10^4$ หายไปตอนปัด ข้อมูลของสมการแรกจึงหายไปทั้งหมด · เครื่องจริงเก็บ 16 หลักก็เกิดเรื่องเดียวกันเมื่อ $\varepsilon \approx 10^{-17}$

ในแล็บด้านล่าง เลื่อนขนาดตัวหลัก $\varepsilon$ และจำนวนหลักที่เครื่องเก็บได้ แล้วดูว่าเมื่อไรวิธีไม่สลับแถวพัง กดดูตารางเทียบทุกจำนวนหลักด้านล่างแล็บ มีชุดตัวหลักเป็นศูนย์ 3×3 ให้ลองด้วย

## การแยก LU: แยกครั้งเดียว ใช้ได้ทุก $\mathbf b$ กลาง

การกำจัดแบบเกาส์คือการเขียน $A = LU$ โดยไม่รู้ตัว: $U$ คือเมทริกซ์สามเหลี่ยมบนที่ได้ และ $L$ คือเมทริกซ์สามเหลี่ยมล่างที่เก็บตัวคูณ $m_{ik}$ ไว้ใต้แนวทแยง (แนวทแยงเป็น 1) งานจริงที่ต้องแก้ระบบเดิมกับ $\mathbf b$ หลายชุด เช่น วงจรเดียวกันที่แหล่งจ่ายเปลี่ยนตามเวลา จึงแยก LU ครั้งเดียว ($\approx \tfrac23n^3$) แล้วแก้แต่ละ $\mathbf b$ ด้วยการแทนค่าสองรอบ ($\approx 2n^2$)

N7 Doolittle factorisation การแยกแบบดูลิตเติล ($\ell_{ii} = 1$)

$$u_{ij} = a_{ij} - \sum_{k=1}^{i-1}\ell_{ik}u_{kj}\ (j \ge i),\qquad \ell_{ij} = \frac{1}{u_{jj}}\Bigl(a_{ij} - \sum_{k=1}^{j-1}\ell_{ik}u_{kj}\Bigr)\ (i \gt j)$$

แบบโครต์ (Crout) ให้ $u_{ii} = 1$ แทน ผลลัพธ์ต่างกันแค่การกระจายแนวทแยง

N8 Solving with LU แก้ระบบด้วย LU

$$A\mathbf x = \mathbf b \iff L\mathbf y = \mathbf b \ (\text{ไปข้างหน้า}),\quad U\mathbf x = \mathbf y \ (\text{ย้อนกลับ})$$

N9 LU with pivoting $PA = LU$

$$PA = LU,\qquad L\mathbf y = P\mathbf b,\quad U\mathbf x = \mathbf y$$

$P$ คือเมทริกซ์เอกลักษณ์ที่สลับแถวตามที่ทำจริง ทุกเมทริกซ์จัตุรัสแยกได้ในรูปนี้

N10 Determinant from LU ดีเทอร์มิแนนต์ฟรีจาก LU

$$\det A = (-1)^{\text{จำนวนการสลับแถว}}\prod_{i=1}^{n}u_{ii}$$

นี่คือวิธีที่โปรแกรมหาดีเทอร์มิแนนต์จริง ไม่ใช่การกระจายโคแฟกเตอร์

ตัวอย่าง N-2 · LU แล้วแก้สอง b

### แยก $A = \begin{pmatrix} 1 & 2 & 4 \\ 3 & 8 & 14 \\ 2 & 6 & 13 \end{pmatrix}$ เป็น LU แล้วแก้ $A\mathbf x = (3, 13, 4)^T$ และ $A\mathbf x = (1, 1, 1)^T$

- หลักที่ 1: $\ell_{21} = 3,\ \ell_{31} = 2$ ได้แถวใหม่ $(0, 2, 2)$ และ $(0, 2, 5)$ · หลักที่ 2: $\ell_{32} = 2/2 = 1$ ได้ $(0, 0, 3)$

$$L = \begin{pmatrix} 1 & 0 & 0 \\ {3} & 1 & 0 \\ {2} & {1} & 1 \end{pmatrix},\qquad U = \begin{pmatrix} {1} & 2 & 4 \\ 0 & {2} & 2 \\ 0 & 0 & {3} \end{pmatrix},\qquad \det A = 1\cdot2\cdot3 = 6$$

- $\mathbf b = (3, 13, 4)$: ไปข้างหน้า $y_1 = 3,\ y_2 = 13 - 3(3) = 4,\ y_3 = 4 - 2(3) - 1(4) = -6$ N8

- ย้อนกลับ $x_3 = -6/3 = -2,\ x_2 = (4 - 2(-2))/2 = 4,\ x_1 = 3 - 2(4) - 4(-2) = 3$

- $\mathbf b = (1, 1, 1)$ ใช้ $L, U$ เดิม: $\mathbf y = (1, -2, 1)$ แล้ว $x_3 = \tfrac13,\ x_2 = \tfrac{-2 - 2/3}{2} = -\tfrac43,\ x_1 = 1 - 2(-\tfrac43) - 4(\tfrac13) = \tfrac73$

$\mathbf x = (3, 4, -2)$ และ $\mathbf x = (\tfrac73, -\tfrac43, \tfrac13)$

ตรวจแถว 2 ของคำตอบแรก: $3(3) + 8(4) + 14(-2) = 9 + 32 - 28 = 13$ ✓ · คำตอบที่สองไม่ต้องแยก LU ใหม่ ใช้แค่แทนค่าสองรอบ

ตัวอย่าง N-3 · PA = LU

### แยก $A = \begin{pmatrix} 2 & 1 & 1 \\ 4 & -6 & 0 \\ -2 & 7 & 2 \end{pmatrix}$ แบบสลับแถว (partial pivoting) และหา $\det A$

- หลัก 1 ตัวใหญ่สุดคือ 4 (แถว 2) สลับ $R_1 \leftrightarrow R_2$ แล้ว $\ell_{21} = 2/4 = \tfrac12,\ \ell_{31} = -2/4 = -\tfrac12$

$$\begin{pmatrix} 4 & -6 & 0 \\ 0 & 4 & 1 \\ 0 & 4 & 2 \end{pmatrix}$$

- หลัก 2 มี 4 สองตัวเท่ากัน คงแถว 2 ไว้ $\ell_{32} = 1$ ได้ $u_{33} = 2 - 1 = 1$

$P = \begin{pmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{pmatrix},\ L = \begin{pmatrix} 1 & 0 & 0 \\ \tfrac12 & 1 & 0 \\ -\tfrac12 & 1 & 1 \end{pmatrix},\ U = \begin{pmatrix} 4 & -6 & 0 \\ 0 & 4 & 1 \\ 0 & 0 & 1 \end{pmatrix},\ \det A = -(4\cdot4\cdot1) = -16$

สลับแถวหนึ่งครั้ง เครื่องหมายจึงเป็นลบ N10 · ตรวจด้วยซาร์รัส: $2(-12) - 1(8) + 1(28 - 12) = -16$ ✓

## การแยกโชเลสกี (Cholesky) สำหรับเมทริกซ์สมมาตรบวกแน่นอน กลาง

เมทริกซ์ความนำ $G$ ของวงจรตัวต้านทาน เมทริกซ์สติฟเนสของโครงสร้าง และ $A^TA$ ของกำลังสองน้อยสุด ล้วนสมมาตรและบวกแน่นอน (symmetric positive definite, SPD) เขียนได้เป็น $A = LL^T$ ใช้งานครึ่งหนึ่งของ LU และไม่ต้องสลับแถวเลย

N11 Cholesky factorisation $A = LL^T$

$$\ell_{jj} = \sqrt{a_{jj} - \sum_{k=1}^{j-1}\ell_{jk}^2},\qquad \ell_{ij} = \frac{1}{\ell_{jj}}\Bigl(a_{ij} - \sum_{k=1}^{j-1}\ell_{ik}\ell_{jk}\Bigr)\ (i \gt j)$$

ถ้าค่าใต้รากติดลบหรือเป็นศูนย์ แปลว่าเมทริกซ์ไม่บวกแน่นอน (ใช้เป็นวิธีทดสอบ SPD ได้) · ต้นทุน $\approx \tfrac13n^3$ flops

ตัวอย่าง N-4 · วงจรสามโนด

### สมการโนด $G\mathbf v = \mathbf i$ มี $G = \begin{pmatrix} 4 & 2 & 2 \\ 2 & 5 & 3 \\ 2 & 3 & 6 \end{pmatrix}$ (S) และ $\mathbf i = (10, 13, 17)$ (A) แก้ด้วยโชเลสกี

- หลัก 1: $\ell_{11} = \sqrt4 = 2,\ \ell_{21} = 2/2 = 1,\ \ell_{31} = 2/2 = 1$ N11

- หลัก 2: $\ell_{22} = \sqrt{5 - 1^2} = 2,\ \ell_{32} = (3 - 1\cdot1)/2 = 1$ · หลัก 3: $\ell_{33} = \sqrt{6 - 1 - 1} = 2$

$$L = \begin{pmatrix} 2 & 0 & 0 \\ 1 & 2 & 0 \\ 1 & 1 & 2 \end{pmatrix}$$

- $L\mathbf y = \mathbf i$: $y_1 = 5,\ y_2 = (13 - 5)/2 = 4,\ y_3 = (17 - 5 - 4)/2 = 4$ · $L^T\mathbf v = \mathbf y$: $v_3 = 2,\ v_2 = (4 - 2)/2 = 1,\ v_1 = (5 - 1 - 2)/2 = 1$

$\mathbf v = (1, 1, 2)$ V

ตรวจ: $4 + 2 + 4 = 10$ ✓ · $2 + 5 + 6 = 13$ ✓ · $2 + 3 + 12 = 17$ ✓

## อัลกอริทึมโทมัส: ระบบสามแนวทแยงในเวลา $O(n)$ กลาง

ปัญหาหนึ่งมิติ เช่น การนำความร้อนตามแท่งโลหะ แรงดันตามสายส่งแบบขั้นบันได (ladder network) และการทำเส้นโค้ง spline ให้เมทริกซ์ที่มีตัวเลขแค่บนแนวทแยงและข้าง ๆ การกำจัดแบบเกาส์จึงลดเหลือการวนลูปเดียว

N12 Thomas algorithm (TDMA) สำหรับ $a_ix_{i-1} + b_ix_i + c_ix_{i+1} = d_i$

$$c_1' = \frac{c_1}{b_1},\ d_1' = \frac{d_1}{b_1};\quad c_i' = \frac{c_i}{b_i - a_ic_{i-1}'},\ d_i' = \frac{d_i - a_id_{i-1}'}{b_i - a_ic_{i-1}'};\quad x_n = d_n',\ x_i = d_i' - c_i'x_{i+1}$$

ราว $8n$ flops แทน $\tfrac23n^3$ · ปลอดภัยเมื่อเมทริกซ์ทแยงเด่น (ไม่ต้องสลับแถว)

ตัวอย่าง N-5 · แท่งความร้อน 4 โหนด

### แท่งโลหะปลายซ้าย 100 °C ปลายขวา 0 °C แบ่ง 4 โหนดภายใน สมการสภาวะคงตัว $-T_{i-1} + 2T_i - T_{i+1} = 0$ หา $T_1, \dots, T_4$

- ย้ายอุณหภูมิขอบไปทางขวา: $a_i = -1,\ b_i = 2,\ c_i = -1,\ \mathbf d = (100, 0, 0, 0)$

- กวาดไปข้างหน้า N12: $c' = (-\tfrac12, -\tfrac23, -\tfrac34),\quad d' = (50, \tfrac{100}{3}, 25, 20)$

- ย้อนกลับ: $T_4 = 20,\ T_3 = 25 + \tfrac34(20) = 40,\ T_2 = \tfrac{100}{3} + \tfrac23(40) = 60,\ T_1 = 50 + \tfrac12(60) = 80$

$(T_1, T_2, T_3, T_4) = (80, 60, 40, 20)$ °C

ได้เส้นตรงพอดี ตรงกับฟิสิกส์ของการนำความร้อนสภาวะคงตัวที่ไม่มีแหล่งความร้อนภายใน

## วิธีทำซ้ำ: จาโคบี เกาส์-ไซเดล และ SOR กลาง

แนวคิดง่ายมาก: แก้สมการที่ $i$ หา $x_i$ โดยใช้ค่าประมาณของตัวแปรอื่น แล้ววนทำซ้ำจนค่าไม่เปลี่ยน ไม่ต้องลดแถว ไม่ต้องเก็บเมทริกซ์เต็ม จึงเหมาะกับระบบใหญ่ที่ส่วนใหญ่เป็นศูนย์

N13 Jacobi method วิธีจาโคบี

$$x_i^{(k+1)} = \frac{1}{a_{ii}}\Bigl(b_i - \sum_{j \ne i} a_{ij}\,x_j^{(k)}\Bigr)$$

ทุกตัวแปรในรอบใหม่คำนวณจากค่ารอบก่อนทั้งหมด ต้องเก็บเวกเตอร์สองชุด คำนวณขนานได้

N14 Gauss–Seidel method วิธีเกาส์-ไซเดล

$$x_i^{(k+1)} = \frac{1}{a_{ii}}\Bigl(b_i - \sum_{j \lt i} a_{ij}\,{x_j^{(k+1)}} - \sum_{j \gt i} a_{ij}\,x_j^{(k)}\Bigr)$$

ใช้ค่าที่เพิ่งได้ทันที มักลู่เข้าเร็วกว่าจาโคบีราวสองเท่า เก็บเวกเตอร์ชุดเดียว

N15 Successive over-relaxation (SOR) ผ่อนปรนเกินต่อเนื่อง

$$x_i^{(k+1)} = (1 - \omega)\,x_i^{(k)} + \omega\,\tilde x_i^{\text{GS}},\qquad 0 \lt \omega \lt 2$$

$\omega = 1$ คือเกาส์-ไซเดล · $\omega \gt 1$ ก้าวเลยไปทางเดิม (เร่ง) · $\omega \lt 1$ หน่วง (ใช้เมื่อแกว่ง)

N16 Matrix form รูปเมทริกซ์ $A = D + L + U$ (ทแยง · ใต้ทแยง · เหนือทแยง)

$$T_J = -D^{-1}(L + U),\qquad T_{GS} = -(D + L)^{-1}U,\qquad T_\omega = (D + \omega L)^{-1}\bigl[(1 - \omega)D - \omega U\bigr]$$

ทุกวิธีเขียนได้เป็น $\mathbf x^{(k+1)} = T\mathbf x^{(k)} + \mathbf c$ ความคลาดเคลื่อนจึงเป็น $\mathbf e^{(k)} = T^k\mathbf e^{(0)}$

N17 Stopping criteria เกณฑ์หยุด

$$\frac{\lVert\mathbf x^{(k+1)} - \mathbf x^{(k)}\rVert_\infty}{\lVert\mathbf x^{(k+1)}\rVert_\infty} \lt \varepsilon \quad\text{หรือ}\quad \lvert\varepsilon_{a,i}\rvert = \Bigl|\frac{x_i^{(k+1)} - x_i^{(k)}}{x_i^{(k+1)}}\Bigr|\times100\% \lt \varepsilon_s = (0.5\times10^{2-n})\%$$

เกณฑ์ของสการ์โบโรห์รับประกันความถูกต้องอย่างน้อย $n$ หลักนัยสำคัญ · ควรตรวจส่วนเหลือ $\lVert\mathbf b - A\mathbf x^{(k)}\rVert$ ด้วย และกำหนดจำนวนรอบสูงสุดกันวนไม่จบ

ตัวอย่าง N-6 · จาโคบีเทียบเกาส์-ไซเดล

### แก้ $\begin{aligned} 4x - y + z &= 7 \\ 4x - 8y + z &= -21 \\ -2x + y + 5z &= 15 \end{aligned}$ เริ่มที่ $\mathbf x^{(0)} = (1, 2, 2)$ (คำตอบจริง $(2, 4, 3)$)

- เมทริกซ์ทแยงเด่นแท้: $4 \gt 1 + 1,\ 8 \gt 4 + 1,\ 5 \gt 2 + 1$ จึงลู่เข้าแน่นอน N18 · จัดรูปสูตรทำซ้ำ

$$x = \frac{7 + y - z}{4},\qquad y = \frac{21 + 4x + z}{8},\qquad z = \frac{15 + 2x - y}{5}$$

- จาโคบีรอบที่ 1 (ใช้ $(1, 2, 2)$ ทั้งหมด) N13

$$x = \tfrac{7 + 2 - 2}{4} = 1.75,\quad y = \tfrac{21 + 4 + 2}{8} = 3.375,\quad z = \tfrac{15 + 2 - 2}{5} = 3.000$$

- เกาส์-ไซเดลรอบที่ 1 (ใช้ $x$ ใหม่ทันที) N14

$$x = 1.75,\quad y = \tfrac{21 + 4({1.75}) + 2}{8} = 3.75,\quad z = \tfrac{15 + 2({1.75}) - {3.75}}{5} = 2.95$$

| k | จาโคบี $(x, y, z)$ | เกาส์-ไซเดล $(x, y, z)$ |

| 0 | 1, 2, 2 | 1, 2, 2 |

| 1 | 1.750, 3.375, 3.000 | 1.750, 3.750, 2.950 |

| 2 | 1.844, 3.875, 3.025 | 1.950, 3.969, 2.986 |

| 3 | 1.963, 3.925, 2.963 | 1.996, 3.996, 2.999 |

| 4 | 1.991, 3.977, 3.000 | 1.9993, 3.9995, 2.9998 |

| 5 | 1.994, 3.995, 3.001 | 1.99993, 3.99994, 2.99998 |

ทั้งสองวิธีเข้าใกล้ $(2, 4, 3)$ · เกาส์-ไซเดลคลาดเคลื่อนไม่ถึง 0.001 ตั้งแต่รอบที่ 4 ส่วนจาโคบีต้องใช้ 7 รอบ

รัศมีสเปกตรัม $\rho(T_J) \approx 0.335$ และ $\rho(T_{GS}) \approx 0.125$ ความคลาดเคลื่อนจึงลดลงราว 3 เท่าต่อรอบสำหรับจาโคบี และ 8 เท่าต่อรอบสำหรับเกาส์-ไซเดล N20

## ลู่เข้าเมื่อไร และเร็วแค่ไหน กลาง → ขั้นสูง

N18 Diagonal dominance ทแยงเด่นแท้ (เงื่อนไขพอเพียง)

$$|a_{ii}| \gt \sum_{j \ne i}|a_{ij}|\ \ \text{ทุกแถว} \ \Rightarrow\ \text{จาโคบีและเกาส์-ไซเดลลู่เข้าทุกค่าเริ่มต้น}$$

ถ้าไม่ทแยงเด่น ลองสลับลำดับสมการก่อน (แล็บด้านล่าง ชุด “สลับสมการ” ลู่ออก) · สมมาตรบวกแน่นอนก็ทำให้เกาส์-ไซเดลลู่เข้าเช่นกัน

N19 Spectral radius test เงื่อนไขจำเป็นและพอเพียง

$$\mathbf x^{(k)} \to \mathbf x \ \text{ทุก } \mathbf x^{(0)} \iff \rho(T) = \max_i|\lambda_i(T)| \lt 1$$

$\lambda_i$ คือ ค่าเฉพาะ ของเมทริกซ์การทำซ้ำ · SOR ลู่ออกเสมอถ้า $\omega \notin (0, 2)$ (คาฮาน)

N20 Rate of convergence จำนวนรอบที่ต้องใช้

$$\lVert\mathbf e^{(k)}\rVert \approx \rho^k\lVert\mathbf e^{(0)}\rVert \ \Rightarrow\ k \approx \frac{d}{-\log_{10}\rho} \ \text{รอบ เพื่อเพิ่มความแม่น } d \text{ หลัก}$$

N21 Optimal ω (Young) $\omega$ ที่ดีที่สุด

$$\rho_{GS} = \rho_J^2,\qquad \omega^* = \frac{2}{1 + \sqrt{1 - \rho_J^2}},\qquad \rho(T_{\omega^*}) = \omega^* - 1$$

ใช้ได้กับเมทริกซ์ “เรียงลำดับสอดคล้อง” เช่น สามแนวทแยง · สำหรับ $\operatorname{tridiag}(-1, 2, -1)$ ขนาด $n$: $\rho_J = \cos\frac{\pi}{n + 1}$

ตัวอย่าง N-7 · ทำไมต้อง SOR

### ระบบแท่งความร้อน $\operatorname{tridiag}(-1, 2, -1)$ ขนาด 10×10 ต้องใช้กี่รอบเพื่อลดความคลาดเคลื่อน $10^6$ เท่า สำหรับจาโคบี เกาส์-ไซเดล และ SOR ที่ $\omega^*$

- $\rho_J = \cos\frac{\pi}{11} \approx 0.9595$ และ $\rho_{GS} = \rho_J^2 \approx 0.9206$ N21

- $\omega^* = \dfrac{2}{1 + \sin(\pi/11)} \approx 1.560$ ได้ $\rho_{SOR} = \omega^* - 1 \approx 0.560$

- $k \approx 6/(-\log_{10}\rho)$ N20: จาโคบี $6/0.018 \approx 334$ · เกาส์-ไซเดล $\approx 167$ · SOR $6/0.252 \approx 24$

ราว 334, 167 และ 24 รอบ — SOR เร็วกว่าเกาส์-ไซเดลเกือบ 7 เท่าโดยแทบไม่เพิ่มงานต่อรอบ

ในแล็บ กดดู “สแกนหา ω ที่ดีที่สุด” จะเห็นจำนวนรอบต่ำสุดใกล้ $\omega \approx 1.55$–$1.6$ (จำนวนรอบในแล็บต่างเล็กน้อยเพราะใช้เกณฑ์หยุด N17)

### ซิมูเลเตอร์วิธีทำซ้ำ: จาโคบี · เกาส์-ไซเดล · SOR

เลือกชุดระบบ วิธี และ $\omega$ กราฟแสดงความคลาดเคลื่อนของทั้งสามวิธีเทียบกัน (แตะกราฟเพื่อดูค่าแต่ละรอบ) ชุด 2×2 แสดงเส้นทางของค่าประมาณบนภาพเส้นตรงสองเส้น ลองชุด “สลับสมการ” เพื่อดูการลู่ออก

## เลขเงื่อนไข: คำตอบเชื่อได้แค่ไหน กลาง → ขั้นสูง

อัลกอริทึมดีแค่ไหนก็แก้ปัญหาที่ “ป่วยโดยกำเนิด” ไม่ได้ ระบบที่สมการเกือบขนานกัน ข้อมูลผิดนิดเดียวคำตอบเปลี่ยนมาก เราวัดความป่วยนี้ด้วยเลขเงื่อนไข (condition number) ต่อยอดจาก ระบบป่วยในหน้าระบบสมการ

N22 Vector & matrix norms นอร์ม

$$\lVert\mathbf x\rVert_\infty = \max_i|x_i|,\quad \lVert\mathbf x\rVert_1 = \sum|x_i|,\quad \lVert\mathbf x\rVert_2 = \sqrt{\textstyle\sum x_i^2};\qquad \lVert A\rVert_\infty = \max_i\sum_j|a_{ij}|,\quad \lVert A\rVert_1 = \max_j\sum_i|a_{ij}|,\quad \lVert A\rVert_2 = \sigma_{\max}$$

N23 Condition number เลขเงื่อนไข

$$\kappa(A) = \lVert A\rVert\,\lVert A^{-1}\rVert \ge 1,\qquad \kappa_2(A) = \frac{\sigma_{\max}}{\sigma_{\min}}$$

$\kappa \approx 1$ ดีมาก · $\kappa \to \infty$ เมื่อ $A$ ใกล้เอกฐาน · $\det$ เล็กไม่ได้แปลว่าป่วย ($0.1I_{10}$ มี $\det = 10^{-10}$ แต่ $\kappa = 1$)

N24 Error amplification ขยายความคลาดเคลื่อน

$$\frac{\lVert\delta\mathbf x\rVert}{\lVert\mathbf x\rVert} \le \kappa(A)\frac{\lVert\delta\mathbf b\rVert}{\lVert\mathbf b\rVert},\qquad \text{หลักที่เสีย} \approx \log_{10}\kappa(A)$$

ถ้า $A$ คลาดเคลื่อนด้วย: $\dfrac{\lVert\delta\mathbf x\rVert}{\lVert\mathbf x\rVert} \le \dfrac{\kappa}{1 - \kappa\frac{\lVert\delta A\rVert}{\lVert A\rVert}}\Bigl(\dfrac{\lVert\delta A\rVert}{\lVert A\rVert} + \dfrac{\lVert\delta\mathbf b\rVert}{\lVert\mathbf b\rVert}\Bigr)$

N25 Residual vs error ส่วนเหลือไม่ใช่ความคลาดเคลื่อน

$$\mathbf r = \mathbf b - A\tilde{\mathbf x},\qquad \frac{\lVert\mathbf x - \tilde{\mathbf x}\rVert}{\lVert\mathbf x\rVert} \le \kappa(A)\frac{\lVert\mathbf r\rVert}{\lVert\mathbf b\rVert}$$

ส่วนเหลือเล็กรับประกันคำตอบแม่นก็ต่อเมื่อ $\kappa$ ไม่ใหญ่

N26 Iterative refinement ปรับปรุงผลเฉลยซ้ำ

$$\mathbf r = \mathbf b - A\tilde{\mathbf x}\ (\text{ความละเอียดสูงขึ้น}),\quad LU\,\boldsymbol\delta = \mathbf r,\quad \tilde{\mathbf x} \leftarrow \tilde{\mathbf x} + \boldsymbol\delta$$

ใช้ LU เดิม ต้นทุนรอบละ $\approx n^2$ ได้หลักคืนมาเมื่อ $\kappa\,\epsilon_{\text{mach}} \lt 1$

ตัวอย่าง N-8 · ระบบป่วย

### $\begin{aligned} x + y &= 2 \\ x + 1.0001y &= 2.0001 \end{aligned}$ มีคำตอบ $(1, 1)$ ถ้าค่าทางขวาของสมการที่ 2 คลาดเป็น $2.0002$ คำตอบเปลี่ยนเท่าไร เทียบกับ $\kappa_\infty(A)$

- แก้ใหม่: ลบสมการ $0.0001y = 0.0002 \Rightarrow y = 2,\ x = 0$ — เปลี่ยนจาก $(1, 1)$ เป็น $(0, 2)$

- $A^{-1} = \dfrac{1}{0.0001}\begin{pmatrix} 1.0001 & -1 \\ -1 & 1 \end{pmatrix}$ ได้ $\lVert A\rVert_\infty = 2.0001,\ \lVert A^{-1}\rVert_\infty = 20001$ N22

$$\kappa_\infty(A) = 2.0001 \times 20001 \approx 4.0\times10^{4}$$

- ข้อมูลเปลี่ยน $\dfrac{0.0001}{2.0001} \approx 5\times10^{-5}$ แต่คำตอบเปลี่ยน $\dfrac{\lVert(-1, 1)\rVert_\infty}{\lVert(1, 1)\rVert_\infty} = 1$ (100%) ขยาย $2\times10^4$ เท่า ไม่เกิน $\kappa$ ตาม N24

คำตอบเปลี่ยน 100% จากข้อมูลที่เปลี่ยน 0.005% · $\kappa_\infty \approx 4\times10^4$ เสียความแม่นราว 4–5 หลัก

ส่วนเหลือของ $(0, 2)$ ในระบบเดิมคือ $\mathbf r = (0, -0.0001)$ เล็กมาก แต่คำตอบผิดทั้งหมด ยืนยัน N25

## งานจริง: แผ่นความร้อนและสนามศักย์ด้วยวิธีผ่อนคลาย (relaxation) กลาง

อุณหภูมิในแผ่นโลหะสภาวะคงตัว และศักย์ไฟฟ้าในบริเวณที่ไม่มีประจุ เป็นไปตามสมการลาปลาซ $\nabla^2T = 0$ เมื่อแบ่งเป็นตาราง สมการของแต่ละโหนดคือ “ค่าที่โหนด = ค่าเฉลี่ยของสี่โหนดรอบตัว” ได้ระบบสมการเชิงเส้นหนึ่งสมการต่อโหนด แผ่น 100×100 โหนดมีหนึ่งหมื่นตัวแปร แต่แต่ละสมการมีตัวแปรแค่ 5 ตัว เป็นงานของวิธีทำซ้ำโดยแท้

ตัวอย่าง N-9 · แผ่น 2×2 โหนด

### แผ่นสี่เหลี่ยมขอบบน 100 °C ขอบอื่น 0 °C มีโหนดภายใน $T_1, T_2$ (แถวบน) และ $T_3, T_4$ (แถวล่าง) หาอุณหภูมิทุกโหนด

- สมการค่าเฉลี่ย เช่นที่ $T_1$: $4T_1 = 100 + 0 + T_2 + T_3$ เขียนครบสี่โหนด

$$\begin{pmatrix} 4 & -1 & -1 & 0 \\ -1 & 4 & 0 & -1 \\ -1 & 0 & 4 & -1 \\ 0 & -1 & -1 & 4 \end{pmatrix}\begin{pmatrix} T_1 \\ T_2 \\ T_3 \\ T_4 \end{pmatrix} = \begin{pmatrix} 100 \\ 100 \\ 0 \\ 0 \end{pmatrix}$$

- สมมาตรซ้าย-ขวา $T_1 = T_2,\ T_3 = T_4$ เหลือ $3T_1 - T_3 = 100$ และ $3T_3 - T_1 = 0$ ได้ $T_1 = 3T_3$

$T_1 = T_2 = 37.5$ °C, $T_3 = T_4 = 12.5$ °C

เมทริกซ์ทแยงเด่น ($4 \ge 1 + 1$ และสมมาตรบวกแน่นอน) เกาส์-ไซเดลจึงลู่เข้าแน่นอน ลองตารางที่ละเอียดขึ้นในแล็บด้านล่าง

ตั้งอุณหภูมิขอบ กด ▶ เริ่ม แล้วดูความร้อนค่อย ๆ แผ่เข้าไปทีละรอบ เปลี่ยนวิธีและ $\omega$ เพื่อเทียบความเร็ว ตารางด้านข้างบอกจำนวนรอบที่แต่ละวิธีต้องใช้ วางนิ้วหรือเมาส์บนช่องเพื่ออ่านอุณหภูมิ

## เลือกวิธีอย่างไร และใช้ในโปรแกรมจริง กลาง

| ลักษณะของระบบ | วิธีที่เหมาะ | เหตุผล |

| 2–3 ตัวแปร ทำมือ ถามตัวแปรเดียว | คราเมอร์ | ดีเทอร์มิแนนต์สองตัวก็ได้คำตอบ |

| หนาแน่น $n$ ถึงราวหมื่น | LU + partial pivoting | เสถียร ใช้ซ้ำกับหลาย $\mathbf b$ ได้ |

| สมมาตรบวกแน่นอน (วงจร R, โครงสร้าง) | โชเลสกี | เร็วกว่า LU สองเท่า ไม่ต้องสลับแถว |

| สามแนวทแยง (แท่ง สายส่ง spline) | โทมัส | $O(n)$ |

| ใหญ่และเบาบาง ทแยงเด่น | เกาส์-ไซเดล / SOR | ไม่ต้องเก็บเมทริกซ์เต็ม |

| ใหญ่มากและ SPD (FEM, วงจรชิป) | Conjugate Gradient + preconditioner | มาตรฐานของงานจำลองสมัยใหม่ |

| $\kappa$ ใหญ่ หรือเกือบเอกฐาน | ปรับสเกล + refinement หรือ SVD / QR | ลดผลการปัดเศษ แยกส่วนที่เป็นสัญญาณรบกวน |

# Python (NumPy / SciPy)
import numpy as np
from scipy.linalg import lu_factor, lu_solve, cho_factor, cho_solve, solve_banded
A = np.array([[1, 2, 4], [3, 8, 14], [2, 6, 13]], float)
x = np.linalg.solve(A, [3, 13, 4]) # LAPACK: PA = LU + partial pivoting → [ 3. 4. -2.]
lu, piv = lu_factor(A) # แยกครั้งเดียว
x2 = lu_solve((lu, piv), [1, 1, 1]) # แก้ b ใหม่: [ 2.333 -1.333 0.333]
G = np.array([[4, 2, 2], [2, 5, 3], [2, 3, 6]], float)
v = cho_solve(cho_factor(G), [10, 13, 17]) # โชเลสกี → [1. 1. 2.]
print(np.linalg.cond(A, np.inf), np.linalg.matrix_rank(A))

% MATLAB / Octave
x = A \ [3; 13; 4]; [L, U, P] = lu(A); R = chol(G); cond(A, inf)
v = pcg(G, [10; 13; 17], 1e-10, 100); % conjugate gradient สำหรับระบบใหญ่

## ข้อผิดพลาดที่พบบ่อย

กับดักในข้อสอบและในงานจริง

- จาโคบีรอบเดียวกันเผลอใช้ค่าใหม่ — กลายเป็นเกาส์-ไซเดลโดยไม่ตั้งใจ ข้อสอบมักถามค่ารอบที่ 2 ซึ่งต่างกันชัด

- สรุปว่า “ไม่ทแยงเด่น = ลู่ออก” — ทแยงเด่นเป็นเงื่อนไขพอเพียงเท่านั้น ต้องดู $\rho(T)$ N19

- หยุดเมื่อค่าเปลี่ยนน้อย แต่ไม่ตรวจส่วนเหลือ — ระบบที่ลู่เข้าช้ามากอาจเปลี่ยนน้อยทั้งที่ยังห่างคำตอบ

- หา $A^{-1}$ แล้วคูณ $\mathbf b$ ในโปรแกรม — ช้ากว่าและคลาดเคลื่อนมากกว่าใช้ solve

- เชื่อว่า $\det$ ใกล้ศูนย์แปลว่าระบบป่วย — ให้ดู $\kappa$ ไม่ใช่ $\det$ N23

## ต่อยอดไปหน้าถัดไป

รัศมีสเปกตรัมและ $\omega^*$ มาจาก ค่าเฉพาะ ของเมทริกซ์การทำซ้ำ ส่วนการเลือกว่าระบบมีคำตอบหรือไม่มาจาก แรงก์ ทดสอบตัวเองด้วย แนวข้อสอบชุด C: วิธีเชิงตัวเลข และอ่านสรุปเปรียบเทียบที่บทความ เกาส์ LU จาโคบี เกาส์-ไซเดล เลือกวิธีไหน (English)

## คำถามที่พบบ่อย

ทำไมคอมพิวเตอร์ไม่ใช้กฎของคราเมอร์แก้ระบบสมการใหญ่?
เพราะต้นทุนโตแบบแฟกทอเรียล ถ้าหาดีเทอร์มิแนนต์ด้วยการกระจายโคแฟกเตอร์ ระบบ 20 ตัวแปรต้องคูณราว 21! ≈ 5 × 10¹⁹ ครั้ง เครื่องที่คูณได้พันล้านครั้งต่อวินาทีต้องใช้ราว 1,600 ปี ขณะที่การกำจัดแบบเกาส์ใช้ราว n³/3 ≈ 2,700 ครั้ง และยังแม่นยำเชิงตัวเลขกว่า

Partial pivoting คืออะไร และทำไมต้องทำ?
คือการสลับแถวในแต่ละหลักให้ตัวหลักเป็นตัวที่มีค่าสัมบูรณ์มากที่สุดในหลักนั้น ทำให้ตัวคูณ |m| ≤ 1 ความคลาดเคลื่อนจากการปัดเศษจึงไม่ถูกขยาย ถ้าไม่สลับและตัวหลักเล็กมาก เช่น 0.0001x + y = 1, x + y = 2 กับเครื่องที่เก็บ 3 หลัก จะได้ x = 0 แทนที่จะเป็น 1

จาโคบีกับเกาส์-ไซเดลต่างกันอย่างไร?
จาโคบีใช้ค่ารอบก่อนทั้งหมดในการคำนวณรอบใหม่ ส่วนเกาส์-ไซเดลนำค่าที่เพิ่งคำนวณได้ในรอบเดียวกันมาใช้ทันที เกาส์-ไซเดลจึงมักลู่เข้าเร็วกว่าราวสองเท่าและใช้หน่วยความจำน้อยกว่า แต่จาโคบีคำนวณแบบขนานได้ง่ายกว่า

จะรู้ได้อย่างไรว่าวิธีทำซ้ำจะลู่เข้า?
เงื่อนไขพอเพียงที่ตรวจง่ายคือเมทริกซ์ทแยงเด่นแท้ (ค่าสัมบูรณ์บนแนวทแยงมากกว่าผลรวมค่าสัมบูรณ์ของตัวอื่นในแถวเดียวกันทุกแถว) เงื่อนไขจำเป็นและพอเพียงคือรัศมีสเปกตรัมของเมทริกซ์การทำซ้ำ ρ(T)
เลขเงื่อนไข (condition number) บอกอะไร?
บอกว่าความคลาดเคลื่อนในข้อมูลถูกขยายในคำตอบได้มากสุดกี่เท่า ‖δx‖/‖x‖ ≤ κ(A)‖δb‖/‖b‖ โดยประมาณจะเสียความแม่นยำราว log₁₀ κ หลัก ถ้า κ ≈ 10¹² บนคอมพิวเตอร์ double ที่เก็บราว 16 หลัก จะเหลือหลักที่เชื่อได้เพียงราว 4 หลัก

มด

อาจารย์มด · ธีรวุฒิ แสวงบุญ
อาจารย์สาขาวิชาวิศวกรรมไฟฟ้า มหาวิทยาลัยราชภัฏธนบุรี สมุทรปราการ · ดูโปรไฟล์

## คำถามที่พบบ่อย (FAQ)

**ทำไมคอมพิวเตอร์ไม่ใช้กฎของคราเมอร์แก้ระบบสมการใหญ่?**
เพราะต้นทุนโตแบบแฟกทอเรียล ถ้าหาดีเทอร์มิแนนต์ด้วยการกระจายโคแฟกเตอร์ ระบบ 20 ตัวแปรต้องคูณราว 21! ≈ 5 × 10¹⁹ ครั้ง เครื่องที่คูณได้พันล้านครั้งต่อวินาทีต้องใช้ราว 1,600 ปี ขณะที่การกำจัดแบบเกาส์ใช้ราว n³/3 ≈ 2,700 ครั้ง และยังแม่นยำเชิงตัวเลขกว่า

**Partial pivoting คืออะไร และทำไมต้องทำ?**
คือการสลับแถวในแต่ละหลักให้ตัวหลักเป็นตัวที่มีค่าสัมบูรณ์มากที่สุดในหลักนั้น ทำให้ตัวคูณ |m| ≤ 1 ความคลาดเคลื่อนจากการปัดเศษจึงไม่ถูกขยาย ถ้าไม่สลับและตัวหลักเล็กมาก เช่น 0.0001x + y = 1, x + y = 2 กับเครื่องที่เก็บ 3 หลัก จะได้ x = 0 แทนที่จะเป็น 1

**จาโคบีกับเกาส์-ไซเดลต่างกันอย่างไร?**
จาโคบีใช้ค่ารอบก่อนทั้งหมดในการคำนวณรอบใหม่ ส่วนเกาส์-ไซเดลนำค่าที่เพิ่งคำนวณได้ในรอบเดียวกันมาใช้ทันที เกาส์-ไซเดลจึงมักลู่เข้าเร็วกว่าราวสองเท่าและใช้หน่วยความจำน้อยกว่า แต่จาโคบีคำนวณแบบขนานได้ง่ายกว่า

**จะรู้ได้อย่างไรว่าวิธีทำซ้ำจะลู่เข้า?**
เงื่อนไขพอเพียงที่ตรวจง่ายคือเมทริกซ์ทแยงเด่นแท้ (ค่าสัมบูรณ์บนแนวทแยงมากกว่าผลรวมค่าสัมบูรณ์ของตัวอื่นในแถวเดียวกันทุกแถว) เงื่อนไขจำเป็นและพอเพียงคือรัศมีสเปกตรัมของเมทริกซ์การทำซ้ำ ρ(T) < 1 ยิ่ง ρ เล็กยิ่งลู่เข้าเร็ว

**เลขเงื่อนไข (condition number) บอกอะไร?**
บอกว่าความคลาดเคลื่อนในข้อมูลถูกขยายในคำตอบได้มากสุดกี่เท่า ‖δx‖/‖x‖ ≤ κ(A)‖δb‖/‖b‖ โดยประมาณจะเสียความแม่นยำราว log₁₀ κ หลัก ถ้า κ ≈ 10¹² บนคอมพิวเตอร์ double ที่เก็บราว 16 หลัก จะเหลือหลักที่เชื่อได้เพียงราว 4 หลัก
