หาคำตอบของระบบสมการเชิงเส้นโดยใช้วิธีจาโคบี (Jacobi 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\] แอปพลิเคชันนี้ใช้วิธีจาโคบีในการหาคำตอบของระบบสมการข้างบน โดยคำนวณจาก \[ x_i^{(k+1)} = \frac{1}{a_{ii}}\left(b_i-\sum_{j\ne i}a_{ij}x_j^{(k)} \right),\qquad i=1,\ldots, n \] การคำนวณจะหยุดเมื่อ $k=1000$ หรือ $\|b-Ax\|_\infty < 10^{-8}$ ซึ่งในกรณีหลังนี้ค่า $x$ ที่ได้เป็นคำตอบของระบบสมการดังกล่าว

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

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

คำนวณวิธีจาโคบี