module Linear_algebra:sig
..end
Matrices are represented via float array array
, in row-major order.
module Vec:sig
..end
module Mat:sig
..end
val qr : ?in_place:bool ->
Mat.t -> Mat.t * Mat.t
qr A
returns the QR-decomposition of A
as a pair (Q,R). A
must have
at least as many rows as columns and have full rank.
If in_place
(default: false
) is true
, then A
is overwritten with Q
.
val triu_solve : Mat.t ->
Vec.t -> Vec.t Core.Std.Or_error.t
triu_solve R b
solves R x = b where R
is an m x m upper-triangular matrix
and b
is an m x 1 column vector.mul A B
computes the matrix product A * B
. If transa
(default: false
)
is true
, then we compute A' * B where A' denotes the transpose of A.val mul_mv : ?transa:bool ->
Mat.t -> Vec.t -> Vec.t
mul_mv A x
computes the product A * x
(where M
is a matrix and x
is
a column vector).val ols : ?in_place:bool ->
Mat.t ->
Vec.t -> Vec.t Core.Std.Or_error.t
ols A b
computes the ordinary least-squares solution to A x = b.
A
must have at least as many rows as columns and have full rank.
This can be used to compute solutions to non-singular square systems, but is somewhat sub-optimal for that purpose.
The algorithm is to factor A = Q * R and solve R x = Q' b where Q' denotes the transpose of Q.
If in_place
(default: false
) is true
, then A
will be destroyed.