関数matrix_determinant マニュアル

(The documentation of function matrix_determinant)

Last Update: 2021/12/6


◆機能・用途(Purpose)

正方行列の行列式を計算する。
Calculate the determinant of a square matrix.


◆形式(Format)

#include <matrix/inverse.h>
inline double matrix_determinant(const struct matrix A)


◆引数(Arguments)

A 行列式を計算したい正方行列。
A square matrix for which the determinant is to be calculated.


◆戻り値(Return value)

行列\(\myvector{A}\)の行列式。
The determinant of the matrix \(\myvector{A}\).


◆使用例(Example)

struct matrix A;
double detA=matrix_determinant(A);


◆計算方法(Computation method)

\(\myvector{A}\)をLU分解して得られる行列\(\myvector{U}\)の対角成分の積に 置換回数に応じた符号を掛ける。
The product of the diagonal components of a matrix \(\myvector{U}\) obtained by the LU decomposition of \(\myvector{A}\), multiplied with the sign given by the number of replacements in the decomposition.


◆補足(Additional notes)

この関数の中で実際にやっていることは
  1. 関数LU_decomposition (matrix/inverse.h)を用いて \(\myvector{A}\)をLU分解する、
  2. その結果を関数matrix_determinant_givenLU (matrix/inverse.h)に入力して 行列式を計算する、
という2つの処理である。すなわち
struct matrix A;
struct LU A_LU=LU_decomposition(A);
double detA=matrix_determinant_givenLU(A_LU);
と書いてもこの関数を用いて行列式を計算したのと全く同じ結果が得られる。 LU分解を利用する計算を複数行う場合にはこの書き方をする方が LU分解を複数回行わずに済む分だけ効率が良い。
Within this function, the following two procedures are conducted:
  1. LU decomposition of \(\myvector{A}\) using the function LU_decomposition (matrix/inverse.h), and
  2. calculation of the determinant using the LU decomposition result as the input, through the function matrix_determinant_givenLU (matrix/inverse.h).
Therefore, writing the following code will results in exactly the same value as what is obtained by this function:
struct matrix A;
struct LU A_LU=LU_decomposition(A);
double detA=matrix_determinant_givenLU(A_LU);
When another calculation using the LU decomposition will be needed, the coding as above would be more efficient, since the LU decomposition is needed only once.