関数double_diagonal_householder マニュアル

(The documentation of function double_diagonal_householder)

Last Update: 2022/2/2


◆機能・用途(Purpose)

行列にHouseholder変換を左右から繰り返し掛けることによって 上三角2重対角行列に変換する。
Convert a matrix to an upper-triangular double-diagonal matrix by repeatedly applying Householder conversions from left and right.


◆形式(Format)

#include <matrix/householder.h>
inline struct matrix double_diagonal_householder(struct matrix G)


◆引数(Arguments)

G 元々の行列。縦長または正方行列でなければならない。
The original matrix, which must be portait or square.


◆戻り値(Return value)

引数Gで与えた行列を\(\myvector{G}\)(サイズ:\(N\times M\))、 \(\myvector{G}\)を上三角2重対角行列に変換するために 左から掛けたHouseholder変換の積を\(\myvector{H_l}\)、 右から掛けたHouseholder変換の積を\(\myvector{H_r}\)として、 拡大行列 \[\begin{equation} \myvector{G_L}\equiv \begin{pmatrix} \myvector{H_l}\myvector{G}\myvector{H_r} & \myvector{H_l} \\ \myvector{H_r} & \myvector{0} \end{pmatrix} \label{eq.GL} \end{equation}\] を戻り値として返す。 \(\myvector{H_l}\)のサイズは\(N\times N\)、 \(\myvector{H_r}\)のサイズは\(M\times M\)であり、 \(\myvector{G_L}\)のサイズは\((N+M)\times(N+M)\)となる。
Let \(\myvector{G}\) be the original matrix (size: \(N\times M\)) given by argument G, and \(\myvector{H_l}\) and \(\myvector{H_r}\) be the products of Householder conversions applied from the left and right hand sides, respectively, to convert \(\myvector{G}\) to an upper-triangular double-diagonal matrix. Then the return value is an extended matrix \(\myvector{G_L}\) (eq. \ref{eq.GL}). The matrix sizes of \(\myvector{H_l}\), \(\myvector{H_r}\), and \(\myvector{G_L}\) are \(N\times N\), \(M\times M\), and \((N+M)\times(N+M)\), respectively.


◆使用例(Example)

struct matrix G;
struct matrix Gh=double_diagonal_householder(G);