در این برنامهها، الگوریتمهای روشهای
پیادهسازی شده است.
به صورت نمونه، ماتریس ضرایب 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]
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.