2023-10-30 21:07:43 -04:00
|
|
|
#+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.
|
2023-11-06 10:52:40 -05:00
|
|
|
4. $U$ is (quite obviously) in upper-triangular form.
|
2023-10-30 21:07:43 -04:00
|
|
|
|
|
|
|
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.
|