\(\newcommand{\W}[1]{ \; #1 \; }\) \(\newcommand{\R}[1]{ {\rm #1} }\) \(\newcommand{\B}[1]{ {\bf #1} }\) \(\newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} }\) \(\newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} }\) \(\newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial {#2}^{#1}} }\) \(\newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }\)
det_by_minor_c¶
View page sourceCompute Determinant using Expansion by Minors¶
Syntax¶
d = det_by_minor
( a , n )
Purpose¶
returns the determinant of the matrix \(A\) using expansion by minors. The elements of the \(n \times n\) minor \(M\) of the matrix \(A\) are defined, for \(i = 0 , \ldots , n-1\) and \(j = 0 , \ldots , n-1\), by
a¶
The argument a has prototype
const double
* a
and is a vector with size \(m * m\). The elements of the \(m \times m\) matrix \(A\) are defined, for \(i = 0 , \ldots , m-1\) and \(j = 0 , \ldots , m-1\), by
m¶
The argument m has prototype
size_t
m
and is the number of rows (and columns) in the square matrix \(A\).
Source Code¶
double det_by_minor(double* a, size_t m)
{ size_t *r, *c, i;
double value;
r = (size_t*) malloc( (m+1) * sizeof(size_t) );
c = (size_t*) malloc( (m+1) * sizeof(size_t) );
assert(m <= 100);
for(i = 0; i < m; i++)
{ r[i] = i+1;
c[i] = i+1;
}
r[m] = 0;
c[m] = 0;
value = det_of_minor(a, m, m, r, c);
free(r);
free(c);
return value;
}