หาคำตอบของระบบสมการเชิงเส้นโดยใช้ Gauss-Seidel method

ให้ระบบสมการเชิงเส้นในรูปของเมทริกซ์ $Ax=b$ โดยที่ \[ A = \left[\begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{array}\right],\qquad x = \left[\begin{array}{c} x_1 \\ x_2 \\ \vdots \\ x_n \end{array}\right],\qquad b = \left[\begin{array}{c} b_1 \\ b_2 \\ \vdots \\ b_n \end{array}\right] \] และเมทริกซ์ $A$ มีคุณสมบัติ diagonal dominance ดังนี้ สมาชิกในแนวเส้นทะแยงมุมมีขนาดมากกว่าผลรวมของขนาดของสมาชิกตัวอื่นในแถว นั่นคือ \[ |a_{ij}| > \sum_{j\ne i}|a_{ij}|,\qquad i=1,\ldots, n\] หรือเมทริกซ์ $A$ มีคุณสมบัติ symmetric positive definite แอปพลิเคชันนี้ใช้วิธี Gauss-Seidel ในการหาคำตอบของระบบสมการข้างบน โดยคำนวณจาก \[ x_i^{(k+1)} = \frac{1}{a_{ii}}\left(b_i-\sum_{j=1}^{i-1}a_{ij}x_j^{(k+1)} - \sum_{j=i+1}^na_{ij}x_j^{(k)}\right),\qquad i=1,\ldots, n \] การคำนวณจะหยุดเมื่อ $k=1000$ หรือ $\|b-Ax\|_\infty < 10^{-8}$ ซึ่งในกรณีหลังนี้ค่า $x$ ที่ได้เป็นคำตอบของระบบสมการดังกล่าว

เช่นเดียวกันกับ วิธีจาโคบี นี้ไม่ใช่ general solver สำหรับเมทริกซ์ทั่วไป แต่ถ้าเมทริกซ์ $A$ มีคุณสมบัติดังกล่าวข้างต้น วิธี Gauss-Seidel จะหาคำตอบได้เร็วกว่าวิธีจาโคบี แต่อาจไม่เหมาะหรือยากสำหรับการคำนวณแบบขนาน วิธีนี้ใช้เป็นส่วนหนึ่งของการคำนวณในของไหล (Computational Fluid Dynamics) ได้เหมือนกัน

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

คำนวณ Gauss-Seidel method