linear_algebra

This library provides predicates for numeric vectors and matrices, including vector construction and scaling, general vector norms, matrix construction and transformation, matrix-matrix products, row Gram matrices and Gram-centering helpers, offset diagonal helpers, triangular-part extraction, diagonal shifts, lower- and upper-triangular matrix solves, direct row and column lookup, tolerance-aware vector normalization and sign stabilization, generic dense square-system solves, determinants, matrix inversion, thin QR decomposition, QR-backed least-squares solving, tolerance-aware rank estimation, real symmetric eigendecomposition, pseudo-inverse and null-space helpers, covariance helpers, and Cholesky-based linear solves.

Vectors are represented as lists of numbers. Matrices are represented as lists of row lists, where each row is a numeric vector.

Predicates that index into vectors or matrices use one-based indices. Matrix access predicates use one-based row and column indices.

Square-system predicates include solve_linear_system/3, solve_linear_systems/3, determinant/2, and inverse_matrix/2. Rectangular-system predicates include qr_decomposition/3 and least_squares/3, pseudo_inverse/2-3, and null_space/2-3. Row-matrix structural predicates include gram_matrix/2, matrix_row_means/2, matrix_column_means/2, center_gram_matrix/4, and center_gram_vector/4. Diagonal and triangular helpers include matrix_diagonal/2-3, diagonal_matrix/2-4, upper_triangular_part/2-3, and lower_triangular_part/2-3. Norm helpers include vector_norm/3 and frobenius_norm/2. Real symmetric spectral predicates include symmetric_eigen/3-5. Tolerance-sensitive numerical predicates include normalize_vector/2-3, first_significant_component/2-3, stabilize_vector_sign/2-3, matrix_rank/2-3, symmetric_eigen/3-5, pseudo_inverse/2-3, and null_space/2-3.

The symmetric_eigen/5 predicate can be used when callers need to control the power-iteration budget explicitly instead of relying on the default iteration bound.

API documentation

Open the ../../apis/library_index.html#linear_algebra link in a web browser.

Loading

To load all entities in this library, load the loader.lgt file:

| ?- logtalk_load(linear_algebra(loader)).

Testing

To test this library predicates, load the tester.lgt file:

| ?- logtalk_load(linear_algebra(tester)).