Linear Algebra and Its Applications, exercise 1.4.9

Exercise 1.4.9. Given the following two examples of FORTRAN code

   DO 10 I=1,N
   DO 10 J=1,N
10 B(I) = B(I) + A(I,J)*X(J)

and

   DO 10 J=1,N
   DO 10 I=1,N
10 B(I) = B(I) + A(I,J)*X(J)

Do they multiply Ax by rows and columns?

Answer: The first code sample computes

b_i = \sum_{j=1}^{j=n} a_{ij} x_j

for a given i in the inner loop. Since i is constant for a_{ij} in the inner loop, the sum is for all entries in row i of A. The outer loop iterates over i, so the multiplication is done by rows.

The second code sample holds j constant in the inner loop and iterates over the entries of A in column j. The outer loop iterates over j, so the second sample is multiplying by columns.

NOTE: This continues a series of posts containing worked out exercises from the (out of print) book Linear Algebra and Its Applications, Third Edition by Gilbert Strang.

If you find these posts useful I encourage you to also check out the more current Linear Algebra and Its Applications, Fourth Edition, Dr Strang’s introductory textbook Introduction to Linear Algebra, Fourth Edition and the accompanying free online course, and Dr Strang’s other books.

This entry was posted in linear algebra. Bookmark the permalink.

Leave a comment