\(\newcommand{\B}[1]{ {\bf #1} }\) \(\newcommand{\R}[1]{ {\rm #1} }\)
cpp_det_of_minor¶
View page sourceC++ Determinant of a Minor¶
Syntax¶
# include <cmpad/algo/det_of_minor.hpp>cmpad::det_of_minor ( a , n , m , r , c )Prototype¶
template <class Vector>
typename Vector::value_type det_of_minor(
const Vector& a ,
size_t n ,
size_t m ,
cmpad::vector<size_t>& r ,
cmpad::vector<size_t>& c )
{ assert( a.size() == n * n );
assert( r.size() == n + 1 );
assert( c.size() == n + 1 );
Purpose¶
This template function computes the determinant of a minor of the matrix \(A\) using expansion by minors. It is for example and testing purposes only. Expansion by minors is chosen as an example because it uses a lot of floating point operations yet does not require much source code. This is not an efficient method for computing a determinant; for example, using an LU factorization would be faster.
Minor¶
The elements of the \(m \times m\) minor \(M\) of the matrix \(A\) are defined, for \(i = 0 , \ldots , m-1\) and \(j = 0 , \ldots , m-1\), by
where the function \(R(i)\) is defined by the argument r and \(C(j)\) is defined by the argument c .
Determinant of A¶
If the following conditions hold, the minor is the
entire matrix \(A\) and hence det_of_minor
will return the determinant of \(A\):
\(m = n\).
for \(i = 0 , \ldots , n-1\), \(r[i] = i+1\), and \(r[n] = 0\).
for \(j = 0 , \ldots , n-1\), \(c[j] = j+1\), and \(c[n] = 0\).
Vector¶
This type satisfies the conditions for a fun_obj Vector .
a¶
The elements of the \(n \times n\) matrix \(A\) are defined, for \(i = 0 , \ldots , n-1\) and \(j = 0 , \ldots , n-1\), by
n¶
This is the number of rows (and columns) in the square matrix \(A\).
m¶
This is the number of rows (and columns) in the square minor \(M\).
r¶
This defines the function \(R(i)\) which specifies the rows of the minor \(M\). To be specific, the function \(R(i)\) for \(i = 1, \ldots , m-1\) is defined by
All the elements of r have value less than or equal n ;
\(R(i) < n\) and \(r[ R(m-1) ] = n\) .
The elements of vector r are modified during the computation,
and restored to their original value before the return from det_of_minor .
c¶
This defines the function \(C(i)\) which specifies the columns of the minor \(M\). To be specific, the function \(C(i)\) for \(j = 1, \ldots , m-1\) is defined by
All the elements of c must have value less than or equal n ;
\(C(j) < n\) and \(c[ C(m-1) ] = n\) .
The elements of vector c are modified during the computation,
and restored to their original value before the return from det_of_minor .
d¶
The return value d is equal to the determinant of the minor \(M\) and has the same type as the elements of a.
Name |
Title |
|---|---|
det_of_minor.hpp |
|
xam_det_of_minor.cpp |
Example¶
xam_det_of_minor.cpp
contains an example and test of det_of_minor .