↜ Back to index Introduction to Numerical Analysis 2
Solutions for Lecture 6
Exercise 3
implicit none
integer n, i, j, k
real, dimension(:,:), allocatable :: a
real, dimension(:), allocatable :: b, x
real c, s
print *, 'Enter n, a, b'
read *, n
allocate(a(n, n))
allocate(b(n))
allocate(x(n))
do i = 1,n
read *, a(i, :)
end do
read *, b
! elimination step
do k = 1,n-1
! add k-th row to the remaining ones
do i = k+1,n
if (a(k, k) == 0) then
print *, 'Error: a(', k, ',', k, ') is zero'
stop
end if
= a(i, k) / a(k, k)
c do j = k,n
= a(i, j) - a(k, j) * c
a(i, j) end do
! fancy way:
! a(i, :) = a(i, :) - a(k, :) * c
= b(i) - b(k) * c
b(i) end do
end do
do i = n,1,-1
= 0.
s do j = i + 1, n
= s + x(j) * a(i, j)
s end do
= (b(i) - s) / a(i, i)
x(i) end do
print *, 'x = '
do i = 1,n
print *, x(i)
end do
! print *, 'a = '
! do i = 1,n
! print *, a(i, :)
! end do
!
! print *, 'b = '
! do i = 1,n
! print *, b(i)
! end do
end