#+TITLE: Homework 5
#+AUTHOR: Elizabeth Hunt
#+LATEX_HEADER: \notindent \notag  \usepackage{amsmath} \usepackage[a4paper,margin=1in,portrait]{geometry}
#+LATEX: \setlength\parindent{0pt}
#+OPTIONS: toc:nil

* Question One
See LIZFCM \rightarrow Matrix Routines \rightarrow ~lu decomp~ & ~bsubst~.

The test ~UTEST(matrix, lu_decomp)~ is a unit test for the ~lu_decomp~ routine,
and ~UTEST(matrix, bsubst)~ verifies back substitution on an upper triangular
3 \times 3 matrix with a known solution that can be verified manually.

Both can be found in ~tests/matrix.t.c~.

* Question Two
Unless the following are met, the resulting solution will be garbage.

1. The matrix $U$ must be not be singular.
2. $U$ must be square (or it will fail the ~assert~).
3. The system created by $Ux = b$ must be consistent.
4. $U$ is (quite obviously) in upper-triangular form.

Thus, the actual calculation performing the $LU$ decomposition
(in ~lu_decomp~) does a sanity
check for 1-3 will fail an assert, should a point along the diagonal (pivot) be
zero, or the matrix be non-factorable.

* Question Three
See LIZFCM \rightarrow Matrix Routines \rightarrow ~fsubst~.

~UTEST(matrix, fsubst)~ verifies forward substitution on a lower triangular 3 \times 3
matrix with a known solution that can be verified manually.

* Question Four

See LIZFCM \rightarrow Matrix Routines \rightarrow ~gaussian_elimination~ and ~solve_gaussian_elimination~.

* Question Five
See LIZFCM \rightarrow Matrix Routines \rightarrow ~m_dot_v~, and the ~UTEST(matrix, m_dot_v)~ in
~tests/matrix.t.c~.

* Question Six
See ~UTEST(matrix, solve_gaussian_elimination)~ in ~tests/matrix.t.c~, which generates a diagonally dominant 10 \times 10 matrix
and shows that the solution is consistent with the initial matrix, according to the steps given. Then,
we do a dot product between each row of the diagonally dominant matrix and the solution vector to ensure
it is near equivalent to the input vector.

* Question Seven
See ~UTEST(matrix, solve_matrix_lu_bsubst)~ which does the same test in Question Six with the solution according to
~solve_matrix_lu_bsubst~ as shown in the Software Manual.

* Question Eight
No, since the time complexity for Gaussian Elimination is always less than that of the LU factorization solution by $O(n^2)$ operations
(in LU factorization we perform both backwards and forwards substitutions proceeding the LU decomp, in Gaussian Elimination we only need
back substitution).

* Question Nine, Ten
See LIZFCM Software manual and shared library in ~dist~ after compiling.
