関数cut_diagonal_matrix マニュアル

(The documentation of function cut_diagonal_matrix)

Last Update: 2021/12/6


◆機能・用途(Purpose)

対角行列の一部を切り出す。
Extract a part of a diagonal matrix.


◆形式(Format)

#include <matrix/operation.h>
inline struct diagonal_matrix cut_diagonal_matrix
(const struct diagonal_matrix A,const int rowmin,const int rowmax,
 const int columnmin,const int columnmax)


◆引数(Arguments)

A 切り出す前のもともとの対角行列。
The original diagonal matrix before the extraction.
rowmin 切り出す行番号範囲の下限。 1
The lower limit of the row index range to extract. 1
rowmax 切り出す行番号範囲の上限。 1
The upper limit of the row index range to extract. 1
columnmin 切り出す列番号範囲の下限。rowminと同じでないとエラーになる。 1
The lower limit of the column index range to extract. If this value is not equal to rowmin, the program finishes as an error. 1
columnmax 切り出す列番号範囲の上限。 1
The upper limit of the column index range to extract. 1

  1. 行番号、列番号は1を開始値とする。
    The row and column indices are defined to start from 1.


◆戻り値(Return value)

Aの(rowmin, columnmin)成分から(rowmax, columnmax)成分までの範囲を切り出した 部分行列を表す構造体。 rowminとcolumnminが等しいという条件をつけているので部分行列も対角行列になる。 戻り値のメンバの値は以下のようになる。
A structure which represents a partial matrix of A from (rowmin, columnmin) to (rowmax, columnmax) components. As rowmin and columnmin are required to be equal, the partial matrix is also a diagonal matrix. The values of members of the return value are as follows.

戻り値のメンバ
Member of the return value

Value
rowmax rowmax\(-\)rowmin\(+1\)
columnmax columnmax\(-\)columnmin\(+1\)
size rowmax\(-\)rowmin\(+1\)と columnmax\(-\)columnmin\(+1\)のうちの小さい方。
Smaller one of rowmax\(-\)rowmin\(+1\) and columnmax\(-\)columnmin\(+1\).
rank 戻り値のメンバsizeの値とA.rankのうちの小さい方。
Smaller one of member size of the return value and A.rank.
各\(i\)に対するmain[i]
main[i] for each \(i\)
A.main[rowmin-1+i]
allocated ’y’


◆使用例(Example)

struct diagonal_matrix A;
struct diagonal_matrix B=cut_diagonal_matrix(A,2,4,2,5);

この例において例えば \[\begin{equation} \myvector{A}= \begin{pmatrix} 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 2 & 0 & 0 & 0 & 0 \\ 0 & 0 & 3 & 0 & 0 & 0 \\ 0 & 0 & 0 & 4 & 0 & 0 \\ 0 & 0 & 0 & 0 & 5 & 0 \\ 0 & 0 & 0 & 0 & 0 & 6 \\ 0 & 0 & 0 & 0 & 0 & 0 \end{pmatrix} \label{eq.A} \end{equation}\] とすると、この第2行から第4行まで、第2列から第5列までを抜き出すのであるから \[\begin{equation} \myvector{B}= \begin{pmatrix} 2 & 0 & 0 & 0 \\ 0 & 3 & 0 & 0 \\ 0 & 0 & 4 & 0 \end{pmatrix} \label{eq.B} \end{equation}\] となる。
In the example above, assume that A is given by eq. (\ref{eq.A}). Then the matrix B, obtained by extracting from 2nd to 4th rows and from 2nd to 5th columns of A, reduces to eq. (\ref{eq.B}).