- หน้าแรก
- บทความ
- เวกเตอร์และพีชคณิตเชิงเส้น
- จาโคบีกับเกาส์-ไซเดล
// บทความ · วิธีเชิงตัวเลข
แก้ระบบสมการเชิงเส้นด้วยวิธีเชิงตัวเลข: เกาส์ LU จาโคบี หรือเกาส์-ไซเดล เลือกวิธีไหนดี
โปรแกรมจำลองวงจร วิเคราะห์โครงสร้าง และคำนวณความร้อนต้องแก้ ที่มีตัวแปรนับพันถึงนับล้าน วิธีที่ใช้ในห้องเรียนจึงไม่พอ บทความนี้เปรียบเทียบวิธีหลักทั้งหมดแบบเห็นภาพรวม ว่าแต่ละวิธีทำงานอย่างไร เร็วแค่ไหน และควรเลือกเมื่อไร
- วิธีตรง (เกาส์ LU โชเลสกี โทมัส) จบในจำนวนขั้นที่แน่นอน เหมาะกับระบบหนาแน่นขนาดกลาง ต้องสลับแถวเสมอ
- วิธีทำซ้ำ (จาโคบี เกาส์-ไซเดล SOR) ปรับค่าเดาทีละรอบ เหมาะกับระบบใหญ่และเบาบาง
- เกาส์-ไซเดลมักเร็วกว่าจาโคบีราวสองเท่า SOR ที่ เหมาะสมเร็วกว่าอีกหลายเท่า
- ก่อนเชื่อคำตอบ ดูเลขเงื่อนไข ซึ่งบอกว่าอาจเสียความแม่นยำราว หลัก
ภาพรวม: วิธีตรงกับวิธีทำซ้ำ
กฎของคราเมอร์ไม่อยู่ในแผนที่นี้ เพราะต้นทุนโตแบบแฟกทอเรียล ระบบ 20 ตัวแปรต้องคูณราว ครั้ง ขณะที่การกำจัดแบบเกาส์ใช้ราว 2,700 ครั้ง (ดูเหตุผลใน บทความกฎของคราเมอร์)
วิธีตรง: เกาส์ LU โชเลสกี และโทมัส
การกำจัดแบบเกาส์ ทำให้ใต้แนวทแยงเป็นศูนย์แล้วแทนค่าย้อนกลับ ใช้ราว flops จุดสำคัญคือการสลับแถว (partial pivoting) ให้ตัวหลักใหญ่ที่สุดในหลัก ตัวอย่างบนเครื่องที่เก็บ 3 หลักนัยสำคัญ
เพราะตัวคูณ ทำให้ ปัดเป็น ข้อมูลของสมการแรกหายไปหมด ลองปรับจำนวนหลักเองได้ใน แล็บการสลับแถว
- การแยก LU คือเกาส์ที่เก็บตัวคูณไว้ใน แยกครั้งเดียวแล้วแก้ ใหม่ได้ด้วยต้นทุนแค่ เหมาะกับวงจรที่แหล่งจ่ายเปลี่ยนแต่โครงสร้างเดิม
- โชเลสกี สำหรับเมทริกซ์สมมาตรบวกแน่นอน เช่น เมทริกซ์ความนำของวงจรตัวต้านทาน เร็วกว่า LU สองเท่าและไม่ต้องสลับแถว
- โทมัส สำหรับเมทริกซ์สามแนวทแยง (แท่งความร้อน สายส่งแบบขั้นบันได) ใช้เวลา เช่น แท่งที่ปลาย 100 °C กับ 0 °C แบ่ง 4 โหนดได้ °C
วิธีทำซ้ำ: จาโคบีเทียบเกาส์-ไซเดล
ทั้งสองวิธีแก้สมการที่ หา โดยใช้ค่าประมาณของตัวแปรอื่น ต่างกันแค่ว่าใช้ค่า “เก่า” หรือค่า “ใหม่”
ระบบ มีคำตอบ เริ่มที่
| รอบ | จาโคบี | เกาส์-ไซเดล |
|---|---|---|
| 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) |
ลู่เข้าเมื่อไร และ SOR เร่งได้อย่างไร
- ทแยงเด่นแท้ ทุกแถว → ลู่เข้าแน่นอน ถ้าไม่ทแยงเด่นให้ลองสลับลำดับสมการก่อน
- เงื่อนไขแท้คือรัศมีสเปกตรัม และต้องใช้ราว รอบเพื่อเพิ่มความแม่น หลัก
- SOR ก้าวเลยค่าของเกาส์-ไซเดลด้วยตัวประกอบ ระบบแท่งความร้อน 10 ตัวแปรต้องใช้ราว 334 รอบ (จาโคบี) 167 รอบ (เกาส์-ไซเดล) แต่ SOR ที่ ใช้เพียงราว 24 รอบ
เปรียบเทียบทั้งสามวิธีพร้อมกันได้ใน ซิมูเลเตอร์จาโคบี · เกาส์-ไซเดล · SOR และดูความร้อนแผ่ในแผ่นโลหะทีละรอบใน แล็บแผ่นความร้อน
เลขเงื่อนไข: คำตอบเชื่อได้แค่ไหน
ระบบที่สมการเกือบขนานกัน ข้อมูลผิดนิดเดียวคำตอบเปลี่ยนมาก เช่น มีคำตอบ แต่ถ้าค่าทางขวาเป็น คำตอบกลายเป็น เลขเงื่อนไข จึงอาจเสียความแม่นราว 4–5 หลัก
ตารางเลือกวิธี
| ระบบของคุณ | ใช้ |
|---|---|
| 2–3 ตัวแปร ทำมือ | คราเมอร์หรือลดแถว |
| หนาแน่น ขนาดกลาง หลาย | LU + การสลับแถว (numpy.linalg.solve, MATLAB A\b) |
| สมมาตรบวกแน่นอน | โชเลสกี |
| สามแนวทแยง | โทมัส |
| ใหญ่ เบาบาง ทแยงเด่น | เกาส์-ไซเดล หรือ SOR |
| ใหญ่มาก สมมาตรบวกแน่นอน | Conjugate Gradient + preconditioner |
อ่านต่อในคลังความรู้
คำถามที่พบบ่อย
จาโคบีกับเกาส์-ไซเดลต่างกันตรงไหน?
จาโคบีคำนวณทุกตัวแปรในรอบใหม่จากค่ารอบก่อนทั้งหมด ส่วนเกาส์-ไซเดลนำค่าที่เพิ่งได้ในรอบเดียวกันมาใช้ทันที เกาส์-ไซเดลจึงมักลู่เข้าเร็วกว่าราวสองเท่าและใช้หน่วยความจำน้อยกว่า ส่วนจาโคบีคำนวณแบบขนานได้ง่าย
เมื่อไรควรใช้วิธีทำซ้ำแทนการแยก LU?
เมื่อระบบใหญ่มากและเมทริกซ์ส่วนใหญ่เป็นศูนย์ (เบาบาง) เช่น การจำลองความร้อน สนามไฟฟ้า หรือไฟไนต์เอลิเมนต์ ที่มีตัวแปรหลักหมื่นถึงหลักล้าน วิธีทำซ้ำไม่ต้องเก็บเมทริกซ์เต็มและไม่เกิดการเติมศูนย์ ส่วนระบบหนาแน่นขนาดกลางให้ใช้ LU กับการสลับแถว
ทำไมต้องสลับแถวในการกำจัดแบบเกาส์?
เพื่อให้ตัวหลักเป็นค่าที่มีขนาดใหญ่ที่สุดในหลัก ตัวคูณจึงไม่เกิน 1 และความคลาดเคลื่อนจากการปัดเศษไม่ถูกขยาย ถ้าตัวหลักเล็กมาก เช่น 0.0001 เครื่องที่เก็บ 3 หลักจะได้คำตอบผิดทั้งหมด
วิธีทำซ้ำจะลู่เข้าเมื่อไร?
ถ้าเมทริกซ์ทแยงเด่นแท้ จาโคบีและเกาส์-ไซเดลลู่เข้าแน่นอน เงื่อนไขที่แท้จริงคือรัศมีสเปกตรัมของเมทริกซ์การทำซ้ำน้อยกว่า 1 และจำนวนรอบที่ต้องใช้ประมาณได้จากจำนวนหลักที่ต้องการหารด้วย −log₁₀ ของรัศมีสเปกตรัม
บทความอื่นที่น่าอ่าน
ดูบทความทั้งหมดในหมวดเวกเตอร์และพีชคณิตเชิงเส้น (7 เรื่อง) → · บทความทั้งหมด