(The documentation of function matrix_determinant_givenLU)
Last Update: 2021/12/6
◆機能・用途(Purpose)
正方行列の行列式を計算する。
行列そのものではなく、そのLU分解の結果を用いるバージョン。
Calculate the determinant of a square matrix
given the LU decomposition instead of the matrix itself.
◆形式(Format)
#include <matrix/inverse.h>
inline double matrix_determinant_givenLU(const struct LU A_LU)
◆引数(Arguments)
A_LU
行列式を計算したい正方行列\(\myvector{A}\)のLU分解。
The LU decomposition of a square matrix \(\myvector{A}\)
for which the determinant is to be calculated.
◆戻り値(Return value)
行列\(\myvector{A}\)の行列式。
The determinant of the matrix \(\myvector{A}\).
◆使用例(Example)
struct matrix A;
struct LU A_LU=LU_decomposition(A);
double detA=matrix_determinant_givenLU(A_LU);
◆計算方法(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分解の結果を複数回にわたり利用したい場合がある。
毎回LU分解を計算するのは効率が悪いので、
LU分解を行う部分と、その結果を用いて行列式を計算する部分とを別々の関数に分離した。
LU分解を再利用しない場合には
行列から直接行列式を計算する関数matrix_determinant (matrix/inverse.h)を利用できる。
なお関数matrix_determinantの内部でこの関数が用いられている。
In some cases, the LU decomposition of a matrix is needed more than twice;
for example, in cases where both the determinant of the matrix
and the solution of a simultaneous linear equation are needed.
It is not efficient to conduct the LU decomposition twice.
To avoid such inefficiency,
the procedure of calculating a determinant is decomposed to separate functions;
the LU decomposition part, and
the determinant computation part using the LU decomposition as the input.
In cases where the LU decomposition will not be reused,
a function matrix_determinant (matrix/inverse.h) is available,
which directly calculates the determinant given a matrix as the input.
Note that the function matrix_determinant internally calls
this function.