Matrix Calculations
Matrix Diagonal Sum
Indexed Loop
The same index can select matching row and column positions on a matrix diagonal.
Program
Play the program to choose how many diagonal cells are included in the total.
matrix_diagonal_sum.f90
program matrix_diagonal_sum_demo
implicit none
integer :: matrix(3, 3)
integer :: diagonal_count
integer :: i
integer :: total
matrix = reshape([1, 4, 7, 2, 5, 8, 3, 6, 9], [3, 3])
diagonal_count =
total = 0
do i = 1, diagonal_count
total = total + matrix(i, i)
end do
print '(I0, 1X, I0)', diagonal_count, total
end program matrix_diagonal_sum_demo
program matrix_diagonal_sum_demo
implicit none
integer :: matrix(3, 3)
integer :: diagonal_count
integer :: i
integer :: total
matrix = reshape([1, 4, 7, 2, 5, 8, 3, 6, 9], [3, 3])
diagonal_count =
total = 0
do i = 1, diagonal_count
total = total + matrix(i, i)
end do
print '(I0, 1X, I0)', diagonal_count, total
end program matrix_diagonal_sum_demo
program matrix_diagonal_sum_demo
implicit none
integer :: matrix(3, 3)
integer :: diagonal_count
integer :: i
integer :: total
matrix = reshape([1, 4, 7, 2, 5, 8, 3, 6, 9], [3, 3])
diagonal_count =
total = 0
do i = 1, diagonal_count
total = total + matrix(i, i)
end do
print '(I0, 1X, I0)', diagonal_count, total
end program matrix_diagonal_sum_demo
two indexes
`matrix(i, i)` reads one row and one column with the same index.
diagonal
The main diagonal contains positions `(1,1)`, `(2,2)`, and `(3,3)`.
loop bound
Changing the loop bound changes how much of the diagonal is included.