diff options
Diffstat (limited to 'include/qr.hpp')
| -rw-r--r-- | include/qr.hpp | 39 |
1 files changed, 0 insertions, 39 deletions
diff --git a/include/qr.hpp b/include/qr.hpp deleted file mode 100644 index c9e1638..0000000 --- a/include/qr.hpp +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once - -#include "matrix.hpp" -#include "vector.hpp" - -namespace linalg { - -struct QRResult { - Matrix Q; - Matrix R; -}; - -// Classical Gram-Schmidt. -// Mathematically natural but numerically fragile: orthogonality of Q -// degrades rapidly on ill-conditioned inputs. -// Provided for comparison — prefer modified_gs or householder in practice. -// -// Throws DimensionMismatchError if rows < cols. -// Throws SingularMatrixError if a column is (nearly) linearly dependent. -QRResult qr_classical_gs(const Matrix& A, double zero_tolerance = 1e-14); - -// Modified Gram-Schmidt. -// Subtracts each projection immediately on the running vector rather than -// on the original column. Algebraically equivalent to classical GS but -// numerically much better — round-off stays local instead of accumulating. -// -// Same exceptions as classical GS. -QRResult qr_modified_gs(const Matrix& A, double zero_tolerance = 1e-14); - -// Householder QR. -// Applies a sequence of orthogonal reflections to zero out below-diagonal -// entries column by column. Backward-stable and the standard choice for -// dense QR. Works correctly on rank-deficient matrices (zero pivots -// produce zero diagonal entries in R without throwing). -// -// Throws DimensionMismatchError if rows < cols. -QRResult qr_householder(const Matrix& A); - -} // namespace linalg |