در این برنامه‌ها، الگوریتم‌های روش‌های

  1. ژاکوبی
  2. گوس-سایدل

پیاده‌سازی شده است.

به صورت نمونه، ماتریس ضرایب A

[ 4.0   0.24  -0.08]
[0.09    3.0  -0.15]
[0.04  -0.08    4.0]

و ماتریس b 

[ 8.0]
[ 9.0]
[20.0]

و دقت جواب‌ها 

e = 10**(-3)

می‌باشد.

همچنین برای کنترل دقت محاسبات و نیز بررسی صحت جواب از ماژول Mpmath استفاده شده است.

 روش ژاکوبی

from mpmath import *
# mpmath Option
mp.dps = 4; mp.pretty = True

#------ Input ----------------
A = [[4, .24, -.08], [.09, 3, -.15], [.04, -.08, 4]]
b = [8, 9, 20]
e = 10**(-3)
#------ Calc ----------------
n = len(b)
xa = list(ones(1,3))
xo = list(zeros(1,3))
x = list(zeros(1,3))
kk = 0
xt = list(zeros(1,3))

print(x,kk)
while (all(xa[ii]>e for ii in range(n))):
    for i in range(n):
        xo[i] = x[i]
        ls = list( A[i][l] * x[l]  for l in range(n))
        ls.pop(i)
        xt[i] = 1/A[i][i] * (b[i] - sum( ls ) )
    for i in range(n):
        x[i] = xt[i]
        xa[i] = abs(x[i] - xo[i])
    kk += 1
    print(x, kk)

###------ Print -----------------
print('\nResult ')
[print(" x{:} = {:<{width}}".format(i+1,x[i],width=16)) \
 for i in range(n)]

خروجی

[0.0, 0.0, 0.0] 0
[2.0, 3.0, 5.0] 1
[1.92, 3.19, 5.04] 2
[1.909, 3.194, 5.045] 3
[1.909, 3.195, 5.045] 4

Result 
 x1 = 1.909           
 x2 = 3.195           
 x3 = 5.045 


 روش گوس-سایدل

from mpmath import *
# mpmath Option
mp.dps = 4; mp.pretty = True

#------ Input ----------------
A = [[4, .24, -.08], [.09, 3, -.15], [.04, -.08, 4]]
b = [8, 9, 20]
e = 10**(-3)
#------ Calc ----------------
n = len(b)
xa = list(ones(1,3))
xo = list(zeros(1,3))
x = list(zeros(1,3))
kk = 0
xt = list(zeros(1,3))

print(x,kk)
while (all(xa[ii]>e for ii in range(n))):
    for i in range(n):
        xo[i] = x[i]
        ls = list( A[i][l] * x[l]  for l in range(n))
        ls.pop(i)
        x[i] = 1/A[i][i] * (b[i] - sum( ls ) )


        xa[i] = abs(x[i] - xo[i])
    kk += 1
    print(x, kk)

###------ Print -----------------
print('\nResult ')
[print(" x{:} = {:<{width}}".format(i+1,x[i],width=16)) \
 for i in range(n)]

خروجی

[0.0, 0.0, 0.0] 0
[2.0, 2.94, 5.039] 1
[1.924, 3.194, 5.045] 2
[1.909, 3.195, 5.045] 3

Result 
 x1 = 1.909           
 x2 = 3.195           
 x3 = 5.045 

دو برنامه فوق در خطوط ۲۳ ، ۲۴ و ۲۵ تفاوت دارند.

در نهایت بعد از اجرای برنامه می‌توان با کد زیر صحت جواب را بررسی کرد.

>>> aa=matrix(A)
>>> bb=matrix(b)
>>> xx=matrix(x)
>>> aa * xx
[ 8.0]
[ 9.0]
[20.0]
>>> bb
[ 8.0]
[ 9.0]
[20.0]