ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΞΙΣΩΣΕΩΝ
ΙΙ.
ΜΕΘΟΔΟΣ GAUSS-JORDAN
ΛΥΣΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ Ax = B (όπου Α ένας 3x3 πίνακας και Β ένας πίνακας στήλη)
Με
διαδοχικές
πράξεις ο
πίνακας Α
μετατρέπεται σε
διαγώνιο και
τότε η λύση
είναι προφανής
Το πρόγραμμα GaussJordan.for κάνει τις πράξεις με τη βοήθεια πινάκων και με τη χρήση πολλαπλών επαναλήψεων (loops).
Προσπαθήστε να κατανοήσετε τη χρησιμότητα του κάθε “do loop”.
*******************************************
* THE GAUSS-JORDAN METHOD
*
***********************************************
a(1,1)= 3d0
a(1,2)=-1d0
a(1,3)= 2d0
a(2,1)= 1d0
a(2,2)= 2d0
a(2,3)= 3d0
a(3,1)= 2d0
a(3,2)=-2d0
a(3,3)=-1d0
b(1) =12d0
b(2) =11d0
b(3) = 2d0
print*, 'Oi arxikoi pinakes
A(3x3) kai B(3x1):'
print '(4f7.3)',a(1,1),a(1,2),a(1,3),b(1)
print '(4f7.3)',a(2,1),a(2,2),a(2,3),b(2)
print '(4f7.3)',a(3,1),a(3,2),a(3,3),b(3)
print*
print*, 'Patiste Enter gia sinexeia'
pause
do k=1,N
do i=1,N
if (i.ne.k) then
factor=a(i,k)/a(k,k)
do
j=1,N
a(i,j)=a(k,j)*factor-a(i,j)
enddo
b(i)=b(k)*factor-b(i)
endif
enddo
print*, 'Oi pinakes A kai
B meta apo prakseis:'
print
'(4f7.3)',a(1,1),a(1,2),a(1,3),b(1)
print
'(4f7.3)',a(2,1),a(2,2),a(2,3),b(2)
print
'(4f7.3)',a(3,1),a(3,2),a(3,3),b(3)
print*
print*, 'Patiste Enter gia sinexeia'
pause
enddo
print*, 'O pinakas A exei ginei diagonios'
do i=1,N
x(i)=b(i)/a(i,i)
enddo
print*,'H lisi tou sistimatos:'
print'(f7.3)',x
print*, 'Press
enter to exit'
pause
end