พิมพ์คำที่ต้องการค้นหา ทั้งภาษาไทยและอังกฤษ

  1. หน้าแรก
  2. บทความ
  3. เวกเตอร์และพีชคณิตเชิงเส้น
  4. จาโคบีกับเกาส์-ไซเดล

// บทความ · วิธีเชิงตัวเลข

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

โปรแกรมจำลองวงจร วิเคราะห์โครงสร้าง และคำนวณความร้อนต้องแก้ Ax=bA\mathbf x = \mathbf b ที่มีตัวแปรนับพันถึงนับล้าน วิธีที่ใช้ในห้องเรียนจึงไม่พอ บทความนี้เปรียบเทียบวิธีหลักทั้งหมดแบบเห็นภาพรวม ว่าแต่ละวิธีทำงานอย่างไร เร็วแค่ไหน และควรเลือกเมื่อไร

เขียนโดย อาจารย์มดอัปเดต
สรุปใน 30 วินาที
  • วิธีตรง (เกาส์ LU โชเลสกี โทมัส) จบในจำนวนขั้นที่แน่นอน เหมาะกับระบบหนาแน่นขนาดกลาง ต้องสลับแถวเสมอ
  • วิธีทำซ้ำ (จาโคบี เกาส์-ไซเดล SOR) ปรับค่าเดาทีละรอบ เหมาะกับระบบใหญ่และเบาบาง
  • เกาส์-ไซเดลมักเร็วกว่าจาโคบีราวสองเท่า SOR ที่ ω\omega เหมาะสมเร็วกว่าอีกหลายเท่า
  • ก่อนเชื่อคำตอบ ดูเลขเงื่อนไข κ(A)\kappa(A) ซึ่งบอกว่าอาจเสียความแม่นยำราว log⁡10κ\log_{10}\kappa หลัก

ภาพรวม: วิธีตรงกับวิธีทำซ้ำ

A x = bวิธีตรง (direct)จำนวนขั้นแน่นอนวิธีทำซ้ำ (iterative)ปรับค่าเดาทีละรอบเกาส์ + สลับแถว / LUหนาแน่น ทั่วไป · ⅔n³โชเลสกี A = LLᵀสมมาตรบวกแน่นอนโทมัส (TDMA)สามแนวทแยง · O(n)จาโคบีใช้ค่าเก่า · ขนานได้เกาส์-ไซเดลใช้ค่าใหม่ทันทีSOR (ω) · CGระบบใหญ่และเบาบางก่อนเชื่อคำตอบ: เลขเงื่อนไข κ(A) บอกหลักที่อาจเสียวิธีทำซ้ำลู่เข้าเมื่อทแยงเด่น หรือ ρ(T) < 1
สองตระกูลของวิธีแก้ระบบสมการเชิงเส้น เลือกตามขนาด ความเบาบาง และโครงสร้างของเมทริกซ์

กฎของคราเมอร์ไม่อยู่ในแผนที่นี้ เพราะต้นทุนโตแบบแฟกทอเรียล ระบบ 20 ตัวแปรต้องคูณราว 5×10195\times10^{19} ครั้ง ขณะที่การกำจัดแบบเกาส์ใช้ราว 2,700 ครั้ง (ดูเหตุผลใน บทความกฎของคราเมอร์)

วิธีตรง: เกาส์ LU โชเลสกี และโทมัส

การกำจัดแบบเกาส์ ทำให้ใต้แนวทแยงเป็นศูนย์แล้วแทนค่าย้อนกลับ ใช้ราว 23n3\tfrac23n^3 flops จุดสำคัญคือการสลับแถว (partial pivoting) ให้ตัวหลักใหญ่ที่สุดในหลัก ตัวอย่างบนเครื่องที่เก็บ 3 หลักนัยสำคัญ

0.0001x+y=1x+y=2ไม่สลับ: x=0 (ผิด),สลับแถว: x=1.00 (ถูก)\begin{aligned} 0.0001x + y &= 1 \\ x + y &= 2 \end{aligned} \qquad \text{ไม่สลับ: } x = 0\ (\text{ผิด}),\qquad \text{สลับแถว: } x = 1.00\ (\text{ถูก})

เพราะตัวคูณ 1/0.0001=1041/0.0001 = 10^4 ทำให้ 1−1041 - 10^4 ปัดเป็น −1.00×104-1.00\times10^4 ข้อมูลของสมการแรกหายไปหมด ลองปรับจำนวนหลักเองได้ใน แล็บการสลับแถว

  • การแยก LU คือเกาส์ที่เก็บตัวคูณไว้ใน LL แยกครั้งเดียวแล้วแก้ b\mathbf b ใหม่ได้ด้วยต้นทุนแค่ ≈2n2\approx 2n^2 เหมาะกับวงจรที่แหล่งจ่ายเปลี่ยนแต่โครงสร้างเดิม
  • โชเลสกี A=LLTA = LL^T สำหรับเมทริกซ์สมมาตรบวกแน่นอน เช่น เมทริกซ์ความนำของวงจรตัวต้านทาน เร็วกว่า LU สองเท่าและไม่ต้องสลับแถว
  • โทมัส สำหรับเมทริกซ์สามแนวทแยง (แท่งความร้อน สายส่งแบบขั้นบันได) ใช้เวลา O(n)O(n) เช่น แท่งที่ปลาย 100 °C กับ 0 °C แบ่ง 4 โหนดได้ T=(80,60,40,20)T = (80, 60, 40, 20) °C

วิธีทำซ้ำ: จาโคบีเทียบเกาส์-ไซเดล

ทั้งสองวิธีแก้สมการที่ ii หา xix_i โดยใช้ค่าประมาณของตัวแปรอื่น ต่างกันแค่ว่าใช้ค่า “เก่า” หรือค่า “ใหม่”

จาโคบี: xi(k+1)=bi−∑j≠iaijxj(k)aii,เกาส์-ไซเดล: ใช้ xj(k+1) ทันทีสำหรับ j<i\text{จาโคบี: } x_i^{(k+1)} = \frac{b_i - \sum_{j\ne i}a_{ij}x_j^{(k)}}{a_{ii}},\qquad \text{เกาส์-ไซเดล: ใช้ } x_j^{(k+1)} \text{ ทันทีสำหรับ } j \lt i

ระบบ 4x−y+z=7, 4x−8y+z=−21, −2x+y+5z=154x - y + z = 7,\ 4x - 8y + z = -21,\ -2x + y + 5z = 15 มีคำตอบ (2,4,3)(2, 4, 3) เริ่มที่ (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)
02468101214-8-6-4-20รอบที่ klog₁₀ ความคลาดเคลื่อนจาโคบี ρ ≈ 0.335เกาส์-ไซเดล ρ = 0.12510⁻⁶
ความคลาดเคลื่อนของเกาส์-ไซเดลลดลงราว 8 เท่าต่อรอบ (ρ=0.125\rho = 0.125) จาโคบีราว 3 เท่า (ρ≈0.335\rho \approx 0.335)

ลู่เข้าเมื่อไร และ SOR เร่งได้อย่างไร

  • ทแยงเด่นแท้ ∣aii∣>∑j≠i∣aij∣|a_{ii}| \gt \sum_{j\ne i}|a_{ij}| ทุกแถว → ลู่เข้าแน่นอน ถ้าไม่ทแยงเด่นให้ลองสลับลำดับสมการก่อน
  • เงื่อนไขแท้คือรัศมีสเปกตรัม ρ(T)<1\rho(T) \lt 1 และต้องใช้ราว d/(−log⁡10ρ)d/(-\log_{10}\rho) รอบเพื่อเพิ่มความแม่น dd หลัก
  • SOR ก้าวเลยค่าของเกาส์-ไซเดลด้วยตัวประกอบ 1<ω<21 \lt \omega \lt 2 ระบบแท่งความร้อน 10 ตัวแปรต้องใช้ราว 334 รอบ (จาโคบี) 167 รอบ (เกาส์-ไซเดล) แต่ SOR ที่ ω≈1.56\omega \approx 1.56 ใช้เพียงราว 24 รอบ

เปรียบเทียบทั้งสามวิธีพร้อมกันได้ใน ซิมูเลเตอร์จาโคบี · เกาส์-ไซเดล · SOR และดูความร้อนแผ่ในแผ่นโลหะทีละรอบใน แล็บแผ่นความร้อน

เลขเงื่อนไข: คำตอบเชื่อได้แค่ไหน

ระบบที่สมการเกือบขนานกัน ข้อมูลผิดนิดเดียวคำตอบเปลี่ยนมาก เช่น x+y=2, x+1.0001y=2.0001x + y = 2,\ x + 1.0001y = 2.0001 มีคำตอบ (1,1)(1, 1) แต่ถ้าค่าทางขวาเป็น 2.00022.0002 คำตอบกลายเป็น (0,2)(0, 2) เลขเงื่อนไข κ∞≈4×104\kappa_\infty \approx 4\times10^4 จึงอาจเสียความแม่นราว 4–5 หลัก

∥δx∥∥x∥≤κ(A) ∥δb∥∥b∥\frac{\lVert\delta\mathbf x\rVert}{\lVert\mathbf x\rVert} \le \kappa(A)\,\frac{\lVert\delta\mathbf b\rVert}{\lVert\mathbf b\rVert}

ตารางเลือกวิธี

ระบบของคุณใช้
2–3 ตัวแปร ทำมือคราเมอร์หรือลดแถว
หนาแน่น ขนาดกลาง หลาย b\mathbf bLU + การสลับแถว (numpy.linalg.solve, MATLAB A\b)
สมมาตรบวกแน่นอนโชเลสกี
สามแนวทแยงโทมัส
ใหญ่ เบาบาง ทแยงเด่นเกาส์-ไซเดล หรือ SOR
ใหญ่มาก สมมาตรบวกแน่นอนConjugate Gradient + preconditioner

อ่านต่อในคลังความรู้

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

จาโคบีกับเกาส์-ไซเดลต่างกันตรงไหน?

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

เมื่อไรควรใช้วิธีทำซ้ำแทนการแยก LU?

เมื่อระบบใหญ่มากและเมทริกซ์ส่วนใหญ่เป็นศูนย์ (เบาบาง) เช่น การจำลองความร้อน สนามไฟฟ้า หรือไฟไนต์เอลิเมนต์ ที่มีตัวแปรหลักหมื่นถึงหลักล้าน วิธีทำซ้ำไม่ต้องเก็บเมทริกซ์เต็มและไม่เกิดการเติมศูนย์ ส่วนระบบหนาแน่นขนาดกลางให้ใช้ LU กับการสลับแถว

ทำไมต้องสลับแถวในการกำจัดแบบเกาส์?

เพื่อให้ตัวหลักเป็นค่าที่มีขนาดใหญ่ที่สุดในหลัก ตัวคูณจึงไม่เกิน 1 และความคลาดเคลื่อนจากการปัดเศษไม่ถูกขยาย ถ้าตัวหลักเล็กมาก เช่น 0.0001 เครื่องที่เก็บ 3 หลักจะได้คำตอบผิดทั้งหมด

วิธีทำซ้ำจะลู่เข้าเมื่อไร?

ถ้าเมทริกซ์ทแยงเด่นแท้ จาโคบีและเกาส์-ไซเดลลู่เข้าแน่นอน เงื่อนไขที่แท้จริงคือรัศมีสเปกตรัมของเมทริกซ์การทำซ้ำน้อยกว่า 1 และจำนวนรอบที่ต้องใช้ประมาณได้จากจำนวนหลักที่ต้องการหารด้วย −log₁₀ ของรัศมีสเปกตรัม

พีชคณิตเชิงเส้น กฎของคราเมอร์ (Cramer's Rule) ใช้อย่างไร ทำไมถึงได้ และเมื่อไรไม่ควรใช้ สอนกฎของคราเมอร์แบบเห็นภาพ แทนหลักด้วยค่าคงที่แล้วหารดีเทอร์มิแนนต์ ตัวอย่าง 2×2 และ 3×3 หาตัวแปรเดียว ที่มาของสูตร กรณี Δ = 0 โจทย์พารามิเตอร์ k… อ่านบทความ → พีชคณิตเชิงเส้น สมบัติดีเทอร์มิแนนต์ 12 ข้อที่ออกสอบบ่อย: det(kA), det(A⁻¹), det(adj A) และกับดักที่ต้องระวัง สรุปสมบัติดีเทอร์มิแนนต์ 12 ข้อที่ใช้ในข้อสอบเข้ามหาวิทยาลัยและคณิตศาสตร์วิศวกรรม การดำเนินการแถว det(kA) = kⁿ det A ผลคูณ อินเวอร์ส แอดจอยต์… อ่านบทความ → พีชคณิตเชิงเส้น เรียนเมทริกซ์และดีเทอร์มิแนนต์ให้จบ: แผนที่ 7 ขั้นจาก ม.ปลาย สอบเข้ามหาวิทยาลัย ถึงคณิตศาสตร์วิศวกรรม แผนที่การเรียนเมทริกซ์ ดีเทอร์มิแนนต์ แรงก์ คราเมอร์ และวิธีเชิงตัวเลขแบบเห็นภาพรวม ควรเรียนอะไรก่อนหลัง สอบเข้ามหาวิทยาลัยต้องรู้แค่ไหน… อ่านบทความ →

ดูบทความทั้งหมดในหมวดเวกเตอร์และพีชคณิตเชิงเส้น (7 เรื่อง) → · บทความทั้งหมด