Άσκηση : πρόκειται για ΣΔΕ δύο οριακών τιμών με εφαρμογή του αλγόριθμου Thomas για επίλυση τριγωνικού συστήματος Έχουμε να επιλύσουμε την εξίσωση: du du u dr r dr με οριακές συνθήκες u () 0 και u(0) πεπερασμένη ή συμμετρίας). du 0 (συνθήκη dr r 0 (Α) Η αναλυτική λύση της διαφορικής εξίσωσης δίνεται με τη βοήθεια του Mathematica: DSolveu''r u'r, u0, u'00,ur,r r και είναι: ur () ( r) Αρχικά διακριτοποιούμε το πεδίο ορισμού: Χωρίζουμε την ακτίνα σε Ν ίσα διαστήματα (Ν+ κόμβους) πλάτους r N r 0 N N+ r=0 i- i i+ r= Έτσι για τη ζητούμενη παροχή θα έχουμε: Q uda Q ru( r) dr 0 Η αναλυτική τιμή της Q είναι ίση με 0.39699 8 Προσεγγίζουμε τη διαφορική εξίσωση (Α) στον τυχαίο κόμβο i : u u u u u i i i i i r ri r ui ui u i r ri r r, r rir (Α) για τους εσωτερικούς κόμβους i,..., N όπου r ( i) r i
Για i N έχουμε: 0 un Για i θα χρησιμοποιήσουμε την οριακή συνθήκη μαζί με την διαφορική εξίσωση: du d u du d u Παρατηρούμε ότι το limr 0 lim dr r 0 lim dr r0 rdr r dr du uo uu Έτσι η () γράφεται: (Α3) dr r du u u0 Η οριακή συνθήκη: 0 0uo u (Α) dr r0 r Ό κόμβος i 0 είναι φανταστικός. Οι (Α3) και (Α) δίνουν τελικά: u u r (Α5) Το σύστημα που προκύπτει είναι τριδιαγώνιο και θα επιλυθεί με την μέθοδο Τhomas. Για το ολοκλήρωμα της παροχής Q χρησιμοποιούμε κανόνα τραπεζίου: R r Q ru( r) dr [ ru ru... rnun rn un] 0 Έστω ένα αραιό πλέγμα με Ν=3 (Δr =/3). Τότε έχουμε να λύσουμε το σύστημα: 0 u / 9.5 8 3.5 u 0 6.75 8 u 3 To οποίο δίνει: u 0.5 u u 3 0. 0.38889 u (από οριακή συνθήκη) 0 Οι τιμές ταυτίζονται με αυτές της αναλυτικής λύσης στα σημεία 0, /3, /3,. Q [0(0.5) (/ 3)(0.) ( / 3)(0.38889) (0)] 0.3873 3 Το πρόγραμμα σε Fortran είναι το ακόλουθο: Program Poisson (σε διάσταση) implicit none doubleprecision,allocatable::a(:),b(:),c(:),d(:),x(:),r(:) doubleprecision:: dr,q,s integer::n,i,status
n=3!arithmos diasthmatwn -> n+ komboi allocate(a(n),b(n),c(n-),x(n+),d(n),r(n+)) if (status/=0) Stop 'Not enough memory' dr=./n do i=,n+ r(i)=(i-)*dr x(n+)=0 b()=. c()=-. a(i)=./dr**-./(.*r(i)*dr) b(i)=-./dr** if (i<n) then c(i)=./dr**+./(.*r(i)*dr) d()=dr** d(i)=- print*, '-------------' call Thomas(n,a,b,c,d,x) do i=,n print '(I3,H u(,f0.5,h) =,D0.5,D0.5)',i,r(i),x(i),(-r(i)**)/ print '(I3,H u(,f0.5,h) =,D0.5,D0.5)',n+,r(n+),0,0 s=0 s=s+*r(i)*x(i) s=s+r()*x()+r(n+)*x(n+) q= 3. * dr * s print*, 'q=',s,q contains subroutine Thomas(n,a,b,c,d,x) integer,intent(in) :: n doubleprecision, INTENT(INOUT) ::a(n),b(n),c(n),d(n) doubleprecision, INTENT(OUT) ::x(n) integer::i doubleprecision ::t(n),u(n) end t()=b() u()=d()/t() t(i)=b(i)-a(i)*c(i-)/t(i-) u(i)=(d(i)-a(i)*u(i-))/t(i) x(n)=u(n) do i=n-,,- x(i)=u(i)-c(i)/t(i)*x(i+) end subroutine Thomas
Δίνουμε ενδεικτικά αποτέλεσματα για Ν=00. Δίπλα στις αριθμητικές τιμές παρουσιάζονται οι αντίστοιχες αναλυτικές οι οποίες ταυτίζονται!!! u(0.00000) = 0.5000D+00 0.5000D+00 u(0.0000) = 0.997D+00 0.998D+00 3 u(0.0000) = 0.990D+00 0.990D+00 u(0.03000) = 0.977D+00 0.977D+00 5 u(0.0000) = 0.960D+00 0.960D+00 6 u(0.05000) = 0.937D+00 0.938D+00 7 u(0.06000) = 0.90D+00 0.90D+00 8 u(0.07000) = 0.877D+00 0.877D+00 9 u(0.08000) = 0.80D+00 0.80D+00 0 u(0.09000) = 0.797D+00 0.798D+00 u(0.0000) = 0.750D+00 0.750D+00 u(0.000) = 0.697D+00 0.698D+00 3 u(0.000) = 0.60D+00 0.60D+00 u(0.3000) = 0.577D+00 0.577D+00 5 u(0.000) = 0.50D+00 0.50D+00 6 u(0.5000) = 0.37D+00 0.38D+00 7 u(0.6000) = 0.360D+00 0.360D+00 8 u(0.7000) = 0.77D+00 0.77D+00 9 u(0.8000) = 0.90D+00 0.90D+00 0 u(0.9000) = 0.097D+00 0.097D+00 u(0.0000) = 0.000D+00 0.000D+00 u(0.000) = 0.3897D+00 0.3897D+00 3 u(0.000) = 0.3790D+00 0.3790D+00 u(0.3000) = 0.3677D+00 0.3678D+00 5 u(0.000) = 0.3560D+00 0.3560D+00 6 u(0.5000) = 0.337D+00 0.338D+00 7 u(0.6000) = 0.330D+00 0.330D+00 8 u(0.7000) = 0.377D+00 0.378D+00 9 u(0.8000) = 0.300D+00 0.300D+00 30 u(0.9000) = 0.897D+00 0.898D+00 3 u(0.30000) = 0.750D+00 0.750D+00 3 u(0.3000) = 0.597D+00 0.598D+00 33 u(0.3000) = 0.0D+00 0.0D+00 3 u(0.33000) = 0.77D+00 0.78D+00 35 u(0.3000) = 0.0D+00 0.0D+00 36 u(0.35000) = 0.937D+00 0.937D+00 37 u(0.36000) = 0.760D+00 0.760D+00 38 u(0.37000) = 0.577D+00 0.577D+00 39 u(0.38000) = 0.390D+00 0.390D+00 0 u(0.39000) = 0.97D+00 0.97D+00 u(0.0000) = 0.000D+00 0.000D+00 u(0.000) = 0.0797D+00 0.0797D+00 3 u(0.000) = 0.0590D+00 0.0590D+00 u(0.3000) = 0.0377D+00 0.0378D+00 5 u(0.000) = 0.060D+00 0.060D+00 6 u(0.5000) = 0.9937D+00 0.9937D+00 7 u(0.6000) = 0.970D+00 0.970D+00 8 u(0.7000) = 0.977D+00 0.977D+00 9 u(0.8000) = 0.90D+00 0.90D+00 50 u(0.9000) = 0.8997D+00 0.8998D+00 5 u(0.50000) = 0.8750D+00 0.8750D+00 5 u(0.5000) = 0.897D+00 0.898D+00 53 u(0.5000) = 0.80D+00 0.80D+00 5 u(0.53000) = 0.7977D+00 0.7977D+00 55 u(0.5000) = 0.770D+00 0.770D+00 56 u(0.55000) = 0.737D+00 0.738D+00 57 u(0.56000) = 0.760D+00 0.760D+00 58 u(0.57000) = 0.6877D+00 0.6877D+00 59 u(0.58000) = 0.6590D+00 0.6590D+00 60 u(0.59000) = 0.697D+00 0.698D+00 6 u(0.60000) = 0.6000D+00 0.6000D+00 6 u(0.6000) = 0.5697D+00 0.5698D+00 63 u(0.6000) = 0.5390D+00 0.5390D+00 6 u(0.63000) = 0.5077D+00 0.5077D+00 65 u(0.6000) = 0.760D+00 0.760D+00 66 u(0.65000) = 0.37D+00 0.37D+00 67 u(0.66000) = 0.0D+00 0.0D+00 68 u(0.67000) = 0.3777D+00 0.3777D+00 69 u(0.68000) = 0.30D+00 0.30D+00 70 u(0.69000) = 0.3097D+00 0.3097D+00
7 u(0.70000) = 0.750D+00 0.750D+00 7 u(0.7000) = 0.397D+00 0.398D+00 73 u(0.7000) = 0.00D+00 0.00D+00 7 u(0.73000) = 0.677D+00 0.678D+00 75 u(0.7000) = 0.30D+00 0.30D+00 76 u(0.75000) = 0.0937D+00 0.0938D+00 77 u(0.76000) = 0.0560D+00 0.0560D+00 78 u(0.77000) = 0.077D+00 0.078D+00 79 u(0.78000) = 0.97900D-0 0.97900D-0 80 u(0.79000) = 0.93975D-0 0.93975D-0 8 u(0.80000) = 0.90000D-0 0.90000D-0 8 u(0.8000) = 0.85975D-0 0.85975D-0 83 u(0.8000) = 0.8900D-0 0.8900D-0 8 u(0.83000) = 0.77775D-0 0.77775D-0 85 u(0.8000) = 0.73600D-0 0.73600D-0 86 u(0.85000) = 0.69375D-0 0.69375D-0 87 u(0.86000) = 0.6500D-0 0.6500D-0 88 u(0.87000) = 0.60775D-0 0.60775D-0 89 u(0.88000) = 0.5600D-0 0.5600D-0 90 u(0.89000) = 0.5975D-0 0.5975D-0 9 u(0.90000) = 0.7500D-0 0.7500D-0 9 u(0.9000) = 0.975D-0 0.975D-0 93 u(0.9000) = 0.3800D-0 0.3800D-0 9 u(0.93000) = 0.33775D-0 0.33775D-0 95 u(0.9000) = 0.900D-0 0.900D-0 96 u(0.95000) = 0.375D-0 0.375D-0 97 u(0.96000) = 0.9600D-0 0.9600D-0 98 u(0.97000) = 0.775D-0 0.775D-0 99 u(0.98000) = 0.99000D-0 0.99000D-0 00 u(0.99000) = 0.9750D-0 0.9750D-0 0 u(.00000) = 0.00000D+00 0.00000D+00 ΠΑΡΟΧΗ = 0.396076370
Άσκηση Θεωρούμε ότι η τετραγωνική πλάκα έχει πλευρά ίση με m. Επίσης h=5 W/m C, k=300 W/m C και T 5 C. Έχουμε να επιλύσουμε τη διαφορική εξίσωση Laplace: T T T 0 0 (Β) x y με οριακές συνθήκες: T T( x,0) 50, T( x,) 00, T(, y) 50 και για x 0 : k h( T T ). x Διακριτοποιούμε το πεδίο ορισμού 0 x, y : xωρίζουμε την κάθε πλευρά σε Ν ίσα διαστήματα (N+ κόμβους) πλάτους H N Έτσι για τις οριακές συνθήκες έχουμε: T( x,) 00 T(, j) 00 T( x,0) 50 T( n, j) 50 T(, y) 50 T( i, n) 50 T Για x 0 διακριτοποιούμε την k h( T T ) με πεπερασμένες διαφορές στον x κόμβο (, j) και παίρνουμε: T, T j, j hh hh k h( T, j T) T, j T, j T, j T H k k hh hh T, j ( T, j T )/( ) για j=,,n (Β) k k Επίσης διακριτοποιούμε την (Β) στον τυχαίο κόμβο ( i, j) και παίρνουμε τον τύπο των 5 σημείων: Ti, j ( Ti, jti, jti, j Ti, j ) για,..., i N και j,..., N (Β3) Έτσι θα έχουμε για τις διάφορες μεθόδους επίλυσης συστημάτων: Μέθοδος Jacobi ( n) ( n) hh hh T, j ( T, j T )/( ) για j,..., N ( i ) k k ( n) ( ) ( ) ( ) (, ( n n n n) Ti j Ti, j Ti, j Ti, j Ti, j ) για i,..., N και j,..., N Μέθοδος Gauss-Seidel ( n) ( n) hh hh T, j ( T, j T )/( ) για j,..., N ( i ) k k ( n) ( ) ( ) ( ) ( ), ( n n n n Ti j Ti, j Ti, j Ti, j Ti, j ) γιαi,..., N και j,..., N
(Ο υπολογισμός γίνεται από το πάνω μέρος της τετραγωνικής πλάκας προς τα κάτω και από αριστερά προς τα δεξιά) Μέθοδος SOR ( n) ( n) hh hh ( n) T, j ( T, j T )/( ) ( ) T, j για j,..., N ( i ) k k ( n) ( ) ( ) ( ) ( ) ( ), ( n n n n Ti j Ti, j Ti, j Ti, j Ti, j ) n ( ) T i, j για i,..., N και j,..., N Το πρόγραμμα σε Fortran είναι: Μέθοδοι Jacobi, Gauss-Seidel, SOR Program Jacobi_GaussSeidel_SOR implicit none doubleprecision,allocatable::t(:,:),told(:,:) integer::n,i,j,k,kk,h,status,maxi,done,method doubleprecision::s,rel,err,max doubleprecision::t0,hh,w n=50 allocate(t(n+,n+),told(n+,n+)) if (status/=0) Stop 'Not enough memory' maxi=50000 rel=0.0000000 print*, 'n=',n,'rel=',rel hh=./n h=5 kk=300 t0=5 do method=,3!=jacobi, =gauss-seidel, 3=SOR if (method==) then t(:,:)=0. t(,:)=00. t(n+,:)=50. t(:,n+)=50. told(:,:)=t(:,:)! print*,x0(:)!read* k= done=0 do while (k<=maxi.and. done==0) do j=,n if (j==) then t(i,)=(told(i,)-(h*hh/kk)*t0)/(-(h*hh/kk)) else t(i,j)= 0.5*(told(i,j+)+told(i,j-)+told(i+,j)+told (i-,j))
! elenxos gia termatismo max=- do j=,n err = abs((t(i,j) - told(i,j))/t(i,j)) if (err>max) then max=err if (max<rel) then done= told(:,:)=t(:,:) k=k+ open(,file='res_jacobi.txt',recl=0000)!xwris to RECL=000 to megisto platos xwraei monon 5 sthles toy pinaka do i=n+,,-! ta typwnoyme anapoda gia na ta deiksei o array visualizer swsta! write(,*) t(i,:) print*, 'Jacobi' print*, k-,max print*,'------------------------' elseif (method==) then!gauss-seidel t(:,:)=0. t(,:)=00. t(n+,:)=50. t(:,n+)=50. k= done=0 do while (k<=maxi.and. done==0) told(:,:)=t(:,:) do j=,n if (j==) then t(i,)=(t(i,)-(h*hh/kk)*t0)/(-(h*hh/kk)) else t(i,j)= 0.5*(t(i,j+)+t(i,j-)+t(i+,j)+t(i-,j))! elenxos gia termatismo max=- do j=,n err = abs((t(i,j) - told(i,j))/t(i,j)) if (err>max) then max=err if (max<rel) then done= k=k+ open(,file='res_gauss.txt',recl=000) do i=n+,,- write(,*) t(i,:)
print*, 'Gauss Seidel' print*, k-,max print*, '-------------------------------' elseif (method==3) then!sor do w=.88,.99,0.0 k= done=0 t(:,:)=0. t(,:)=00. t(n+,:)=50. t(:,n+)=50. do while (k<=maxi.and. done==0) told(:,:)=t(:,:) do j=,n if (j==) then t(i,)=w*(t(i,)-(h*hh/kk)*t0)/(-(h*hh/kk))+(-w)*t(i,) else t(i,j)= 0.5*w*(t(i,j+)+t(i,j-)+t(i+,j)+t(i-,j))+(-w)*t(i,j)! elenxos gia termatismo max=- do j=,n err = abs((t(i,j) - told(i,j))/t(i,j)) if (err>max) then max=err if (max<rel) then done= k=k+ open(3,file='res_sor.txt',recl=000) do i=n+,,- write(3,*) t(i,:) print*, 'SOR' print*, k-,w end Ο έλεγχος σύγκλισης γίνεται με κριτήριο το μέγιστο σχετικό σφάλμα από όλα τα στοιχεία του πίνακα να είναι μικρότερο από μία δεδομένη τιμή. Ανοίγοντας το αρχείο res_jacobi.txt μέσα από το πρόγραμμα Compaq Array Visualizer και επιλέγοντας τύπο γραφήματος Image Map παίρνουμε τα ακόλουθα γραφήματα: N=5
Ν=0 Ν=0 Αντίστοιχα γραφήματα παίρνουμε για όλες τις μεθόδους.
Στον επόμενο πίνακα φαίνεται συγκεντρωτικά ο αριθμός επαναλήψεων μέχρι την σύγκλιση ανά μέθοδο και πλήθος κόμβων: Κριτήριο τερματισμού: Σχετικό σφάλμα < 0 - Πλέγμα Jacobi Gauss-Seidel SOR 5x5 537 5 6 (.89) 9 (.90) (.9) 7 (.9) 39 (.93) 0x0 6099 009 37 (.9) 330 (.93) 8 (.9) 8 (.95) 37 (.96) 0x0 90 879 650 (.96) 99 (.97) 85 (.98) 98 (.99) Κριτήριο τερματισμού: Σχετικό σφάλμα < 0-6 Πλέγμα Jacobi Gauss-Seidel SOR 5x5 685 330 3 (.89) 97 (.90) 76 (.9) 0 (.9) 0x0 069 376 569 (.93) 7 (.9) 36 (.95) 0 (.96) 0x0 63556 36303 05 (.96) 865 (.97) 80 (.98) 53 (.99) Κριτήριο τερματισμού: Σχετικό σφάλμα < 0-8 Πλέγμα Jacobi Gauss-Seidel SOR 5x5 0093 5335 36 (.89) 65 (.90) 08 (.9) 35 (.9) 0x0 3565 8967 659 (.9) 76 (.95) 75 (.96) 65 (.97) 0x0 0 66588 76 (.96) 3 (.97) 97 (.98) 00 (.99)
Άσκηση 3 Επιλύουμε τη διαφορική εξίσωση Poisson: u u u x y με οριακές συνθήκες ux (,0) ux (,) u(0, y) u(, y) 0. (Γ) Αρχικά διακριτοποιούμε το πεδίο ορισμού 0 x, y : xωρίζουμε την κάθε πλευρά σε Ν ίσα διαστήματα (N+ κόμβους) πλάτους h N Στη συνέχεια διακριτοποιούμε την (Γ) στον τυχαίο κόμβο ( i, j) και παίρνουμε τον τύπο των 5 σημείων: ui, j ( ui, jui, jui, j ui, j h ) για i,..., N και j,..., N (Γ) Για την επίλυση του συστήματος θα χρησιμοποιήσουμε τις μεθόδους Jacobi, Gauss- Seidel και SOR Jacobi ( n) ( ) ( ) ( ) ( ), ( n n n n ui j ui, j ui, j ui, j ui, j h ) γιαi,..., N και j,..., N Gauss-Seidel ( n) ( ) ( ) ( ) ( ), ( n n n n ui j ui, j ui, j ui, j ui, j h ) γιαi,..., N και j,..., N (Ο υπολογισμός γίνεται από πάνω προς τα κάτω και από αριστερά προς τα δεξιά) SOR u ( u u u u h ) ( ) u, για i,..., N και j,..., N ( n) ( n) ( n) ( n) ( n) ( n) i, j i, j i, j i, j i, j i j Για τον υπολογισμό της ζητούμενης παροχής θα έχουμε: Q uda Q u( x, y) dxdy 0 0 και βάσει του κανόνα του τραπεζίου θα είναι: h Q [ u,u, NuN,uN, N N N N N N N ] u u u u u, j N, j i, i, N i, j j j i i i j
Program Jacobi_GaussSeidel_SOR implicit none doubleprecision,allocatable::u(:,:),uold(:,:) integer::n,i,j,k,kk,h,status,maxi,done,method,l doubleprecision::s,rel,err,max,s,s,q doubleprecision::hh,w n=50 allocate(u(n+,n+),uold(n+,n+)) if (status/=0) Stop 'Not enough memory' maxi=50000 rel=0.0000000 hh=./n do method=,3!=jacobi, =gauss-seidel, 3=SOR u(:,:)=0. if (method==) then uold(:,:)=u(:,:)! print*,x0(:)!read* k= done=0 do while (k<=maxi.and. done==0) do j=,n u(i,j)= 0.5*(uold(i,j+)+uold(i,j-)+uold(i+,j)+uold (i-,j)+hh**)! elenxos gia termatismo max=- do j=,n err = abs((u(i,j) - uold(i,j))/u(i,j)) if (err>max) then max=err if (max<rel) then done= uold(:,:)=u(:,:) k=k+ open(,file='res_jacobi.txt',recl=0000)!xwris to RECL=000 to megisto platos xwraei monon 5 sthles toy pinaka do i=n+,,-! ta typwnoyme anapoda gia na ta deiksei o array visualizer swsta! write(,*) u(i,:) print*, 'Jacobi' print*, k-,max print*,'------------------------' elseif (method==) then!gauss-seidel k= done=0
do while (k<=maxi.and. done==0) uold(:,:)=u(:,:) do j=,n u(i,j)= 0.5*(u(i,j+)+u(i,j-)+u(i+,j)+u(i-,j)+hh**)! elenxos gia termatismo max=- do j=,n err = abs((u(i,j) - uold(i,j))/u(i,j)) if (err>max) then max=err if (max<rel) then done= k=k+ open(,file='res_gauss.txt',recl=000)!xwris to RECL=000 to megisto platos xwraei monon 5 sthles toy pinaka do i=n+,,-! ta typwnoyme anapoda gia na ta deiksei o array visualizer swsta! write(,*) u(i,:) print*, 'Gauss Seidel' print*, k-,max print*, '-------------------------------' elseif (method==3) then!sor do w=.8,.99,0.0 k= done=0 u(:,:)=0.!w=.90 do while (k<=maxi.and. done==0) uold(:,:)=u(:,:) do j=,n u(i,j)= 0.5*w*(u(i,j+)+u(i,j-)+u(i+,j)+u(i-,j)+hh**)+(-w)*u(i,j)! elenxos gia termatismo max=- do j=,n err = abs((u(i,j) - uold(i,j))/u(i,j)) if (err>max) then max=err if (max<rel) then done=
k=k+ open(3,file='res_sor.txt',recl=000)!xwris to RECL=000 to megisto platos xwraei monon 5 sthles toy pinaka do i=n+,,-! ta typwnoyme anapoda gia na ta deiksei o array visualizer swsta! write(3,*) u(i,:) print*, 'SOR' print*, k-,w!ypologismos ths paroxhs q s=0 do l=,n s=s+u(l,)+u(l,n+)+u(,l)+u(n+,l) s=0 do i=,n do j=,n s=s+u(i,j) q=(u(,)+u(,n+)+u(n+,)+u(n+,n+)+*s+*s)*hh**/ print*,q end Ενδεικτικά για N= (πλέγμα 5x5) θα έχουμε με τη Jacobi τα εξής αποτελέσματα: Ταχύτητες (u ) 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00.9607E-0 5.677963E-0.9607E-0 0.0000000E+00 0.0000000E+00 5.677963E-0 7.0999E-0 5.677963E-0 0.0000000E+00 0.0000000E+00.9607E-0 5.677963E-0.9607E-0 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00 Παροχή: Q=0.088037
Στον επόμενο πίνακα φαίνεται συγκεντρωτικά ο αριθμός επαναλήψεων μέχρι την σύγκλιση ανά μέθοδο και πλήθος κόμβων: Σχετικό σφάλμα< 0 - Πλέγμα Jacobi Gauss-Seidel SOR 5x5 59 967 7 (.86) 08 (.87) 0 (.88) 0 (.89) 0x0 389 59 3 (.9) 05 (.93) 0 (.9) 08 (.95) 0x0 730 57 (.96) 0 (.97) 50 (.98) 908 (.99) Σχετικό σφάλμα< 0-6 Πλέγμα Jacobi Gauss-Seidel SOR 5x5 3898 6 65(.87) (.88) 3 (.89) (.90) 0x0 790 7098 395 (.9) 33 (.93) 3 (.9) 80 (.95) 0x0 39976 783 93 (.95) 73 (.96) 56 (.97) 80 (.98) Σχετικό σφάλμα< 0-8 Πλέγμα Jacobi Gauss-Seidel SOR 5x5 69 39 53 (.86) 3 (.87) 86 (.88) 0 (.89) 0x0 7 76 556 (.95) 59 (.96) 38 (.97) 07 (.98) 0x0 7738 30 35 (.95) 035 (.96) 653 (.97) 89 (.98)