ARCS6 AR6-REV.24062600
読み取り中…
検索中…
一致する文字列を見つけられません
ARCS::ArcsMat< M, N, T > クラステンプレート

ARCS-Matrix 行列演算クラス [詳解]

#include <ARCS6/lib/ArcsMatrix.hh>

公開メンバ関数

constexpr ArcsMat (void)
 コンストラクタ
 
template<typename R >
constexpr ArcsMat (const R InitValue)
 コンストラクタ(任意初期値版)
 
template<typename R >
constexpr ArcsMat (const std::initializer_list< R > InitList)
 コンストラクタ(初期化リスト版)
 
constexpr ArcsMat (const ArcsMat< M, N, T > &right)
 コピーコンストラクタ
 
template<size_t P, size_t Q, typename R = double>
constexpr ArcsMat (const ArcsMat< P, Q, R > &right)
 コピーコンストラクタ(サイズもしくは型が違う行列の場合の定義)
 
constexpr ArcsMat (ArcsMat< M, N, T > &&right)
 ムーブコンストラクタ
 
template<size_t P, size_t Q, typename R = double>
constexpr ArcsMat (ArcsMat< M, N, T > &&right)
 ムーブコンストラクタ(サイズと型が違う行列の場合, エラー検出用の定義)
 
constexpr T operator[] (const size_t m) const
 縦ベクトル添字演算子(縦ベクトルのm番目の要素の値を返す。x = A(m,1)と同じ意味) 備考:ArcsMatは縦ベクトル優先なので、横ベクトル添字演算子は無い。
 
constexpr T & operator[] (const size_t m)
 縦ベクトル添字演算子(縦ベクトルのm番目の要素に値を設定する。A(m,1) = xと同じ意味) 備考:ArcsMatは縦ベクトル優先なので、横ベクトル添字演算子は無い。
 
constexpr T operator() (const size_t m, const size_t n) const
 行列括弧演算子(行列の(m,n)要素の値を返す。サイズチェック無し版)
 
constexpr T & operator() (const size_t m, const size_t n)
 行列括弧演算子(行列の(m,n)要素に値を設定する。サイズチェック無し版)
 
constexpr T operator() (const size_t m, const size_t n, const bool chk) const
 行列括弧演算子(行列の(m,n)要素の値を返す。サイズチェック可能版)
 
constexpr T & operator() (const size_t m, const size_t n, const bool chk)
 行列括弧演算子(行列の(m,n)要素に値を設定する。サイズチェック可能版)
 
constexpr ArcsMat< M, N, T > & operator= (const ArcsMat< M, N, T > &right)
 行列代入演算子(サイズと型が同じ同士の行列の場合)
 
template<size_t P, size_t Q, typename R = double>
constexpr ArcsMat< M, N, T > & operator= (const ArcsMat< P, Q, R > &right)
 行列代入演算子(サイズと型が違う行列の場合, エラー検出用の定義)
 
constexpr ArcsMat< M, N, T > operator+ (void) const
 単項プラス演算子
 
constexpr ArcsMat< M, N, T > operator- (void) const
 単項マイナス演算子
 
template<size_t P, size_t Q, typename R = double>
constexpr ArcsMat< M, N, T > operator+ (const ArcsMat< P, Q, R > &right) const
 行列加算演算子(行列=行列+行列の場合)
 
template<typename R >
constexpr ArcsMat< M, N, T > operator+ (const R &right) const
 行列加算演算子(行列=行列+スカラーの場合)
 
template<size_t P, size_t Q, typename R = double>
constexpr ArcsMat< M, N, T > operator- (const ArcsMat< P, Q, R > &right) const
 行列減算演算子(行列=行列-行列の場合)
 
template<typename R >
constexpr ArcsMat< M, N, T > operator- (const R &right) const
 行列減算演算子(行列=行列-スカラーの場合)
 
template<size_t P, size_t Q, typename R = double>
constexpr ArcsMat< M, Q, T > operator* (const ArcsMat< P, Q, R > &right) const
 行列乗算演算子(行列=行列*行列の場合)
 
template<typename R >
constexpr ArcsMat< M, N, T > operator* (const R &right) const
 行列乗算演算子(行列=行列*スカラーの場合)
 
template<size_t P, size_t Q, typename R = double>
constexpr void operator/ (const ArcsMat< P, Q, R > &right) const
 行列除算演算子(行列=行列/行列の場合)
 
template<typename R >
constexpr ArcsMat< M, N, T > operator/ (const R &right) const
 行列除算演算子(行列=行列/スカラーの場合)
 
template<typename R >
constexpr ArcsMat< M, N, T > & operator+= (const R &right)
 行列加算代入演算子(行列=行列+行列、行列=行列+スカラーの場合)
 
template<typename R >
constexpr ArcsMat< M, N, T > & operator-= (const R &right)
 行列減算代入演算子(行列=行列-行列、行列=行列-スカラーの場合)
 
template<typename R >
constexpr ArcsMat< M, N, T > & operator*= (const R &right)
 行列乗算代入演算子(行列=行列*行列、行列=行列*スカラーの場合)
 
template<typename R >
constexpr ArcsMat< M, N, T > & operator/= (const R &right)
 行列除算代入演算子(行列=行列/スカラーの場合)
 
constexpr ArcsMat< M, N, T > operator^ (const int &right) const
 行列べき乗演算子(正方行列のべき乗)
 
template<size_t P, size_t Q, typename R = double>
constexpr ArcsMat< M, N, T > operator& (const ArcsMat< P, Q, R > &right) const
 行列アダマール積演算子(行列の要素ごとの乗算)
 
template<size_t P, size_t Q, typename R = double>
constexpr ArcsMat< M, N, T > operator% (const ArcsMat< P, Q, R > &right) const
 行列アダマール除算演算子 (行列の要素ごとの除算)
 
constexpr void DispAddress (void) const
 行列要素の各メモリアドレスを表示する関数
 
constexpr void Disp (const std::string &format) const
 行列の要素を表示
 
constexpr void Disp (void) const
 行列の要素を表示(表示形式自動版)
 
constexpr void DispSize (void) const
 行列のサイズを表示
 
constexpr size_t GetHeight (void) const
 行列の高さ(行数)を返す関数
 
constexpr size_t GetWidth (void) const
 行列の幅(列数)を返す関数
 
constexpr size_t GetNumOfNonZero (const T eps=ArcsMat< M, N, T >::EPSILON) const
 非ゼロ要素の数を返す関数
 
template<typename T1 , typename... T2>
constexpr void Set (const T1 &u1, const T2 &... u2)
 行列要素に値を設定する関数
 
constexpr void Set ()
 
template<typename T1 , typename... T2>
constexpr void Get (T1 &u1, T2 &... u2)
 行列要素から値を読み込む関数
 
constexpr void Get ()
 
template<typename R >
constexpr void FillAll (const R &u)
 すべての要素を指定した値で埋める関数
 
constexpr void FillAllZero (void)
 すべての要素を指定したゼロで埋める関数
 
template<size_t P, typename R = double>
constexpr void LoadArray (const std::array< R, P > &Array)
 1次元std::array配列を縦ベクトルとして読み込む関数
 
template<size_t P, typename R = double>
constexpr void StoreArray (std::array< R, P > &Array) const
 縦ベクトルを1次元std::array配列に書き込む関数
 
template<size_t P, size_t Q, typename R = double>
constexpr void LoadArray (const std::array< std::array< R, P >, Q > &Array)
 2次元std::array配列を行列として読み込む関数
 
template<size_t P, size_t Q, typename R = double>
constexpr void StoreArray (std::array< std::array< R, P >, Q > &Array) const
 行列を2次元std::array配列に書き込む関数
 
constexpr ArcsMatrix::MatStatus GetStatus (void) const
 行列の状態をそのまま返す関数
 
constexpr std::array< std::array< T, M >, N > GetData (void) const
 std:arrayの2次元配列データをそのまま返す関数
 
constexpr const std::array< std::array< T, M >, N > & ReadOnlyRef (void) const
 std:arrayの2次元配列データの読み込み専用の参照を返す関数
 
template<size_t P, size_t Q, typename R = double>
constexpr void GetVerticalVec (ArcsMat< P, Q, R > &v, const size_t m, const size_t n) const
 指定した先頭位置から縦ベクトルを抜き出して返す関数 (引数渡し版)
 
template<size_t P>
constexpr ArcsMat< P, 1, T > GetVerticalVec (const size_t m, const size_t n) const
 指定した先頭位置から縦ベクトルを抜き出して返す関数 (戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
constexpr void GetHorizontalVec (ArcsMat< P, Q, R > &w, const size_t m, const size_t n) const
 指定した先頭位置から横ベクトルを抜き出して返す関数 (引数渡し版)
 
template<size_t Q>
constexpr ArcsMat< 1, Q, T > GetHorizontalVec (const size_t m, const size_t n) const
 指定した先頭位置から横ベクトルを抜き出して返す関数 (戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
constexpr void SetVerticalVec (const ArcsMat< P, Q, R > &v, const size_t m, const size_t n)
 指定した先頭位置に縦ベクトルを埋め込む関数
 
template<size_t P, size_t Q, typename R = double>
constexpr void SetHorizontalVec (const ArcsMat< P, Q, R > &w, size_t m, size_t n)
 指定した先頭位置に横ベクトルを埋め込む関数
 
constexpr void Zeroing (const T eps=ArcsMat< M, N, T >::EPSILON)
 ゼロに近い要素を完全にゼロにする関数
 
constexpr void ZeroingTriLo (const T eps=ArcsMat< M, N, T >::EPSILON)
 下三角(主対角除く)に限定して、ゼロに近い要素を完全にゼロにする関数
 
constexpr ArcsMat< N, M, T > operator~ (void) const
 転置演算子
 

静的公開メンバ関数

static constexpr ArcsMat< M, N, T > zeros (void)
 m行n列の零行列を返す関数
 
static constexpr ArcsMat< M, N, T > ones (void)
 m行n列の要素がすべて1の行列を返す関数
 
static constexpr ArcsMat< M, N, T > eye (void)
 n行n列の単位行列を返す関数
 
static constexpr ArcsMat< M, N, T > ramp (void)
 単調増加の縦ベクトルを返す関数
 
template<size_t P, size_t Q, typename R = double>
static constexpr void getcolumn (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &y, const size_t n)
 指定した列から縦ベクトルとして抽出する関数 (引数渡し版)
 
static constexpr ArcsMat< M, 1, T > getcolumn (const ArcsMat< M, N, T > &U, const size_t n)
 指定した列から縦ベクトルとして抽出する関数 (戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void setcolumn (ArcsMat< M, N, T > &UY, const ArcsMat< P, Q, R > &u, const size_t n)
 指定した列を縦ベクトルで上書きする関数 (引数渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr ArcsMat< M, N, T > setcolumn (const ArcsMat< P, Q, R > &u, const size_t n, const ArcsMat< M, N, T > &U)
 指定した列を縦ベクトルで上書きする関数 (戻り値渡し版)
 
static constexpr void swapcolumn (ArcsMat< M, N, T > &UY, const size_t n1, const size_t n2)
 指定した列と列を入れ替える関数 (引数渡し版)
 
static constexpr ArcsMat< M, N, T > swapcolumn (const size_t n1, const size_t n2, const ArcsMat< M, N, T > &U)
 指定した列と列を入れ替える関数 (戻り値渡し版)
 
template<typename R = double>
static constexpr void fillcolumn (ArcsMat< M, N, T > &UY, const R a, const size_t n, const size_t m1, const size_t m2)
 n列目のm1行目からm2行目までを数値aで埋める関数 (m1 <= m2 であること) (引数渡し版)
 
template<typename R = double>
static constexpr ArcsMat< M, N, T > fillcolumn (const R a, const size_t n, const size_t m1, const size_t m2, const ArcsMat< M, N, T > &U)
 n列目のm1行目からm2行目までを数値aで埋める関数 (n1 <= n2 であること) (戻り値渡し版)
 
template<size_t P, size_t Q, typename R = size_t>
static constexpr ArcsMat< M, N, T > ordercolumn (const ArcsMat< M, N, T > &U, const ArcsMat< P, Q, R > &u)
 並び替え指定横ベクトルuが昇順になるように,行列Uの列を並び替える関数 (戻り値渡し版のみ)
 
template<size_t P, size_t Q, typename R = size_t>
static constexpr void ordercolumn_and_vec (ArcsMat< M, N, T > &UY, ArcsMat< P, Q, R > &uy)
 並び替え指定横ベクトルuが昇順になるように,行列Uの列と指定横ベクトルの両方を並び替える関数 (引数渡し版のみ)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void sumcolumn (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &y)
 各列の総和を計算して横ベクトルを出力する関数 (引数渡し版)
 
static constexpr ArcsMat< 1, N, T > sumcolumn (const ArcsMat< M, N, T > &U)
 各列の総和を計算して横ベクトルを出力する関数 (戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void getrow (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &y, const size_t m)
 指定した行から横ベクトルとして抽出する関数 (引数渡し版)
 
static constexpr ArcsMat< 1, N, T > getrow (const ArcsMat< M, N, T > &U, const size_t m)
 指定した行から横ベクトルとして抽出する関数 (戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void setrow (ArcsMat< M, N, T > &UY, const ArcsMat< P, Q, R > &u, const size_t m)
 指定した行を横ベクトルで上書きする関数 (引数渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr ArcsMat< M, N, T > setrow (const ArcsMat< P, Q, R > &u, const size_t m, const ArcsMat< M, N, T > &U)
 指定した行を横ベクトルで上書きする関数 (戻り値渡し版)
 
static constexpr void swaprow (ArcsMat< M, N, T > &UY, const size_t m1, const size_t m2)
 指定した行と行を入れ替える関数 (引数渡し版)
 
static constexpr ArcsMat< M, N, T > swaprow (const size_t m1, const size_t m2, const ArcsMat< M, N, T > &U)
 指定した行と行を入れ替える関数 (戻り値渡し版)
 
template<typename R = double>
static constexpr void fillrow (ArcsMat< M, N, T > &UY, const R a, const size_t m, const size_t n1, const size_t n2)
 m行目のn1列目からn2列目までを数値aで埋める関数 (n1 <= n2 であること) (引数渡し版)
 
template<typename R = double>
static constexpr ArcsMat< M, N, T > fillrow (const R a, const size_t m, const size_t n1, const size_t n2, const ArcsMat< M, N, T > &U)
 m行目のn1列目からn2列目までを数値aで埋める関数 (n1 <= n2 であること) (戻り値渡し版)
 
template<size_t P, size_t Q, typename R = size_t>
static constexpr ArcsMat< M, N, T > orderrow (const ArcsMat< M, N, T > &U, const ArcsMat< P, Q, R > &u)
 並び替え指定縦ベクトルuが昇順になるように,行列Uの行を並び替える関数 (戻り値渡し版のみ)
 
template<size_t P, size_t Q, typename R = size_t>
static constexpr void orderrow_and_vec (ArcsMat< M, N, T > &UY, ArcsMat< P, Q, R > &uy)
 並び替え指定縦ベクトルuが昇順になるように,行列Uの行と指定縦ベクトルの両方を並び替える関数 (引数渡し版のみ)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void sumrow (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &y)
 各行の総和を計算して縦ベクトルを出力する関数 (引数渡し版)
 
static constexpr ArcsMat< M, 1, T > sumrow (const ArcsMat< M, N, T > &U)
 各行の総和を計算して縦ベクトルを出力する関数 (戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void getvvector (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &y, const size_t m, const size_t n)
 指定位置から縦ベクトルを抽出する関数 (引数渡し版)
 
template<size_t P = M>
static constexpr ArcsMat< P, 1, T > getvvector (const ArcsMat< M, N, T > &U, const size_t m, const size_t n)
 指定位置から縦ベクトルを抽出する関数 (戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void setvvector (ArcsMat< M, N, T > &UY, const ArcsMat< P, Q, R > &u, const size_t m, const size_t n)
 指定位置に縦ベクトルで上書きする関数 (引数渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr ArcsMat< M, N, T > setvvector (const ArcsMat< P, Q, R > &u, const size_t m, const size_t n, const ArcsMat< M, N, T > &U)
 指定位置に縦ベクトルで上書きする関数 (戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void gethvector (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &y, const size_t m, const size_t n)
 指定位置から横ベクトルを抽出する関数 (引数渡し版)
 
template<size_t Q>
static constexpr ArcsMat< 1, Q, T > gethvector (const ArcsMat< M, N, T > &U, const size_t m, const size_t n)
 指定位置から横ベクトルを抽出する関数 (戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void sethvector (ArcsMat< M, N, T > &UY, const ArcsMat< P, Q, R > &u, const size_t m, const size_t n)
 指定位置に横ベクトルで上書きする関数 (引数渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr ArcsMat< M, N, T > sethvector (const ArcsMat< P, Q, R > &u, const size_t m, const size_t n, const ArcsMat< M, N, T > &U)
 指定位置に横ベクトルで上書きする関数 (戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void getsubmatrix (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y, const size_t m, const size_t n)
 行列から指定位置の小行列を抽出する関数 (引数渡し版)
 
template<size_t P, size_t Q>
static constexpr ArcsMat< P, Q, T > getsubmatrix (const ArcsMat< M, N, T > &U, const size_t m, const size_t n)
 行列から指定位置の小行列を抽出する関数 (戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void setsubmatrix (ArcsMat< M, N, T > &UY, const ArcsMat< P, Q, R > &U, const size_t m, const size_t n)
 小行列を行列の指定位置に上書きする関数 (引数渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr ArcsMat< M, N, T > setsubmatrix (const ArcsMat< P, Q, R > &Us, const size_t m, const size_t n, const ArcsMat< M, N, T > &U)
 小行列を行列の指定位置に上書きする関数 (戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void copymatrix (const ArcsMat< M, N, T > &U, const size_t m1, const size_t m2, const size_t n1, const size_t n2, ArcsMat< P, Q, R > &Y, const size_t my, const size_t ny)
 行列Uから別の行列Yへ位置とサイズを指定してコピーする関数(引数渡し版のみ) 等価なMATLABコード: Y(my:my+(m2-m1), ny:ny+(n2-n1)) = U(m1:m2, n1:n2)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void shiftup (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y, const size_t m=1)
 行列の各要素を上にm行分シフトする関数(下段の行はゼロになる)(引数渡し版)
 
static constexpr ArcsMat< M, N, T > shiftup (const ArcsMat< M, N, T > &U, const size_t m=1)
 行列の各要素を上にm行分シフトする関数(下段の行はゼロになる)(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void shiftdown (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y, const size_t m=1)
 行列の各要素を下にm行分シフトする関数(上段の行はゼロになる)(引数渡し版)
 
static constexpr ArcsMat< M, N, T > shiftdown (const ArcsMat< M, N, T > &U, const size_t m=1)
 行列の各要素を下にm行分シフトする関数(上段の行はゼロになる)(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void shiftleft (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y, const size_t n=1)
 行列の各要素を左にn列分シフトする関数(右段の列はゼロになる)(引数渡し版)
 
static constexpr ArcsMat< M, N, T > shiftleft (const ArcsMat< M, N, T > &U, const size_t n=1)
 行列の各要素を左にn列分シフトする関数(右段の列はゼロになる)(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void shiftright (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y, const size_t n=1)
 行列の各要素を右にn列分シフトする関数(左段の列はゼロになる)(引数渡し版)
 
static constexpr ArcsMat< M, N, T > shiftright (const ArcsMat< M, N, T > &U, const size_t n=1)
 行列の各要素を右にn列分シフトする関数(左段の列はゼロになる)(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double>
static constexpr void concatv (const ArcsMat< M, N, T > &U1, const ArcsMat< P, Q, R > &U2, ArcsMat< D, E, F > &Y)
 行列を縦に連結する関数(引数渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr ArcsMat< M+P, N, T > concatv (const ArcsMat< M, N, T > &U1, const ArcsMat< P, Q, R > &U2)
 行列を縦に連結する関数(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double>
static constexpr void concath (const ArcsMat< M, N, T > &U1, const ArcsMat< P, Q, R > &U2, ArcsMat< D, E, F > &Y)
 行列を横に連結する関数(引数渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr ArcsMat< M, N+Q, T > concath (const ArcsMat< M, N, T > &U1, const ArcsMat< P, Q, R > &U2)
 行列を横に連結する関数(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double, size_t G, size_t H, typename L = double, size_t V, size_t W, typename X = double>
static constexpr void concat4 (const ArcsMat< M, N, T > &U11, const ArcsMat< P, Q, R > &U12, const ArcsMat< D, E, F > &U21, const ArcsMat< G, H, L > &U22, ArcsMat< V, W, X > &Y)
 4つの行列を1つに連結する関数(引数渡し版)
 
template<size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double, size_t G, size_t H, typename L = double>
static constexpr ArcsMat< M+D, N+Q, T > concat4 (const ArcsMat< M, N, T > &U11, const ArcsMat< P, Q, R > &U12, const ArcsMat< D, E, F > &U21, const ArcsMat< G, H, L > &U22)
 4つの行列を1つに連結する関数(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void diag (const ArcsMat< M, N, T > &u, ArcsMat< P, Q, R > &Y)
 縦ベクトルの各要素を対角要素に持つ正方行列を生成する関数(引数渡し版)
 
static constexpr ArcsMat< M, M, T > diag (const ArcsMat< M, N, T > &u)
 縦ベクトルの各要素を対角要素に持つ正方行列を生成する関数(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double, size_t L = std::min(M,N)>
static constexpr void getdiag (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &y, const ssize_t k=0)
 行列の対角要素を縦ベクトルとして取得する関数(引数渡し版)
 
template<size_t L = std::min(M,N)>
static constexpr ArcsMat< L, 1, T > getdiag (const ArcsMat< M, N, T > &U, const ssize_t k=0)
 行列の対角要素を縦ベクトルとして取得する関数(戻り値渡し版)
 
static constexpr T trace (const ArcsMat< M, N, T > &U)
 行列のトレースを返す関数(戻り値渡し版のみ)
 
template<size_t L = std::min(M,N)>
static constexpr T multdiag (const ArcsMat< M, N, T > &U)
 行列の対角要素の総積を返す関数(戻り値渡し版のみ)
 
static constexpr std::tuple< size_t, size_t > maxidx (const ArcsMat< M, N, T > &U)
 行列要素の最大値の要素番号を返す関数(タプル返し版のみ)
 
static constexpr T max (const ArcsMat< M, N, T > &U)
 行列要素の最大値を返す関数(戻り値渡し版のみ)
 
static constexpr std::tuple< size_t, size_t > minidx (const ArcsMat< M, N, T > &U)
 行列要素の最小値の要素番号を返す関数(タプル返し版のみ)
 
static constexpr T min (const ArcsMat< M, N, T > &U)
 行列要素の最小値を返す関数(戻り値渡し版のみ)
 
static constexpr T sum (const ArcsMat< M, N, T > &U)
 行列要素の総和を返す関数(戻り値渡し版のみ)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void exp (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の指数関数を計算する関数(引数渡し版)
 
static constexpr ArcsMat< M, N, T > exp (const ArcsMat< M, N, T > &U)
 行列要素の指数関数を計算する関数(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void log (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の対数関数(底e版)を計算する関数(引数渡し版)
 
static constexpr ArcsMat< M, N, T > log (const ArcsMat< M, N, T > &U)
 行列要素の対数関数(底e版)を計算する関数(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void log10 (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の対数関数(底10版)を計算する関数(引数渡し版)
 
static constexpr ArcsMat< M, N, T > log10 (const ArcsMat< M, N, T > &U)
 行列要素の対数関数(底10版)を計算する関数(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void sin (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の正弦関数を計算する関数(引数渡し版)
 
static constexpr ArcsMat< M, N, T > sin (const ArcsMat< M, N, T > &U)
 行列要素の正弦関数を計算する関数(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void cos (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の余弦関数を計算する関数(引数渡し版)
 
static constexpr ArcsMat< M, N, T > cos (const ArcsMat< M, N, T > &U)
 行列要素の余弦を計算する関数(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void tan (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の正接関数を計算する関数(引数渡し版)
 
static constexpr ArcsMat< M, N, T > tan (const ArcsMat< M, N, T > &U)
 行列要素の正接関数を計算する関数(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void tanh (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の双曲線正接関数を計算する関数(引数渡し版)
 
static constexpr ArcsMat< M, N, T > tanh (const ArcsMat< M, N, T > &U)
 行列要素の双曲線正接関数を計算する関数(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void sqrt (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の平方根を計算する関数(引数渡し版)
 
static constexpr ArcsMat< M, N, T > sqrt (const ArcsMat< M, N, T > &U)
 行列要素の平方根を計算する関数(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void sign (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の符号関数を計算する関数(引数渡し版)
 
static constexpr ArcsMat< M, N, T > sign (const ArcsMat< M, N, T > &U)
 行列要素の符号関数を計算する関数(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void abs (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 行列要素の絶対値を計算する関数(引数渡し版)
 
template<typename R = double>
static constexpr ArcsMat< M, N, R > abs (const ArcsMat< M, N, T > &U)
 行列要素の絶対値を計算する関数(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void arg (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 複素数行列要素の偏角を計算する関数(引数渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void real (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 複素数行列要素の実数部を取得する関数(引数渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void imag (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 複素数行列要素の虚数部を取得する関数(引数渡し版)
 
template<size_t P, size_t Q, typename R = std::complex<double>>
static constexpr void conj (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 複素数行列要素の複素共役を取得する関数(引数渡し版)
 
static constexpr ArcsMat< M, N, T > conj (const ArcsMat< M, N, T > &U)
 複素数行列要素の複素共役を取得する関数(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void tp (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 転置行列を返す関数 (引数渡し版)
 
static constexpr ArcsMat< N, M, T > tp (const ArcsMat< M, N, T > &U)
 転置行列を返す関数 (戻り値渡し版)
 
template<size_t P, size_t Q, typename R = std::complex<double>>
static constexpr void Htp (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y)
 エルミート転置行列を返す関数 (引数渡し版)
 
static constexpr ArcsMat< N, M, T > Htp (const ArcsMat< M, N, T > &U)
 エルミート転置行列を返す関数 (戻り値渡し版)
 
template<ArcsMatrix::NormType NRM = ArcsMatrix::NormType::AMT_L2, typename R = double>
static constexpr R norm (const ArcsMat< M, N, T > &U)
 行列のノルムを返す関数(戻り値渡し版のみ)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void gettriup (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y, const size_t n=1)
 n列目を左端として右上の上三角部分のみを返す関数(下三角部分はゼロ)(引数渡し版)
 
static constexpr ArcsMat< M, N, T > gettriup (const ArcsMat< M, N, T > &U, const size_t n=1)
 n列目を左端として右上の上三角部分のみを返す関数(下三角部分はゼロ)(戻り値渡し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void gettrilo (const ArcsMat< M, N, T > &U, ArcsMat< P, Q, R > &Y, const size_t m=1)
 m行目を上端として左下の下三角部分のみを返す関数(上三角部分はゼロ)(引数渡し版)
 
static constexpr ArcsMat< M, N, T > gettrilo (const ArcsMat< M, N, T > &U, const size_t m=1)
 m行目を上端として左下の下三角部分のみを返す関数(上三角部分はゼロ)(戻り値渡し版)
 
template<size_t ML, size_t NL, typename TL = double, size_t MU, size_t NU, typename TU = double, size_t MP, size_t NP, typename TP = double>
static constexpr void LUP (const ArcsMat< M, N, T > &A, ArcsMat< ML, NL, TL > &L, ArcsMat< MU, NU, TU > &U, ArcsMat< MP, NP, TP > &P)
 LU分解の結果と置換行列を返す関数(引数渡し版)
 
static constexpr std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T >, ArcsMat< M, N, T > > LUP (const ArcsMat< M, N, T > &A)
 LU分解の結果と置換行列を返す関数(タプル返し版)
 
template<size_t ML, size_t NL, typename TL = double, size_t MU, size_t NU, typename TU = double>
static constexpr void LU (const ArcsMat< M, N, T > &A, ArcsMat< ML, NL, TL > &L, ArcsMat< MU, NU, TU > &U)
 LU分解の結果のみ返す関数(引数渡し版)
 
static constexpr std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > LU (const ArcsMat< M, N, T > &A)
 LU分解の結果のみ返す関数(タプル返し版)
 
static constexpr T det (const ArcsMat< M, N, T > &A)
 行列式の値を返す関数(戻り値返し版のみ)
 
template<size_t MH, size_t NH, typename TH = double>
static constexpr void Householder (const ArcsMat< M, N, T > &v, ArcsMat< MH, NH, TH > &H, const size_t k=1)
 Householder行列を生成する関数(引数渡し版)
 
static constexpr ArcsMat< M, M, T > Householder (const ArcsMat< M, N, T > &v, const size_t k=1)
 Householder行列を生成する関数(戻り値返し版)
 
template<size_t MQ, size_t NQ, typename TQ = double, size_t MR, size_t NR, typename TR = double>
static constexpr void QR (const ArcsMat< M, N, T > &A, ArcsMat< MQ, NQ, TQ > &Q, ArcsMat< MR, NR, TR > &R)
 QR分解(引数渡し版) 注意:複素数で縦長行列の場合ではMATLABとは異なる解を出力する
 
static constexpr std::tuple< ArcsMat< M, M, T >, ArcsMat< M, N, T > > QR (const ArcsMat< M, N, T > &A)
 QR分解(タプル返し版)
 
template<size_t LoopMax = 100*std::max(M,N), size_t MU, size_t NU, typename TU = double, size_t MS, size_t NS, typename TS = double, size_t MV, size_t NV, typename TV = double>
static constexpr void SVD (const ArcsMat< M, N, T > &A, ArcsMat< MU, NU, TU > &U, ArcsMat< MS, NS, TS > &S, ArcsMat< MV, NV, TV > &V)
 SVD特異値分解(引数渡し版) 注意:複素数で非正方行列の場合ではMATLABとは異なる解を出力する
 
static constexpr std::tuple< ArcsMat< M, M, T >, ArcsMat< M, N, T >, ArcsMat< N, N, T > > SVD (const ArcsMat< M, N, T > &A)
 SVD特異値分解(タプル返し版)
 
static constexpr size_t rank (const ArcsMat< M, N, T > &A, const T eps=ArcsMat< M, N, T >::EPSILON)
 行列の階数を返す関数(戻り値返し版のみ)
 
template<size_t ML, size_t NL, typename TL = double, size_t MD, size_t ND, typename TD = double>
static constexpr void LDL (const ArcsMat< M, N, T > &A, ArcsMat< ML, NL, TL > &L, ArcsMat< MD, ND, TD > &D)
 修正コレスキー分解(LDL分解) (引数渡し版)
 
static constexpr std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > LDL (const ArcsMat< M, N, T > &A)
 修正コレスキー分解(LDL分解) (タプル返し版)
 
template<size_t ML, size_t NL, typename TL = double>
static constexpr void Cholesky (const ArcsMat< M, N, T > &A, ArcsMat< ML, NL, TL > &R)
 修正コレスキー分解(引数渡し版)
 
static constexpr ArcsMat< M, N, T > Cholesky (const ArcsMat< M, N, T > &A)
 修正コレスキー分解(戻り値返し版)
 
template<size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
static constexpr void linsolve_vec (const ArcsMat< M, N, T > &A, const ArcsMat< MB, NB, TB > &b, ArcsMat< MX, NX, TX > &x)
 Ax = bの形の線形方程式をxについて解く関数(正方行列A・ベクトルx,b版) (内部用引数渡し版のみ)
 
template<size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
static constexpr void linsolve_mat (const ArcsMat< M, N, T > &A, const ArcsMat< MB, NB, TB > &B, ArcsMat< MX, NX, TX > &X)
 AX = Bの形の線形方程式をxについて解く関数(正方行列A・行列X,B版) (内部用引数渡し版のみ)
 
template<size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
static constexpr void linsolve_vec_nsqv (const ArcsMat< M, N, T > &A, const ArcsMat< MB, NB, TB > &b, ArcsMat< MX, NX, TX > &x)
 Ax = bの形の線形方程式をxについて解く関数(非正方縦長行列A・ベクトルx,b版) (内部用引数渡し版のみ)
 
template<size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
static constexpr void linsolve_mat_nsqv (const ArcsMat< M, N, T > &A, const ArcsMat< MB, NB, TB > &B, ArcsMat< MX, NX, TX > &X)
 AX = Bの形の線形方程式をxについて解く関数(非正方縦長行列A・行列X,B版) (内部用引数渡し版のみ)
 
template<size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
static constexpr void linsolve_vec_nsqh (const ArcsMat< M, N, T > &A, const ArcsMat< MB, NB, TB > &b, ArcsMat< MX, NX, TX > &x)
 Ax = bの形の線形方程式をxについて解く関数(非正方横長行列A・ベクトルx,b版) (内部用引数渡し版のみ) この関数はMATLABとは異なる解を出力する、ただしもちろん、Ax = b は成立
 
template<size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
static constexpr void linsolve_mat_nsqh (const ArcsMat< M, N, T > &A, const ArcsMat< MB, NB, TB > &B, ArcsMat< MX, NX, TX > &X)
 AX = Bの形の線形方程式をXについて解く関数(非正方横行列A・行列X,B版) (内部用引数渡し版のみ) この関数はMATLABとは異なる解を出力する、ただしもちろん、AX = B は成立
 
template<size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
static constexpr void linsolve (const ArcsMat< M, N, T > &A, const ArcsMat< MB, NB, TB > &B, ArcsMat< MX, NX, TX > &X)
 AX = Bの形の線形方程式をXについて解く関数(引数渡し版)
 
template<size_t MB, size_t NB, typename TB = double>
static constexpr ArcsMat< N, NB, T > linsolve (const ArcsMat< M, N, T > &A, const ArcsMat< MB, NB, TB > &B)
 AX = Bの形の線形方程式をXについて解く関数(戻り値返し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void inv (const ArcsMat< M, N, T > &A, ArcsMat< P, Q, R > &Y)
 逆行列を返す関数(引数渡し版)
 
static constexpr ArcsMat< M, N, T > inv (const ArcsMat< M, N, T > &A)
 逆行列を返す関数(戻り値返し版)
 
template<size_t P, size_t Q, typename R = double>
static constexpr void pinv (const ArcsMat< M, N, T > &A, ArcsMat< P, Q, R > &Y)
 Moore-Penroseの擬似逆行列を返す関数(引数渡し版)
 
static constexpr ArcsMat< N, M, T > pinv (const ArcsMat< M, N, T > &A)
 Moore-Penroseの疑似逆行列を返す関数(戻り値返し版)
 
template<size_t MP, size_t NP, typename TP = double, size_t MH, size_t NH, typename TH = double>
static constexpr void Hessenberg (const ArcsMat< M, N, T > &A, ArcsMat< MP, NP, TP > &P, ArcsMat< MH, NH, TH > &H)
 Hessenberg分解(引数渡し版) 複素数の場合、この関数はMATLABとは異なる解を出力する。
 
static constexpr std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > Hessenberg (const ArcsMat< M, N, T > &A)
 Hessenberg分解(タプル返し版) 複素数の場合、この関数はMATLABとは異なる解を出力する。
 
template<size_t MU, size_t NU, typename TU = double, size_t MS, size_t NS, typename TS = double>
static constexpr void Schur (const ArcsMat< M, N, T > &A, ArcsMat< MU, NU, TU > &U, ArcsMat< MS, NS, TS > &S)
 複素Schur分解(引数渡し版) この関数はMATLABとは異なる解を出力する、ただしもちろん、A = USU' は成立
 
static constexpr std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > Schur (const ArcsMat< M, N, T > &A)
 複素Schur分解(タプル返し版) この関数はMATLABとは異なる解を出力する、ただしもちろん、A = USU' は成立
 
template<size_t MV, size_t NV, typename TV = std::complex<double>>
static constexpr void eig (const ArcsMat< M, N, T > &A, ArcsMat< MV, NV, TV > &v)
 固有値を返す関数(引数渡し版)
 
template<typename TV = std::complex<double>>
static constexpr ArcsMat< M, 1, TV > eig (const ArcsMat< M, N, T > &A)
 固有値を返す関数(戻り値返し版)
 
template<size_t MV, size_t NV, typename TV = std::complex<double>, size_t MD, size_t ND, typename TD = std::complex<double>>
static constexpr void eigvec (const ArcsMat< M, N, T > &A, ArcsMat< MV, NV, TV > &V, ArcsMat< MD, ND, TD > &D)
 固有値を持つ対角行列Dと、各々の固有値に対応する固有ベクトルを持つ行列Vを返す関数(引数渡し版)
 
template<typename TV = std::complex<double>>
static constexpr std::tuple< ArcsMat< M, N, TV >, ArcsMat< M, N, TV > > eigvec (const ArcsMat< M, N, T > &A)
 固有値を持つ対角行列Dと、各々の固有値に対応する固有ベクトルを持つ行列Vを返す関数(タプル返し版)
 
template<size_t MR, size_t NR, typename TR = double, size_t MY, size_t NY, typename TY = double>
static constexpr void Kron (const ArcsMat< M, N, T > &L, const ArcsMat< MR, NR, TR > &R, ArcsMat< MY, NY, TY > &Y)
 クロネッカー積(引数渡し版)
 
template<size_t MR, size_t NR, typename TR = double>
static constexpr ArcsMat< M *MR, N *NR, T > Kron (const ArcsMat< M, N, T > &L, const ArcsMat< MR, NR, TR > &R)
 クロネッカー積(戻り値返し版)
 
template<size_t MR, size_t NR, typename TR = double, size_t MY, size_t NY, typename TY = double>
static constexpr void cross_vec (const ArcsMat< M, N, T > &l, const ArcsMat< MR, NR, TR > &r, ArcsMat< MY, NY, TY > &y)
 クロス積 ベクトル版 (内部用引数渡し版のみ)
 
template<size_t MR, size_t NR, typename TR = double, size_t MY, size_t NY, typename TY = double>
static constexpr void cross_mat (const ArcsMat< M, N, T > &L, const ArcsMat< MR, NR, TR > &R, ArcsMat< MY, NY, TY > &Y)
 クロス積 行列版 (内部用引数渡し版のみ)
 
template<size_t MR, size_t NR, typename TR = double, size_t MY, size_t NY, typename TY = double>
static constexpr void cross (const ArcsMat< M, N, T > &L, const ArcsMat< MR, NR, TR > &R, ArcsMat< MY, NY, TY > &Y)
 クロス積 (引数渡し版)
 
template<size_t MR, size_t NR, typename TR = double>
static constexpr ArcsMat< M, N, T > cross (const ArcsMat< M, N, T > &L, const ArcsMat< MR, NR, TR > &R)
 クロス積 (戻り値返し版)
 
template<size_t MY, size_t NY, typename TY = double>
static constexpr void vec (const ArcsMat< M, N, T > &U, ArcsMat< MY, NY, TY > &y)
 vec作用素(行列→縦ベクトル) (引数渡し版)
 
static constexpr ArcsMat< M *N, 1, T > vec (const ArcsMat< M, N, T > &U)
 vec作用素(行列→縦ベクトル) (戻り値返し版)
 
template<size_t MY, size_t NY, typename TY = double>
static constexpr void vecinv (const ArcsMat< M, N, T > &u, ArcsMat< MY, NY, TY > &Y)
 vec作用素の逆(縦ベクトル→行列) (引数渡し版)
 
template<size_t MY, size_t NY>
static constexpr ArcsMat< MY, NY, T > vecinv (const ArcsMat< M, N, T > &u)
 vec作用素の逆(縦ベクトル→行列) (戻り値返し版)
 
template<size_t MY, size_t NY, typename TY = double>
static constexpr void expm (const ArcsMat< M, N, T > &U, ArcsMat< MY, NY, TY > &Y, const size_t k=13)
 行列指数関数 (引数渡し版)
 
static constexpr ArcsMat< M, N, T > expm (const ArcsMat< M, N, T > &U, const size_t k=13)
 行列指数関数 (戻り値返し版)
 

静的公開変数類

static constexpr double EPSILON = 1e-14
 零とみなす閾値(実数版)
 
static constexpr std::complex< double > EPSLCOMP = std::complex(1e-14, 1e-14)
 零とみなす閾値(複素数版)
 

フレンド

constexpr friend ArcsMat< M, N, T > operator+ (const T &left, const ArcsMat< M, N, T > &right)
 行列加算演算子 (スカラー+行列の場合)
 
constexpr friend ArcsMat< M, N, T > operator- (const T &left, const ArcsMat< M, N, T > &right)
 行列減算演算子 (スカラー-行列の場合)
 
constexpr friend ArcsMat< M, N, T > operator* (const T &left, const ArcsMat< M, N, T > &right)
 行列乗算演算子 (スカラー*行列の場合)
 
constexpr friend void operator/ (const T &left, const ArcsMat< M, N, T > &right)
 行列除算演算子 (スカラー/行列の場合)
 

詳解

template<size_t M, size_t N, typename T = double>
class ARCS::ArcsMat< M, N, T >

ARCS-Matrix 行列演算クラス

テンプレート引数
M行列の高さ
N行列の幅
Tデータ型(デフォルトはdouble型)

構築子と解体子

◆ ArcsMat() [1/6]

template<size_t M, size_t N, typename T = double>
template<typename R >
ARCS::ArcsMat< M, N, T >::ArcsMat ( const R InitValue)
inlineexplicitconstexpr

コンストラクタ(任意初期値版)

テンプレート引数
R演算子右側の要素の型
引数
[in]InitValue行列要素の初期値

◆ ArcsMat() [2/6]

template<size_t M, size_t N, typename T = double>
template<typename R >
ARCS::ArcsMat< M, N, T >::ArcsMat ( const std::initializer_list< R > InitList)
inlineconstexpr

コンストラクタ(初期化リスト版)

テンプレート引数
R演算子右側の要素の型
引数
[in]InitList初期化リスト

◆ ArcsMat() [3/6]

template<size_t M, size_t N, typename T = double>
ARCS::ArcsMat< M, N, T >::ArcsMat ( const ArcsMat< M, N, T > & right)
inlineconstexpr

コピーコンストラクタ

引数
[in]right右辺値

◆ ArcsMat() [4/6]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
ARCS::ArcsMat< M, N, T >::ArcsMat ( const ArcsMat< P, Q, R > & right)
inlineconstexpr

コピーコンストラクタ(サイズもしくは型が違う行列の場合の定義)

テンプレート引数
P,Q,R演算子右側の行列の高さ, 幅, 要素の型
引数
[in]right右辺値

◆ ArcsMat() [5/6]

template<size_t M, size_t N, typename T = double>
ARCS::ArcsMat< M, N, T >::ArcsMat ( ArcsMat< M, N, T > && right)
inlineconstexpr

ムーブコンストラクタ

引数
[in]right右辺値

◆ ArcsMat() [6/6]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
ARCS::ArcsMat< M, N, T >::ArcsMat ( ArcsMat< M, N, T > && right)
inlineconstexpr

ムーブコンストラクタ(サイズと型が違う行列の場合, エラー検出用の定義)

テンプレート引数
P,Q,R演算子右側の行列の高さ, 幅, 要素の型
引数
[in]right右辺値

関数詳解

◆ abs() [1/2]

template<size_t M, size_t N, typename T = double>
template<typename R = double>
static constexpr ArcsMat< M, N, R > ARCS::ArcsMat< M, N, T >::abs ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列要素の絶対値を計算する関数(戻り値渡し版)

テンプレート引数
R出力行列の要素の型
引数
[in]U入力行列
戻り値
Y 出力行列

◆ abs() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::abs ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

行列要素の絶対値を計算する関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ arg()

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::arg ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

複素数行列要素の偏角を計算する関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ Cholesky() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::Cholesky ( const ArcsMat< M, N, T > & A)
inlinestaticconstexpr

修正コレスキー分解(戻り値返し版)

引数
[in]A入力行列
戻り値
上三角行列

◆ Cholesky() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t ML, size_t NL, typename TL = double>
static constexpr void ARCS::ArcsMat< M, N, T >::Cholesky ( const ArcsMat< M, N, T > & A,
ArcsMat< ML, NL, TL > & R )
inlinestaticconstexpr

修正コレスキー分解(引数渡し版)

テンプレート引数
ML,NL,TLL行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]R上三角行列

◆ concat4() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double, size_t G, size_t H, typename L = double>
static constexpr ArcsMat< M+D, N+Q, T > ARCS::ArcsMat< M, N, T >::concat4 ( const ArcsMat< M, N, T > & U11,
const ArcsMat< P, Q, R > & U12,
const ArcsMat< D, E, F > & U21,
const ArcsMat< G, H, L > & U22 )
inlinestaticconstexpr

4つの行列を1つに連結する関数(戻り値渡し版)

テンプレート引数
P,Q,R,D,E,F,G,H,L入力行列12-22と出力行列の高さ, 幅, 要素の型
引数
[in]U11入力行列11(左上)
[in]U12入力行列12(右上)
[in]U21入力行列11(左下)
[in]U22入力行列12(右下)
戻り値
出力行列

◆ concat4() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double, size_t G, size_t H, typename L = double, size_t V, size_t W, typename X = double>
static constexpr void ARCS::ArcsMat< M, N, T >::concat4 ( const ArcsMat< M, N, T > & U11,
const ArcsMat< P, Q, R > & U12,
const ArcsMat< D, E, F > & U21,
const ArcsMat< G, H, L > & U22,
ArcsMat< V, W, X > & Y )
inlinestaticconstexpr

4つの行列を1つに連結する関数(引数渡し版)

テンプレート引数
P,Q,R,D,E,F,G,H,L,V,W,X入力行列12-22と出力行列の高さ, 幅, 要素の型
引数
[in]U11入力行列11(左上)
[in]U12入力行列12(右上)
[in]U21入力行列11(左下)
[in]U22入力行列12(右下)
[out]Y出力行列

◆ concath() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr ArcsMat< M, N+Q, T > ARCS::ArcsMat< M, N, T >::concath ( const ArcsMat< M, N, T > & U1,
const ArcsMat< P, Q, R > & U2 )
inlinestaticconstexpr

行列を横に連結する関数(戻り値渡し版)

テンプレート引数
P,Q,R入力行列2の高さ, 幅, 要素の型
引数
[in]U1入力行列1
[in]U2入力行列2
[out]Y出力行列

◆ concath() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double>
static constexpr void ARCS::ArcsMat< M, N, T >::concath ( const ArcsMat< M, N, T > & U1,
const ArcsMat< P, Q, R > & U2,
ArcsMat< D, E, F > & Y )
inlinestaticconstexpr

行列を横に連結する関数(引数渡し版)

テンプレート引数
P,Q,R,D,E,F入力行列2と出力行列の高さ, 幅, 要素の型
引数
[in]U1入力行列1
[in]U2入力行列2
[out]Y出力行列

◆ concatv() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr ArcsMat< M+P, N, T > ARCS::ArcsMat< M, N, T >::concatv ( const ArcsMat< M, N, T > & U1,
const ArcsMat< P, Q, R > & U2 )
inlinestaticconstexpr

行列を縦に連結する関数(戻り値渡し版)

テンプレート引数
P,Q,R入力行列2の高さ, 幅, 要素の型
引数
[in]U1入力行列1
[in]U2入力行列2
[out]Y出力行列

◆ concatv() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double, size_t D, size_t E, typename F = double>
static constexpr void ARCS::ArcsMat< M, N, T >::concatv ( const ArcsMat< M, N, T > & U1,
const ArcsMat< P, Q, R > & U2,
ArcsMat< D, E, F > & Y )
inlinestaticconstexpr

行列を縦に連結する関数(引数渡し版)

テンプレート引数
P,Q,R,D,E,F入力行列2と出力行列の高さ, 幅, 要素の型
引数
[in]U1入力行列1
[in]U2入力行列2
[out]Y出力行列

◆ conj() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::conj ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

複素数行列要素の複素共役を取得する関数(戻り値渡し版)

引数
[in]U入力行列
戻り値
出力行列

◆ conj() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = std::complex<double>>
static constexpr void ARCS::ArcsMat< M, N, T >::conj ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

複素数行列要素の複素共役を取得する関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ copymatrix()

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::copymatrix ( const ArcsMat< M, N, T > & U,
const size_t m1,
const size_t m2,
const size_t n1,
const size_t n2,
ArcsMat< P, Q, R > & Y,
const size_t my,
const size_t ny )
inlinestaticconstexpr

行列Uから別の行列Yへ位置とサイズを指定してコピーする関数(引数渡し版のみ) 等価なMATLABコード: Y(my:my+(m2-m1), ny:ny+(n2-n1)) = U(m1:m2, n1:n2)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型, 入力行列の高さ, 幅, 要素の型
引数
[in]Uコピー元の行列
[in]m1コピー元の縦方向の抽出開始位置
[in]m2コピー元の縦方向の抽出終了位置
[in]n1コピー元の横方向の抽出開始位置
[in]n2コピー元の横方向の抽出終了位置
[in,out]Yコピー先の行列
[in]myコピー先の縦方向の書き込み開始位置
[in]nyコピー先の横方向の書き込み開始位置

◆ cos() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::cos ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列要素の余弦を計算する関数(戻り値渡し版)

引数
[in]U入力行列
戻り値
Y 出力行列

◆ cos() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::cos ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

行列要素の余弦関数を計算する関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ cross() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t MR, size_t NR, typename TR = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::cross ( const ArcsMat< M, N, T > & L,
const ArcsMat< MR, NR, TR > & R )
inlinestaticconstexpr

クロス積 (戻り値返し版)

テンプレート引数
MR,NR,TR入力行列の高さ, 幅, 要素の型
引数
[in]L演算子の左側
[in]R演算子の右側
戻り値
結果

◆ cross() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t MR, size_t NR, typename TR = double, size_t MY, size_t NY, typename TY = double>
static constexpr void ARCS::ArcsMat< M, N, T >::cross ( const ArcsMat< M, N, T > & L,
const ArcsMat< MR, NR, TR > & R,
ArcsMat< MY, NY, TY > & Y )
inlinestaticconstexpr

クロス積 (引数渡し版)

テンプレート引数
MR,NR,TR,MY,NY,TY入出力行列の高さ, 幅, 要素の型
引数
[in]L演算子の左側
[in]R演算子の右側
[out]Y結果

◆ cross_mat()

template<size_t M, size_t N, typename T = double>
template<size_t MR, size_t NR, typename TR = double, size_t MY, size_t NY, typename TY = double>
static constexpr void ARCS::ArcsMat< M, N, T >::cross_mat ( const ArcsMat< M, N, T > & L,
const ArcsMat< MR, NR, TR > & R,
ArcsMat< MY, NY, TY > & Y )
inlinestaticconstexpr

クロス積 行列版 (内部用引数渡し版のみ)

テンプレート引数
MR,NR,TR,MY,NY,TY入出力行列の高さ, 幅, 要素の型
引数
[in]L演算子の左側
[in]R演算子の右側
[out]Y結果

◆ cross_vec()

template<size_t M, size_t N, typename T = double>
template<size_t MR, size_t NR, typename TR = double, size_t MY, size_t NY, typename TY = double>
static constexpr void ARCS::ArcsMat< M, N, T >::cross_vec ( const ArcsMat< M, N, T > & l,
const ArcsMat< MR, NR, TR > & r,
ArcsMat< MY, NY, TY > & y )
inlinestaticconstexpr

クロス積 ベクトル版 (内部用引数渡し版のみ)

テンプレート引数
MR,NR,TR,MY,NY,TY入出力行列の高さ, 幅, 要素の型
引数
[in]l演算子の左側縦ベクトル
[in]r演算子の右側縦ベクトル
[out]y結果縦ベクトル

◆ det()

template<size_t M, size_t N, typename T = double>
static constexpr T ARCS::ArcsMat< M, N, T >::det ( const ArcsMat< M, N, T > & A)
inlinestaticconstexpr

行列式の値を返す関数(戻り値返し版のみ)

引数
[in]A入力行列
戻り値
結果

◆ diag() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, M, T > ARCS::ArcsMat< M, N, T >::diag ( const ArcsMat< M, N, T > & u)
inlinestaticconstexpr

縦ベクトルの各要素を対角要素に持つ正方行列を生成する関数(戻り値渡し版)

引数
[in]u入力ベクトル
戻り値
出力行列

◆ diag() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::diag ( const ArcsMat< M, N, T > & u,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

縦ベクトルの各要素を対角要素に持つ正方行列を生成する関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]u入力ベクトル
[in]Y出力行列
戻り値
出力行列

◆ Disp()

template<size_t M, size_t N, typename T = double>
void ARCS::ArcsMat< M, N, T >::Disp ( const std::string & format) const
inlineconstexpr

行列の要素を表示

テンプレート引数
M,N,T行列の高さ, 幅, 要素の型
引数
[in]format表示形式 (%1.3e とか %5.3f とか printfと同じ)

◆ eig() [1/2]

template<size_t M, size_t N, typename T = double>
template<typename TV = std::complex<double>>
static constexpr ArcsMat< M, 1, TV > ARCS::ArcsMat< M, N, T >::eig ( const ArcsMat< M, N, T > & A)
inlinestaticconstexpr

固有値を返す関数(戻り値返し版)

テンプレート引数
TV出力行列の要素の型
引数
[in]A入力行列
[out]v固有値の縦ベクトル

◆ eig() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t MV, size_t NV, typename TV = std::complex<double>>
static constexpr void ARCS::ArcsMat< M, N, T >::eig ( const ArcsMat< M, N, T > & A,
ArcsMat< MV, NV, TV > & v )
inlinestaticconstexpr

固有値を返す関数(引数渡し版)

テンプレート引数
MV,NV,TV出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]v固有値の縦ベクトル

◆ eigvec() [1/2]

template<size_t M, size_t N, typename T = double>
template<typename TV = std::complex<double>>
static constexpr std::tuple< ArcsMat< M, N, TV >, ArcsMat< M, N, TV > > ARCS::ArcsMat< M, N, T >::eigvec ( const ArcsMat< M, N, T > & A)
inlinestaticconstexpr

固有値を持つ対角行列Dと、各々の固有値に対応する固有ベクトルを持つ行列Vを返す関数(タプル返し版)

テンプレート引数
TV出力行列の要素の型
引数
[in]A入力行列
戻り値
(V, D) (各々の固有ベクトルを縦ベクトルとして持つ行列V, 固有値を対角に持つ対角行列D) のタプル

◆ eigvec() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t MV, size_t NV, typename TV = std::complex<double>, size_t MD, size_t ND, typename TD = std::complex<double>>
static constexpr void ARCS::ArcsMat< M, N, T >::eigvec ( const ArcsMat< M, N, T > & A,
ArcsMat< MV, NV, TV > & V,
ArcsMat< MD, ND, TD > & D )
inlinestaticconstexpr

固有値を持つ対角行列Dと、各々の固有値に対応する固有ベクトルを持つ行列Vを返す関数(引数渡し版)

テンプレート引数
MV,NV,TV,MD,ND,TD出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]V各々の固有ベクトルを縦ベクトルとして持つ行列V
[out]D固有値を対角に持つ対角行列D

◆ exp() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::exp ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列要素の指数関数を計算する関数(戻り値渡し版)

引数
[in]U入力行列
戻り値
Y 出力行列

◆ exp() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::exp ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

行列要素の指数関数を計算する関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ expm() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t MY, size_t NY, typename TY = double>
static constexpr void ARCS::ArcsMat< M, N, T >::expm ( const ArcsMat< M, N, T > & U,
ArcsMat< MY, NY, TY > & Y,
const size_t k = 13 )
inlinestaticconstexpr

行列指数関数 (引数渡し版)

テンプレート引数
MY,NY,TY出力ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列
[in]kパデ近似の次数 (デフォルト値 = 13)

◆ expm() [2/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::expm ( const ArcsMat< M, N, T > & U,
const size_t k = 13 )
inlinestaticconstexpr

行列指数関数 (戻り値返し版)

引数
[in]U入力行列
[in]kパデ近似の次数 (デフォルト値 = 13)
戻り値
出力行列

◆ eye()

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::eye ( void )
inlinestaticconstexpr

n行n列の単位行列を返す関数

戻り値
単位行列

◆ FillAll()

template<size_t M, size_t N, typename T = double>
template<typename R >
void ARCS::ArcsMat< M, N, T >::FillAll ( const R & u)
inlineconstexpr

すべての要素を指定した値で埋める関数

テンプレート引数
R要素の型
引数
[in]u埋める値

◆ fillcolumn() [1/2]

template<size_t M, size_t N, typename T = double>
template<typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::fillcolumn ( ArcsMat< M, N, T > & UY,
const R a,
const size_t n,
const size_t m1,
const size_t m2 )
inlinestaticconstexpr

n列目のm1行目からm2行目までを数値aで埋める関数 (m1 <= m2 であること) (引数渡し版)

テンプレート引数
R埋める値の型
引数
[in,out]UY入出力行列
[in]a埋める値
[in]n指定列
[in]m1開始行
[in]m2終了行

◆ fillcolumn() [2/2]

template<size_t M, size_t N, typename T = double>
template<typename R = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::fillcolumn ( const R a,
const size_t n,
const size_t m1,
const size_t m2,
const ArcsMat< M, N, T > & U )
inlinestaticconstexpr

n列目のm1行目からm2行目までを数値aで埋める関数 (n1 <= n2 であること) (戻り値渡し版)

テンプレート引数
R埋める値の型
引数
[in]a埋める値
[in]n指定列
[in]m1開始行
[in]m2終了行
[in]U入力行列
戻り値
出力行列

◆ fillrow() [1/2]

template<size_t M, size_t N, typename T = double>
template<typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::fillrow ( ArcsMat< M, N, T > & UY,
const R a,
const size_t m,
const size_t n1,
const size_t n2 )
inlinestaticconstexpr

m行目のn1列目からn2列目までを数値aで埋める関数 (n1 <= n2 であること) (引数渡し版)

テンプレート引数
R埋める値の型
引数
[in,out]UY入出力行列
[in]a埋める値
[in]m指定行
[in]n1開始列
[in]n2終了列

◆ fillrow() [2/2]

template<size_t M, size_t N, typename T = double>
template<typename R = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::fillrow ( const R a,
const size_t m,
const size_t n1,
const size_t n2,
const ArcsMat< M, N, T > & U )
inlinestaticconstexpr

m行目のn1列目からn2列目までを数値aで埋める関数 (n1 <= n2 であること) (戻り値渡し版)

テンプレート引数
R埋める値の型
引数
[in]a埋める値
[in]m指定行
[in]n1開始列
[in]n2終了列
[in]U入力行列
戻り値
出力行列

◆ Get()

template<size_t M, size_t N, typename T = double>
template<typename T1 , typename... T2>
void ARCS::ArcsMat< M, N, T >::Get ( T1 & u1,
T2 &... u2 )
inlineconstexpr

行列要素から値を読み込む関数

テンプレート引数
T1,T2要素の型
引数
[in]u1要素1の値
[in]u2要素2以降の値

◆ getcolumn() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::getcolumn ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & y,
const size_t n )
inlinestaticconstexpr

指定した列から縦ベクトルとして抽出する関数 (引数渡し版)

テンプレート引数
P,Q,R出力ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[out]y出力ベクトル
[in]n抽出したい列

◆ getcolumn() [2/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, 1, T > ARCS::ArcsMat< M, N, T >::getcolumn ( const ArcsMat< M, N, T > & U,
const size_t n )
inlinestaticconstexpr

指定した列から縦ベクトルとして抽出する関数 (戻り値渡し版)

引数
[in]U入力行列
[in]n抽出したい列
戻り値
出力ベクトル

◆ GetData()

template<size_t M, size_t N, typename T = double>
std::array< std::array< T, M >, N > ARCS::ArcsMat< M, N, T >::GetData ( void ) const
inlineconstexpr

std:arrayの2次元配列データをそのまま返す関数

戻り値
2次元配列データ

◆ getdiag() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double, size_t L = std::min(M,N)>
static constexpr void ARCS::ArcsMat< M, N, T >::getdiag ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & y,
const ssize_t k = 0 )
inlinestaticconstexpr

行列の対角要素を縦ベクトルとして取得する関数(引数渡し版)

テンプレート引数
P,Q,R,L出力行列の高さ, 幅, 要素の型, 対角要素の数
引数
[in]U入力行列
[in]kk番目の対角, k=0で主対角、K<0で主対角より下、0<kで主対角より上 (デフォルト値 = 0)
[out]y出力ベクトル

◆ getdiag() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t L = std::min(M,N)>
static constexpr ArcsMat< L, 1, T > ARCS::ArcsMat< M, N, T >::getdiag ( const ArcsMat< M, N, T > & U,
const ssize_t k = 0 )
inlinestaticconstexpr

行列の対角要素を縦ベクトルとして取得する関数(戻り値渡し版)

テンプレート引数
L対角要素の数
引数
[in]U入力行列
[in]kk番目の対角, k=0で主対角、K<0で主対角より下、0<kで主対角より上 (デフォルト値 = 0)
戻り値
出力ベクトル

◆ GetHeight()

template<size_t M, size_t N, typename T = double>
size_t ARCS::ArcsMat< M, N, T >::GetHeight ( void ) const
inlineconstexpr

行列の高さ(行数)を返す関数

戻り値
行列の幅

◆ GetHorizontalVec() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
void ARCS::ArcsMat< M, N, T >::GetHorizontalVec ( ArcsMat< P, Q, R > & w,
const size_t m,
const size_t n ) const
inlineconstexpr

指定した先頭位置から横ベクトルを抜き出して返す関数 (引数渡し版)

テンプレート引数
P,Q,R横ベクトルの高さ, 幅, 要素の型
引数
[out]w横ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目

◆ GetHorizontalVec() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t Q>
ArcsMat< 1, Q, T > ARCS::ArcsMat< M, N, T >::GetHorizontalVec ( const size_t m,
const size_t n ) const
inlineconstexpr

指定した先頭位置から横ベクトルを抜き出して返す関数 (戻り値渡し版)

テンプレート引数
Q横ベクトルの幅
引数
[in]m先頭位置 m行目
[in]n先頭位置 n列目
戻り値
横ベクトル

◆ gethvector() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::gethvector ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & y,
const size_t m,
const size_t n )
inlinestaticconstexpr

指定位置から横ベクトルを抽出する関数 (引数渡し版)

テンプレート引数
P,Q,R出力ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[in]y出力ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目

◆ gethvector() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t Q>
static constexpr ArcsMat< 1, Q, T > ARCS::ArcsMat< M, N, T >::gethvector ( const ArcsMat< M, N, T > & U,
const size_t m,
const size_t n )
inlinestaticconstexpr

指定位置から横ベクトルを抽出する関数 (戻り値渡し版)

テンプレート引数
Q出力ベクトルの幅
引数
[in]U入力行列
[in]m先頭位置 m行目
[in]n先頭位置 n列目
戻り値
横ベクトル

◆ GetNumOfNonZero()

template<size_t M, size_t N, typename T = double>
size_t ARCS::ArcsMat< M, N, T >::GetNumOfNonZero ( const T eps = ArcsMat<M,N,T>::EPSILON) const
inlineconstexpr

非ゼロ要素の数を返す関数

引数
[in]eps許容誤差 (デフォルト値 = EPSILON)
戻り値
結果

◆ getrow() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::getrow ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & y,
const size_t m )
inlinestaticconstexpr

指定した行から横ベクトルとして抽出する関数 (引数渡し版)

テンプレート引数
P,Q,R出力ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[out]y出力ベクトル
[in]m抽出したい行

◆ getrow() [2/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< 1, N, T > ARCS::ArcsMat< M, N, T >::getrow ( const ArcsMat< M, N, T > & U,
const size_t m )
inlinestaticconstexpr

指定した行から横ベクトルとして抽出する関数 (戻り値渡し版)

引数
[in]U入力行列
[in]m抽出したい行
戻り値
出力ベクトル

◆ GetStatus()

template<size_t M, size_t N, typename T = double>
ArcsMatrix::MatStatus ARCS::ArcsMat< M, N, T >::GetStatus ( void ) const
inlineconstexpr

行列の状態をそのまま返す関数

戻り値
行列の状態

◆ getsubmatrix() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::getsubmatrix ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y,
const size_t m,
const size_t n )
inlinestaticconstexpr

行列から指定位置の小行列を抽出する関数 (引数渡し版)

テンプレート引数
P,Q,R小行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y抽出した小行列
[in]m抽出する縦位置(小行列の上)
[in]n抽出する横位置(小行列の左)

◆ getsubmatrix() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q>
static constexpr ArcsMat< P, Q, T > ARCS::ArcsMat< M, N, T >::getsubmatrix ( const ArcsMat< M, N, T > & U,
const size_t m,
const size_t n )
inlinestaticconstexpr

行列から指定位置の小行列を抽出する関数 (戻り値渡し版)

テンプレート引数
P,Q,出力行列の高さ,幅,要素の型
引数
[in]U入力行列
[in]m抽出する縦位置(小行列の上)
[in]n抽出する横位置(小行列の左)
戻り値
抽出した小行列

◆ gettrilo() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::gettrilo ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y,
const size_t m = 1 )
inlinestaticconstexpr

m行目を上端として左下の下三角部分のみを返す関数(上三角部分はゼロ)(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列
[in]m切り出す上端位置 m行目(デフォルト値 = 1)

◆ gettrilo() [2/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::gettrilo ( const ArcsMat< M, N, T > & U,
const size_t m = 1 )
inlinestaticconstexpr

m行目を上端として左下の下三角部分のみを返す関数(上三角部分はゼロ)(戻り値渡し版)

引数
[in]U入力行列
[in]m切り出す上端位置 m行目(デフォルト値 = 1)
戻り値
出力行列

◆ gettriup() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::gettriup ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y,
const size_t n = 1 )
inlinestaticconstexpr

n列目を左端として右上の上三角部分のみを返す関数(下三角部分はゼロ)(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列
[in]n切り出す左端位置 n列目(デフォルト値 = 1)

◆ gettriup() [2/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::gettriup ( const ArcsMat< M, N, T > & U,
const size_t n = 1 )
inlinestaticconstexpr

n列目を左端として右上の上三角部分のみを返す関数(下三角部分はゼロ)(戻り値渡し版)

引数
[in]U入力行列
[in]n切り出す左端位置 n列目(デフォルト値 = 1)
戻り値
出力行列

◆ GetVerticalVec() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
void ARCS::ArcsMat< M, N, T >::GetVerticalVec ( ArcsMat< P, Q, R > & v,
const size_t m,
const size_t n ) const
inlineconstexpr

指定した先頭位置から縦ベクトルを抜き出して返す関数 (引数渡し版)

テンプレート引数
P,Q,R縦ベクトルの高さ, 幅, 要素の型
引数
[out]v縦ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目

◆ GetVerticalVec() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P>
ArcsMat< P, 1, T > ARCS::ArcsMat< M, N, T >::GetVerticalVec ( const size_t m,
const size_t n ) const
inlineconstexpr

指定した先頭位置から縦ベクトルを抜き出して返す関数 (戻り値渡し版)

テンプレート引数
P縦ベクトルの高さ
引数
[in]m先頭位置 m行目
[in]n先頭位置 n列目
戻り値
縦ベクトル

◆ getvvector() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::getvvector ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & y,
const size_t m,
const size_t n )
inlinestaticconstexpr

指定位置から縦ベクトルを抽出する関数 (引数渡し版)

テンプレート引数
P,Q,R出力ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[in]y出力ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目

◆ getvvector() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P = M>
static constexpr ArcsMat< P, 1, T > ARCS::ArcsMat< M, N, T >::getvvector ( const ArcsMat< M, N, T > & U,
const size_t m,
const size_t n )
inlinestaticconstexpr

指定位置から縦ベクトルを抽出する関数 (戻り値渡し版)

テンプレート引数
P出力ベクトルの高さ
引数
[in]U入力行列
[in]m先頭位置 m行目
[in]n先頭位置 n列目
戻り値
縦ベクトル

◆ GetWidth()

template<size_t M, size_t N, typename T = double>
size_t ARCS::ArcsMat< M, N, T >::GetWidth ( void ) const
inlineconstexpr

行列の幅(列数)を返す関数

戻り値
行列の幅

◆ Hessenberg() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > ARCS::ArcsMat< M, N, T >::Hessenberg ( const ArcsMat< M, N, T > & A)
inlinestaticconstexpr

Hessenberg分解(タプル返し版) 複素数の場合、この関数はMATLABとは異なる解を出力する。

引数
[in]A入力行列
戻り値
(ユニタリ行列P, ヘッセンベルグ行列H) のタプル

◆ Hessenberg() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t MP, size_t NP, typename TP = double, size_t MH, size_t NH, typename TH = double>
static constexpr void ARCS::ArcsMat< M, N, T >::Hessenberg ( const ArcsMat< M, N, T > & A,
ArcsMat< MP, NP, TP > & P,
ArcsMat< MH, NH, TH > & H )
inlinestaticconstexpr

Hessenberg分解(引数渡し版) 複素数の場合、この関数はMATLABとは異なる解を出力する。

テンプレート引数
MP,NP,TP,MH,NH,TH出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]Pユニタリ行列
[out]Hヘッセンベルグ行列

◆ Householder() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t MH, size_t NH, typename TH = double>
static constexpr void ARCS::ArcsMat< M, N, T >::Householder ( const ArcsMat< M, N, T > & v,
ArcsMat< MH, NH, TH > & H,
const size_t k = 1 )
inlinestaticconstexpr

Householder行列を生成する関数(引数渡し版)

テンプレート引数
MH,NH,THH行列の高さ, 幅, 要素の型
引数
[in]v入力縦ベクトル
[out]Hハウスホルダー行列
[in]k次元 (デフォルト値 = 1)

◆ Householder() [2/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, M, T > ARCS::ArcsMat< M, N, T >::Householder ( const ArcsMat< M, N, T > & v,
const size_t k = 1 )
inlinestaticconstexpr

Householder行列を生成する関数(戻り値返し版)

引数
[in]v入力縦ベクトル
[in]k次元 (デフォルト値 = 1)
戻り値
ハウスホルダー行列

◆ Htp() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< N, M, T > ARCS::ArcsMat< M, N, T >::Htp ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

エルミート転置行列を返す関数 (戻り値渡し版)

引数
[in]U入力行列
戻り値
出力行列

◆ Htp() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = std::complex<double>>
static constexpr void ARCS::ArcsMat< M, N, T >::Htp ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

エルミート転置行列を返す関数 (引数渡し版)

テンプレート引数
P,Q,R出力の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ imag()

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::imag ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

複素数行列要素の虚数部を取得する関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ inv() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::inv ( const ArcsMat< M, N, T > & A)
inlinestaticconstexpr

逆行列を返す関数(戻り値返し版)

引数
[in]A入力行列
戻り値
出力行列

◆ inv() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::inv ( const ArcsMat< M, N, T > & A,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

逆行列を返す関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]Y出力行列

◆ Kron() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t MR, size_t NR, typename TR = double>
static constexpr ArcsMat< M *MR, N *NR, T > ARCS::ArcsMat< M, N, T >::Kron ( const ArcsMat< M, N, T > & L,
const ArcsMat< MR, NR, TR > & R )
inlinestaticconstexpr

クロネッカー積(戻り値返し版)

テンプレート引数
MR,NR,TR,MY,NY,TY入力行列の高さ, 幅, 要素の型
引数
[in]L演算子の左側
[in]R演算子の右側
戻り値
結果

◆ Kron() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t MR, size_t NR, typename TR = double, size_t MY, size_t NY, typename TY = double>
static constexpr void ARCS::ArcsMat< M, N, T >::Kron ( const ArcsMat< M, N, T > & L,
const ArcsMat< MR, NR, TR > & R,
ArcsMat< MY, NY, TY > & Y )
inlinestaticconstexpr

クロネッカー積(引数渡し版)

テンプレート引数
MR,NR,TR,MY,NY,TY入出力行列の高さ, 幅, 要素の型
引数
[in]L演算子の左側
[in]R演算子の右側
[out]Y結果

◆ LDL() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > ARCS::ArcsMat< M, N, T >::LDL ( const ArcsMat< M, N, T > & A)
inlinestaticconstexpr

修正コレスキー分解(LDL分解) (タプル返し版)

引数
[in]A入力行列
戻り値
(L, D) (L行列, D行列)のタプル

◆ LDL() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t ML, size_t NL, typename TL = double, size_t MD, size_t ND, typename TD = double>
static constexpr void ARCS::ArcsMat< M, N, T >::LDL ( const ArcsMat< M, N, T > & A,
ArcsMat< ML, NL, TL > & L,
ArcsMat< MD, ND, TD > & D )
inlinestaticconstexpr

修正コレスキー分解(LDL分解) (引数渡し版)

テンプレート引数
ML,NL,TL,MD,ND,TDA, L, D行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]L下三角行列
[out]D対角行列

◆ linsolve() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t MB, size_t NB, typename TB = double>
static constexpr ArcsMat< N, NB, T > ARCS::ArcsMat< M, N, T >::linsolve ( const ArcsMat< M, N, T > & A,
const ArcsMat< MB, NB, TB > & B )
inlinestaticconstexpr

AX = Bの形の線形方程式をXについて解く関数(戻り値返し版)

テンプレート引数
MB,NB,TBB行列の高さ, 幅, 要素の型
引数
[in]A係数行列(正方行列・非正方行列)
[in]B係数ベクトル・行列
戻り値
解ベクトル・行列

◆ linsolve() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
static constexpr void ARCS::ArcsMat< M, N, T >::linsolve ( const ArcsMat< M, N, T > & A,
const ArcsMat< MB, NB, TB > & B,
ArcsMat< MX, NX, TX > & X )
inlinestaticconstexpr

AX = Bの形の線形方程式をXについて解く関数(引数渡し版)

テンプレート引数
MB,NB,TB,MX,NX,TXBとXの高さ, 幅, 要素の型
引数
[in]A係数行列(正方行列・非正方行列)
[in]B係数ベクトル・行列
[out]X解ベクトル・行列

◆ linsolve_mat()

template<size_t M, size_t N, typename T = double>
template<size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
static constexpr void ARCS::ArcsMat< M, N, T >::linsolve_mat ( const ArcsMat< M, N, T > & A,
const ArcsMat< MB, NB, TB > & B,
ArcsMat< MX, NX, TX > & X )
inlinestaticconstexpr

AX = Bの形の線形方程式をxについて解く関数(正方行列A・行列X,B版) (内部用引数渡し版のみ)

テンプレート引数
MB,NB,TB,MX,NX,TXBとXの高さ, 幅, 要素の型
引数
[in]A係数行列(正方行列)
[in]B係数行列(正方行列)
[out]X解行列

◆ linsolve_mat_nsqh()

template<size_t M, size_t N, typename T = double>
template<size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
static constexpr void ARCS::ArcsMat< M, N, T >::linsolve_mat_nsqh ( const ArcsMat< M, N, T > & A,
const ArcsMat< MB, NB, TB > & B,
ArcsMat< MX, NX, TX > & X )
inlinestaticconstexpr

AX = Bの形の線形方程式をXについて解く関数(非正方横行列A・行列X,B版) (内部用引数渡し版のみ) この関数はMATLABとは異なる解を出力する、ただしもちろん、AX = B は成立

テンプレート引数
MB,NB,TB,MX,NX,TXBとXの高さ, 幅, 要素の型
引数
[in]A係数行列(非正方横長行列)
[in]B係数行列(非正方横長行列)
[out]X解行列

◆ linsolve_mat_nsqv()

template<size_t M, size_t N, typename T = double>
template<size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
static constexpr void ARCS::ArcsMat< M, N, T >::linsolve_mat_nsqv ( const ArcsMat< M, N, T > & A,
const ArcsMat< MB, NB, TB > & B,
ArcsMat< MX, NX, TX > & X )
inlinestaticconstexpr

AX = Bの形の線形方程式をxについて解く関数(非正方縦長行列A・行列X,B版) (内部用引数渡し版のみ)

テンプレート引数
MB,NB,TB,MX,NX,TXBとXの高さ, 幅, 要素の型
引数
[in]A係数行列(非正方縦長行列)
[in]B係数行列(非正方縦長行列)
[out]X解行列

◆ linsolve_vec()

template<size_t M, size_t N, typename T = double>
template<size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
static constexpr void ARCS::ArcsMat< M, N, T >::linsolve_vec ( const ArcsMat< M, N, T > & A,
const ArcsMat< MB, NB, TB > & b,
ArcsMat< MX, NX, TX > & x )
inlinestaticconstexpr

Ax = bの形の線形方程式をxについて解く関数(正方行列A・ベクトルx,b版) (内部用引数渡し版のみ)

テンプレート引数
MB,NB,TB,MX,NX,TXbとxの高さ, 幅, 要素の型
引数
[in]A係数行列(正方行列)
[in]b係数ベクトル
[out]x解ベクトル

◆ linsolve_vec_nsqh()

template<size_t M, size_t N, typename T = double>
template<size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
static constexpr void ARCS::ArcsMat< M, N, T >::linsolve_vec_nsqh ( const ArcsMat< M, N, T > & A,
const ArcsMat< MB, NB, TB > & b,
ArcsMat< MX, NX, TX > & x )
inlinestaticconstexpr

Ax = bの形の線形方程式をxについて解く関数(非正方横長行列A・ベクトルx,b版) (内部用引数渡し版のみ) この関数はMATLABとは異なる解を出力する、ただしもちろん、Ax = b は成立

テンプレート引数
MB,NB,TB,MX,NX,TXbとxの高さ, 幅, 要素の型
引数
[in]A係数行列(非正方横長行列)
[in]b係数ベクトル
[out]x解ベクトル

◆ linsolve_vec_nsqv()

template<size_t M, size_t N, typename T = double>
template<size_t MB, size_t NB, typename TB = double, size_t MX, size_t NX, typename TX = double>
static constexpr void ARCS::ArcsMat< M, N, T >::linsolve_vec_nsqv ( const ArcsMat< M, N, T > & A,
const ArcsMat< MB, NB, TB > & b,
ArcsMat< MX, NX, TX > & x )
inlinestaticconstexpr

Ax = bの形の線形方程式をxについて解く関数(非正方縦長行列A・ベクトルx,b版) (内部用引数渡し版のみ)

テンプレート引数
MB,NB,TB,MX,NX,TXbとxの高さ, 幅, 要素の型
引数
[in]A係数行列(非正方縦長行列)
[in]b係数ベクトル
[out]x解ベクトル

◆ LoadArray() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, typename R = double>
void ARCS::ArcsMat< M, N, T >::LoadArray ( const std::array< R, P > & Array)
inlineconstexpr

1次元std::array配列を縦ベクトルとして読み込む関数

テンプレート引数
P,R配列の長さ, 要素の型
引数
[in]Arraystd::array配列(縦MM×横1)

◆ LoadArray() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
void ARCS::ArcsMat< M, N, T >::LoadArray ( const std::array< std::array< R, P >, Q > & Array)
inlineconstexpr

2次元std::array配列を行列として読み込む関数

テンプレート引数
P,Q,R配列の高さ, 幅, 要素の型
引数
[in]Arraystd::array配列(縦MM×横NN)

◆ log() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::log ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列要素の対数関数(底e版)を計算する関数(戻り値渡し版)

引数
[in]U入力行列
戻り値
Y 出力行列

◆ log() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::log ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

行列要素の対数関数(底e版)を計算する関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ log10() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::log10 ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列要素の対数関数(底10版)を計算する関数(戻り値渡し版)

引数
[in]U入力行列
戻り値
Y 出力行列

◆ log10() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::log10 ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

行列要素の対数関数(底10版)を計算する関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ LU() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > ARCS::ArcsMat< M, N, T >::LU ( const ArcsMat< M, N, T > & A)
inlinestaticconstexpr

LU分解の結果のみ返す関数(タプル返し版)

引数
[in]A入力行列
戻り値
(L, U) (下三角行列, 上三角行列)のタプル

◆ LU() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t ML, size_t NL, typename TL = double, size_t MU, size_t NU, typename TU = double>
static constexpr void ARCS::ArcsMat< M, N, T >::LU ( const ArcsMat< M, N, T > & A,
ArcsMat< ML, NL, TL > & L,
ArcsMat< MU, NU, TU > & U )
inlinestaticconstexpr

LU分解の結果のみ返す関数(引数渡し版)

テンプレート引数
ML,NL,TL,MU,NU,TUL,U行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]L下三角行列
[out]U上三角行列

◆ LUP() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T >, ArcsMat< M, N, T > > ARCS::ArcsMat< M, N, T >::LUP ( const ArcsMat< M, N, T > & A)
inlinestaticconstexpr

LU分解の結果と置換行列を返す関数(タプル返し版)

引数
[in]A入力行列
戻り値
(L, U, P) (下三角行列, 上三角行列, 置換行列)のタプル

◆ LUP() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t ML, size_t NL, typename TL = double, size_t MU, size_t NU, typename TU = double, size_t MP, size_t NP, typename TP = double>
static constexpr void ARCS::ArcsMat< M, N, T >::LUP ( const ArcsMat< M, N, T > & A,
ArcsMat< ML, NL, TL > & L,
ArcsMat< MU, NU, TU > & U,
ArcsMat< MP, NP, TP > & P )
inlinestaticconstexpr

LU分解の結果と置換行列を返す関数(引数渡し版)

テンプレート引数
ML,NL,TL,MU,NU,TU,MP,NP,TPL,U,P行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]L下三角行列
[out]U上三角行列
[out]P置換行列

◆ max()

template<size_t M, size_t N, typename T = double>
static constexpr T ARCS::ArcsMat< M, N, T >::max ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列要素の最大値を返す関数(戻り値渡し版のみ)

引数
[in]U入力行列
戻り値
結果

◆ maxidx()

template<size_t M, size_t N, typename T = double>
static constexpr std::tuple< size_t, size_t > ARCS::ArcsMat< M, N, T >::maxidx ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列要素の最大値の要素番号を返す関数(タプル返し版のみ)

引数
[in]U入力行列
戻り値
結果(タプルで返す)

◆ min()

template<size_t M, size_t N, typename T = double>
static constexpr T ARCS::ArcsMat< M, N, T >::min ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列要素の最小値を返す関数(戻り値渡し版のみ)

引数
[in]U入力行列
戻り値
結果

◆ minidx()

template<size_t M, size_t N, typename T = double>
static constexpr std::tuple< size_t, size_t > ARCS::ArcsMat< M, N, T >::minidx ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列要素の最小値の要素番号を返す関数(タプル返し版のみ)

引数
[in]U入力行列
戻り値
結果(タプルで返す)

◆ multdiag()

template<size_t M, size_t N, typename T = double>
template<size_t L = std::min(M,N)>
static constexpr T ARCS::ArcsMat< M, N, T >::multdiag ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列の対角要素の総積を返す関数(戻り値渡し版のみ)

テンプレート引数
L対角要素の数
引数
[in]U入力行列
戻り値
結果

◆ norm()

template<size_t M, size_t N, typename T = double>
template<ArcsMatrix::NormType NRM = ArcsMatrix::NormType::AMT_L2, typename R = double>
static constexpr R ARCS::ArcsMat< M, N, T >::norm ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列のノルムを返す関数(戻り値渡し版のみ)

テンプレート引数
NRMノルムのタイプ (デフォルト値 = AMT_L2)
引数
[in]U入力行列
戻り値
結果

◆ ones()

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::ones ( void )
inlinestaticconstexpr

m行n列の要素がすべて1の行列を返す関数

戻り値
1行列

◆ operator%()

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::operator% ( const ArcsMat< P, Q, R > & right) const
inlineconstexpr

行列アダマール除算演算子 (行列の要素ごとの除算)

テンプレート引数
P,Q,R演算子右側の行列の高さ, 幅, 要素の型
引数
[in]right演算子の右側
戻り値
結果

◆ operator&()

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::operator& ( const ArcsMat< P, Q, R > & right) const
inlineconstexpr

行列アダマール積演算子(行列の要素ごとの乗算)

テンプレート引数
P,Q,R演算子右側の行列の高さ, 幅, 要素の型
引数
[in]right演算子の右側
戻り値
結果

◆ operator()() [1/4]

template<size_t M, size_t N, typename T = double>
T & ARCS::ArcsMat< M, N, T >::operator() ( const size_t m,
const size_t n )
inlineconstexpr

行列括弧演算子(行列の(m,n)要素に値を設定する。サイズチェック無し版)

引数
[in]mm行目(縦方向の位置)
[in]nn列目(横方向の位置)
戻り値
設定後の行列

◆ operator()() [2/4]

template<size_t M, size_t N, typename T = double>
T ARCS::ArcsMat< M, N, T >::operator() ( const size_t m,
const size_t n ) const
inlineconstexpr

行列括弧演算子(行列の(m,n)要素の値を返す。サイズチェック無し版)

引数
[in]mm行目(縦方向の位置)
[in]nn列目(横方向の位置)
戻り値
要素の値

◆ operator()() [3/4]

template<size_t M, size_t N, typename T = double>
T & ARCS::ArcsMat< M, N, T >::operator() ( const size_t m,
const size_t n,
const bool chk )
inlineconstexpr

行列括弧演算子(行列の(m,n)要素に値を設定する。サイズチェック可能版)

引数
[in]mm行目(縦方向の位置)
[in]nn列目(横方向の位置)
[in]chkサイズチェックフラグ true = サイズチェックする, false = サイズチェックしない
戻り値
設定後の行列

◆ operator()() [4/4]

template<size_t M, size_t N, typename T = double>
T ARCS::ArcsMat< M, N, T >::operator() ( const size_t m,
const size_t n,
const bool chk ) const
inlineconstexpr

行列括弧演算子(行列の(m,n)要素の値を返す。サイズチェック可能版)

引数
[in]mm行目(縦方向の位置)
[in]nn列目(横方向の位置)
[in]chkサイズチェックフラグ true = サイズチェックする, false = サイズチェックしない
戻り値
要素の値

◆ operator*() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
ArcsMat< M, Q, T > ARCS::ArcsMat< M, N, T >::operator* ( const ArcsMat< P, Q, R > & right) const
inlineconstexpr

行列乗算演算子(行列=行列*行列の場合)

テンプレート引数
P,Q,R演算子右側の行列の高さ, 幅, 要素の型
引数
[in]right演算子の右側
戻り値
結果

◆ operator*() [2/2]

template<size_t M, size_t N, typename T = double>
template<typename R >
ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::operator* ( const R & right) const
inlineconstexpr

行列乗算演算子(行列=行列*スカラーの場合)

テンプレート引数
R演算子右側の要素の型
引数
[in]right演算子の右側
戻り値
結果

◆ operator*=()

template<size_t M, size_t N, typename T = double>
template<typename R >
ArcsMat< M, N, T > & ARCS::ArcsMat< M, N, T >::operator*= ( const R & right)
inlineconstexpr

行列乗算代入演算子(行列=行列*行列、行列=行列*スカラーの場合)

テンプレート引数
R演算子右側の要素の型
引数
[in]right演算子の右側
戻り値
結果

◆ operator+() [1/3]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::operator+ ( const ArcsMat< P, Q, R > & right) const
inlineconstexpr

行列加算演算子(行列=行列+行列の場合)

テンプレート引数
P,Q,R演算子右側の行列の高さ, 幅, 要素の型
引数
[in]right演算子の右側
戻り値
結果

◆ operator+() [2/3]

template<size_t M, size_t N, typename T = double>
template<typename R >
ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::operator+ ( const R & right) const
inlineconstexpr

行列加算演算子(行列=行列+スカラーの場合)

テンプレート引数
R演算子右側の要素の型
引数
[in]right演算子の右側
戻り値
結果

◆ operator+() [3/3]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::operator+ ( void ) const
inlineconstexpr

単項プラス演算子

戻り値
結果

◆ operator+=()

template<size_t M, size_t N, typename T = double>
template<typename R >
ArcsMat< M, N, T > & ARCS::ArcsMat< M, N, T >::operator+= ( const R & right)
inlineconstexpr

行列加算代入演算子(行列=行列+行列、行列=行列+スカラーの場合)

テンプレート引数
R演算子右側の要素の型
引数
[in]right演算子の右側
戻り値
結果

◆ operator-() [1/3]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::operator- ( const ArcsMat< P, Q, R > & right) const
inlineconstexpr

行列減算演算子(行列=行列-行列の場合)

テンプレート引数
P,Q,R演算子右側の行列の高さ, 幅, 要素の型
引数
[in]right演算子の右側
戻り値
結果

◆ operator-() [2/3]

template<size_t M, size_t N, typename T = double>
template<typename R >
ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::operator- ( const R & right) const
inlineconstexpr

行列減算演算子(行列=行列-スカラーの場合)

テンプレート引数
R演算子右側の要素の型
引数
[in]right演算子の右側
戻り値
結果

◆ operator-() [3/3]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::operator- ( void ) const
inlineconstexpr

単項マイナス演算子

戻り値
結果

◆ operator-=()

template<size_t M, size_t N, typename T = double>
template<typename R >
ArcsMat< M, N, T > & ARCS::ArcsMat< M, N, T >::operator-= ( const R & right)
inlineconstexpr

行列減算代入演算子(行列=行列-行列、行列=行列-スカラーの場合)

テンプレート引数
R演算子右側の要素の型
引数
[in]right演算子の右側
戻り値
結果

◆ operator/() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
void ARCS::ArcsMat< M, N, T >::operator/ ( const ArcsMat< P, Q, R > & right) const
inlineconstexpr

行列除算演算子(行列=行列/行列の場合)

テンプレート引数
P,Q,R演算子右側の行列の高さ, 幅, 要素の型
引数
[in]right演算子の右側
戻り値
結果

◆ operator/() [2/2]

template<size_t M, size_t N, typename T = double>
template<typename R >
ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::operator/ ( const R & right) const
inlineconstexpr

行列除算演算子(行列=行列/スカラーの場合)

テンプレート引数
R演算子右側の要素の型
引数
[in]right演算子の右側
戻り値
結果

◆ operator/=()

template<size_t M, size_t N, typename T = double>
template<typename R >
ArcsMat< M, N, T > & ARCS::ArcsMat< M, N, T >::operator/= ( const R & right)
inlineconstexpr

行列除算代入演算子(行列=行列/スカラーの場合)

テンプレート引数
R演算子右側の要素の型
引数
[in]right演算子の右側
戻り値
結果

◆ operator=() [1/2]

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > & ARCS::ArcsMat< M, N, T >::operator= ( const ArcsMat< M, N, T > & right)
inlineconstexpr

行列代入演算子(サイズと型が同じ同士の行列の場合)

引数
[in]right演算子の右側
戻り値
結果

◆ operator=() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
ArcsMat< M, N, T > & ARCS::ArcsMat< M, N, T >::operator= ( const ArcsMat< P, Q, R > & right)
inlineconstexpr

行列代入演算子(サイズと型が違う行列の場合, エラー検出用の定義)

テンプレート引数
P,Q,R演算子右側の行列の高さ, 幅, 要素の型
引数
[in]right演算子の右側
戻り値
結果

◆ operator[]() [1/2]

template<size_t M, size_t N, typename T = double>
T & ARCS::ArcsMat< M, N, T >::operator[] ( const size_t m)
inlineconstexpr

縦ベクトル添字演算子(縦ベクトルのm番目の要素に値を設定する。A(m,1) = xと同じ意味) 備考:ArcsMatは縦ベクトル優先なので、横ベクトル添字演算子は無い。

引数
[in]m縦方向の要素番号( "1" 始まり)
戻り値
設定後の縦ベクトル

◆ operator[]() [2/2]

template<size_t M, size_t N, typename T = double>
T ARCS::ArcsMat< M, N, T >::operator[] ( const size_t m) const
inlineconstexpr

縦ベクトル添字演算子(縦ベクトルのm番目の要素の値を返す。x = A(m,1)と同じ意味) 備考:ArcsMatは縦ベクトル優先なので、横ベクトル添字演算子は無い。

引数
[in]m縦方向の要素番号( "1" 始まり)
戻り値
要素の値

◆ operator^()

template<size_t M, size_t N, typename T = double>
ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::operator^ ( const int & right) const
inlineconstexpr

行列べき乗演算子(正方行列のべき乗)

引数
[in]right演算子の右側
戻り値
結果

◆ operator~()

template<size_t M, size_t N, typename T = double>
ArcsMat< N, M, T > ARCS::ArcsMat< M, N, T >::operator~ ( void ) const
inlineconstexpr

転置演算子

戻り値
結果

◆ ordercolumn()

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = size_t>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::ordercolumn ( const ArcsMat< M, N, T > & U,
const ArcsMat< P, Q, R > & u )
inlinestaticconstexpr

並び替え指定横ベクトルuが昇順になるように,行列Uの列を並び替える関数 (戻り値渡し版のみ)

テンプレート引数
P,Q,R並び替え指定横ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[in]u並び替え指定横ベクトル
戻り値
出力行列

◆ ordercolumn_and_vec()

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = size_t>
static constexpr void ARCS::ArcsMat< M, N, T >::ordercolumn_and_vec ( ArcsMat< M, N, T > & UY,
ArcsMat< P, Q, R > & uy )
inlinestaticconstexpr

並び替え指定横ベクトルuが昇順になるように,行列Uの列と指定横ベクトルの両方を並び替える関数 (引数渡し版のみ)

テンプレート引数
P,Q,R並び替え指定横ベクトルの高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in,out]uy並び替え指定横ベクトル

◆ orderrow()

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = size_t>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::orderrow ( const ArcsMat< M, N, T > & U,
const ArcsMat< P, Q, R > & u )
inlinestaticconstexpr

並び替え指定縦ベクトルuが昇順になるように,行列Uの行を並び替える関数 (戻り値渡し版のみ)

テンプレート引数
P,Q,R並び替え指定縦ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[in]u並び替え指定縦ベクトル
戻り値
出力行列

◆ orderrow_and_vec()

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = size_t>
static constexpr void ARCS::ArcsMat< M, N, T >::orderrow_and_vec ( ArcsMat< M, N, T > & UY,
ArcsMat< P, Q, R > & uy )
inlinestaticconstexpr

並び替え指定縦ベクトルuが昇順になるように,行列Uの行と指定縦ベクトルの両方を並び替える関数 (引数渡し版のみ)

テンプレート引数
P,Q,R並び替え指定縦ベクトルの高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in,out]uy並び替え指定縦ベクトル

◆ pinv() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< N, M, T > ARCS::ArcsMat< M, N, T >::pinv ( const ArcsMat< M, N, T > & A)
inlinestaticconstexpr

Moore-Penroseの疑似逆行列を返す関数(戻り値返し版)

引数
[in]A入力行列
戻り値
出力行列

◆ pinv() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::pinv ( const ArcsMat< M, N, T > & A,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

Moore-Penroseの擬似逆行列を返す関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]Y出力行列

◆ QR() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr std::tuple< ArcsMat< M, M, T >, ArcsMat< M, N, T > > ARCS::ArcsMat< M, N, T >::QR ( const ArcsMat< M, N, T > & A)
inlinestaticconstexpr

QR分解(タプル返し版)

引数
[in]A入力行列
戻り値
(Q, R) (直交行列, 上三角行列)のタプル

◆ QR() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t MQ, size_t NQ, typename TQ = double, size_t MR, size_t NR, typename TR = double>
static constexpr void ARCS::ArcsMat< M, N, T >::QR ( const ArcsMat< M, N, T > & A,
ArcsMat< MQ, NQ, TQ > & Q,
ArcsMat< MR, NR, TR > & R )
inlinestaticconstexpr

QR分解(引数渡し版) 注意:複素数で縦長行列の場合ではMATLABとは異なる解を出力する

テンプレート引数
MQ,NQ,TQ,MQ,NQ,TQQ,R行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]Qユニタリ行列 Q行列
[out]R上三角行列 R行列

◆ ramp()

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::ramp ( void )
inlinestaticconstexpr

単調増加の縦ベクトルを返す関数

戻り値
1~MMまでの単調増加の縦ベクトル

◆ rank()

template<size_t M, size_t N, typename T = double>
static constexpr size_t ARCS::ArcsMat< M, N, T >::rank ( const ArcsMat< M, N, T > & A,
const T eps = ArcsMat<M,N,T>::EPSILON )
inlinestaticconstexpr

行列の階数を返す関数(戻り値返し版のみ)

引数
[in]A入力行列
[in]epsランク許容誤差(デフォルト値 = EPSILON)
戻り値
結果

◆ ReadOnlyRef()

template<size_t M, size_t N, typename T = double>
const std::array< std::array< T, M >, N > & ARCS::ArcsMat< M, N, T >::ReadOnlyRef ( void ) const
inlineconstexpr

std:arrayの2次元配列データの読み込み専用の参照を返す関数

戻り値
2次元配列データの参照

◆ real()

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::real ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

複素数行列要素の実数部を取得する関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ Schur() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr std::tuple< ArcsMat< M, N, T >, ArcsMat< M, N, T > > ARCS::ArcsMat< M, N, T >::Schur ( const ArcsMat< M, N, T > & A)
inlinestaticconstexpr

複素Schur分解(タプル返し版) この関数はMATLABとは異なる解を出力する、ただしもちろん、A = USU' は成立

引数
[in]A入力行列
戻り値
(ユニタリ行列U, 上三角行列または疑似上三角行列S)のタプル

◆ Schur() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t MU, size_t NU, typename TU = double, size_t MS, size_t NS, typename TS = double>
static constexpr void ARCS::ArcsMat< M, N, T >::Schur ( const ArcsMat< M, N, T > & A,
ArcsMat< MU, NU, TU > & U,
ArcsMat< MS, NS, TS > & S )
inlinestaticconstexpr

複素Schur分解(引数渡し版) この関数はMATLABとは異なる解を出力する、ただしもちろん、A = USU' は成立

テンプレート引数
MU,NU,TU,MS,NS,TS入出力行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]Uユニタリ行列
[out]S上三角行列または疑似上三角行列

◆ Set()

template<size_t M, size_t N, typename T = double>
template<typename T1 , typename... T2>
void ARCS::ArcsMat< M, N, T >::Set ( const T1 & u1,
const T2 &... u2 )
inlineconstexpr

行列要素に値を設定する関数

テンプレート引数
T1,T2要素の型
引数
[in]u1要素1の値
[in]u2要素2以降の値

◆ setcolumn() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::setcolumn ( ArcsMat< M, N, T > & UY,
const ArcsMat< P, Q, R > & u,
const size_t n )
inlinestaticconstexpr

指定した列を縦ベクトルで上書きする関数 (引数渡し版)

テンプレート引数
P,Q,R入力ベクトルの高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in]u入力ベクトル
[in]n上書きしたい列

◆ setcolumn() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::setcolumn ( const ArcsMat< P, Q, R > & u,
const size_t n,
const ArcsMat< M, N, T > & U )
inlinestaticconstexpr

指定した列を縦ベクトルで上書きする関数 (戻り値渡し版)

テンプレート引数
P,Q,R入力ベクトルの高さ, 幅, 要素の型
引数
[in]u入力ベクトル
[in]n上書きしたい列
[in]U入力行列
戻り値
出力行列

◆ SetHorizontalVec()

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
void ARCS::ArcsMat< M, N, T >::SetHorizontalVec ( const ArcsMat< P, Q, R > & w,
size_t m,
size_t n )
inlineconstexpr

指定した先頭位置に横ベクトルを埋め込む関数

テンプレート引数
P,Q,R縦ベクトルの高さ, 幅, 要素の型
引数
[in]w横ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目

◆ sethvector() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::sethvector ( ArcsMat< M, N, T > & UY,
const ArcsMat< P, Q, R > & u,
const size_t m,
const size_t n )
inlinestaticconstexpr

指定位置に横ベクトルで上書きする関数 (引数渡し版)

テンプレート引数
P,Q,R入力ベクトルの高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in]u入力ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目

◆ sethvector() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::sethvector ( const ArcsMat< P, Q, R > & u,
const size_t m,
const size_t n,
const ArcsMat< M, N, T > & U )
inlinestaticconstexpr

指定位置に横ベクトルで上書きする関数 (戻り値渡し版)

テンプレート引数
P,Q,R入力ベクトルの高さ, 幅, 要素の型
引数
[in]u入力ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目
[in]U入力行列
戻り値
出力行列

◆ setrow() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::setrow ( ArcsMat< M, N, T > & UY,
const ArcsMat< P, Q, R > & u,
const size_t m )
inlinestaticconstexpr

指定した行を横ベクトルで上書きする関数 (引数渡し版)

テンプレート引数
P,Q,R入力ベクトルの高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in]u入力ベクトル
[in]m上書きしたい行

◆ setrow() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::setrow ( const ArcsMat< P, Q, R > & u,
const size_t m,
const ArcsMat< M, N, T > & U )
inlinestaticconstexpr

指定した行を横ベクトルで上書きする関数 (戻り値渡し版)

テンプレート引数
P,Q,R入力ベクトルの高さ, 幅, 要素の型
引数
[in]u入力ベクトル
[in]m上書きしたい行
[in]U入力行列
戻り値
出力行列

◆ setsubmatrix() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::setsubmatrix ( ArcsMat< M, N, T > & UY,
const ArcsMat< P, Q, R > & U,
const size_t m,
const size_t n )
inlinestaticconstexpr

小行列を行列の指定位置に上書きする関数 (引数渡し版)

テンプレート引数
P,Q,R小行列の高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in]U書き込む小行列
[in]m上書きしたい縦位置(小行列の上)
[in]n上書きしたい横位置(小行列の左)

◆ setsubmatrix() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::setsubmatrix ( const ArcsMat< P, Q, R > & Us,
const size_t m,
const size_t n,
const ArcsMat< M, N, T > & U )
inlinestaticconstexpr

小行列を行列の指定位置に上書きする関数 (戻り値渡し版)

テンプレート引数
P,Q,R小行列の高さ, 幅, 要素の型
引数
[in]Us書き込む小行列
[in]m上書きしたい縦位置(小行列の上)
[in]n上書きしたい横位置(小行列の左)
[in]U入力行列
戻り値
出力行列

◆ SetVerticalVec()

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
void ARCS::ArcsMat< M, N, T >::SetVerticalVec ( const ArcsMat< P, Q, R > & v,
const size_t m,
const size_t n )
inlineconstexpr

指定した先頭位置に縦ベクトルを埋め込む関数

テンプレート引数
P,Q,R縦ベクトルの高さ, 幅, 要素の型
引数
[in]v縦ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目

◆ setvvector() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::setvvector ( ArcsMat< M, N, T > & UY,
const ArcsMat< P, Q, R > & u,
const size_t m,
const size_t n )
inlinestaticconstexpr

指定位置に縦ベクトルで上書きする関数 (引数渡し版)

テンプレート引数
P,Q,R入力ベクトルの高さ, 幅, 要素の型
引数
[in,out]UY入出力行列
[in]u入力ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目

◆ setvvector() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::setvvector ( const ArcsMat< P, Q, R > & u,
const size_t m,
const size_t n,
const ArcsMat< M, N, T > & U )
inlinestaticconstexpr

指定位置に縦ベクトルで上書きする関数 (戻り値渡し版)

テンプレート引数
P,Q,R入力ベクトルの高さ, 幅, 要素の型
引数
[in]u入力ベクトル
[in]m先頭位置 m行目
[in]n先頭位置 n列目
[in]U入力行列
戻り値
出力行列

◆ shiftdown() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::shiftdown ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y,
const size_t m = 1 )
inlinestaticconstexpr

行列の各要素を下にm行分シフトする関数(上段の行はゼロになる)(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列
[in]mシフトする行数(デフォルト値 = 1)

◆ shiftdown() [2/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::shiftdown ( const ArcsMat< M, N, T > & U,
const size_t m = 1 )
inlinestaticconstexpr

行列の各要素を下にm行分シフトする関数(上段の行はゼロになる)(戻り値渡し版)

引数
[in]U入力行列
[in]mシフトする行数(デフォルト値 = 1)
戻り値
出力行列

◆ shiftleft() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::shiftleft ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y,
const size_t n = 1 )
inlinestaticconstexpr

行列の各要素を左にn列分シフトする関数(右段の列はゼロになる)(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列
[in]nシフトする列数(デフォルト値 = 1)

◆ shiftleft() [2/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::shiftleft ( const ArcsMat< M, N, T > & U,
const size_t n = 1 )
inlinestaticconstexpr

行列の各要素を左にn列分シフトする関数(右段の列はゼロになる)(戻り値渡し版)

引数
[in]U入力行列
[in]nシフトする列数(デフォルト値 = 1)
戻り値
Y 出力行列

◆ shiftright() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::shiftright ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y,
const size_t n = 1 )
inlinestaticconstexpr

行列の各要素を右にn列分シフトする関数(左段の列はゼロになる)(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列
[in]nシフトする列数(デフォルト値 = 1)

◆ shiftright() [2/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::shiftright ( const ArcsMat< M, N, T > & U,
const size_t n = 1 )
inlinestaticconstexpr

行列の各要素を右にn列分シフトする関数(左段の列はゼロになる)(戻り値渡し版)

引数
[in]U入力行列
[in]nシフトする列数(デフォルト値 = 1)
戻り値
出力行列

◆ shiftup() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::shiftup ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y,
const size_t m = 1 )
inlinestaticconstexpr

行列の各要素を上にm行分シフトする関数(下段の行はゼロになる)(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列
[in]mシフトする行数(デフォルト値 = 1)

◆ shiftup() [2/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::shiftup ( const ArcsMat< M, N, T > & U,
const size_t m = 1 )
inlinestaticconstexpr

行列の各要素を上にm行分シフトする関数(下段の行はゼロになる)(戻り値渡し版)

引数
[in]U入力行列
[in]mシフトする行数(デフォルト値 = 1)
戻り値
Y 出力行列

◆ sign() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::sign ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列要素の符号関数を計算する関数(戻り値渡し版)

引数
[in]U入力行列
戻り値
Y 出力行列

◆ sign() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::sign ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

行列要素の符号関数を計算する関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ sin() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::sin ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列要素の正弦関数を計算する関数(戻り値渡し版)

引数
[in]U入力行列
戻り値
Y 出力行列

◆ sin() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::sin ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

行列要素の正弦関数を計算する関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ sqrt() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::sqrt ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列要素の平方根を計算する関数(戻り値渡し版)

引数
[in]U入力行列
戻り値
Y 出力行列

◆ sqrt() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::sqrt ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

行列要素の平方根を計算する関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ StoreArray() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, typename R = double>
void ARCS::ArcsMat< M, N, T >::StoreArray ( std::array< R, P > & Array) const
inlineconstexpr

縦ベクトルを1次元std::array配列に書き込む関数

テンプレート引数
P,R配列の長さ, 要素の型
引数
[out]Arraystd::array配列(縦MM×横1)

◆ StoreArray() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
void ARCS::ArcsMat< M, N, T >::StoreArray ( std::array< std::array< R, P >, Q > & Array) const
inlineconstexpr

行列を2次元std::array配列に書き込む関数

テンプレート引数
P,Q,R配列の高さ, 幅, 要素の型
引数
[in]Arraystd::array配列(縦MM×横NN)

◆ sum()

template<size_t M, size_t N, typename T = double>
static constexpr T ARCS::ArcsMat< M, N, T >::sum ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列要素の総和を返す関数(戻り値渡し版のみ)

引数
[in]U入力行列
戻り値
結果

◆ sumcolumn() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< 1, N, T > ARCS::ArcsMat< M, N, T >::sumcolumn ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

各列の総和を計算して横ベクトルを出力する関数 (戻り値渡し版)

引数
[in]U入力行列
戻り値
出力ベクトル

◆ sumcolumn() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::sumcolumn ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & y )
inlinestaticconstexpr

各列の総和を計算して横ベクトルを出力する関数 (引数渡し版)

テンプレート引数
P,Q,R出力ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[out]y出力ベクトル

◆ sumrow() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, 1, T > ARCS::ArcsMat< M, N, T >::sumrow ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

各行の総和を計算して縦ベクトルを出力する関数 (戻り値渡し版)

引数
[in]U入力行列
戻り値
出力ベクトル

◆ sumrow() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::sumrow ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & y )
inlinestaticconstexpr

各行の総和を計算して縦ベクトルを出力する関数 (引数渡し版)

テンプレート引数
P,Q,R出力ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[out]y出力ベクトル

◆ SVD() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr std::tuple< ArcsMat< M, M, T >, ArcsMat< M, N, T >, ArcsMat< N, N, T > > ARCS::ArcsMat< M, N, T >::SVD ( const ArcsMat< M, N, T > & A)
inlinestaticconstexpr

SVD特異値分解(タプル返し版)

引数
[in]A入力行列
戻り値
(U, S, V) (U行列, Σ行列, V行列)のタプル

◆ SVD() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t LoopMax = 100*std::max(M,N), size_t MU, size_t NU, typename TU = double, size_t MS, size_t NS, typename TS = double, size_t MV, size_t NV, typename TV = double>
static constexpr void ARCS::ArcsMat< M, N, T >::SVD ( const ArcsMat< M, N, T > & A,
ArcsMat< MU, NU, TU > & U,
ArcsMat< MS, NS, TS > & S,
ArcsMat< MV, NV, TV > & V )
inlinestaticconstexpr

SVD特異値分解(引数渡し版) 注意:複素数で非正方行列の場合ではMATLABとは異なる解を出力する

テンプレート引数
LoopMaxループ打ち切り最大回数 デフォルト値 = 100*max(M,N)
MU,NU,TU,MS,NS,TS,MV,NV,TVU,Σ,V行列の高さ, 幅, 要素の型
引数
[in]A入力行列
[out]UU行列
[out]SΣ行列
[out]VV行列

◆ swapcolumn() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr void ARCS::ArcsMat< M, N, T >::swapcolumn ( ArcsMat< M, N, T > & UY,
const size_t n1,
const size_t n2 )
inlinestaticconstexpr

指定した列と列を入れ替える関数 (引数渡し版)

引数
[in,out]UY入出力行列
[in]n1指定列1
[in]n2指定列2

◆ swapcolumn() [2/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::swapcolumn ( const size_t n1,
const size_t n2,
const ArcsMat< M, N, T > & U )
inlinestaticconstexpr

指定した列と列を入れ替える関数 (戻り値渡し版)

引数
[in]n1指定列1
[in]n2指定列2
[in]U入力行列
戻り値
Y 出力行列

◆ swaprow() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr void ARCS::ArcsMat< M, N, T >::swaprow ( ArcsMat< M, N, T > & UY,
const size_t m1,
const size_t m2 )
inlinestaticconstexpr

指定した行と行を入れ替える関数 (引数渡し版)

引数
[in,out]UY入出力行列
[in]m1指定行1
[in]m2指定行2

◆ swaprow() [2/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::swaprow ( const size_t m1,
const size_t m2,
const ArcsMat< M, N, T > & U )
inlinestaticconstexpr

指定した行と行を入れ替える関数 (戻り値渡し版)

引数
[in]m1指定行1
[in]m2指定行2
[in]U入力行列
戻り値
Y 出力行列

◆ tan() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::tan ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列要素の正接関数を計算する関数(戻り値渡し版)

引数
[in]U入力行列
戻り値
Y 出力行列

◆ tan() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::tan ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

行列要素の正接関数を計算する関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ tanh() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::tanh ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列要素の双曲線正接関数を計算する関数(戻り値渡し版)

引数
[in]U入力行列
戻り値
Y 出力行列

◆ tanh() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::tanh ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

行列要素の双曲線正接関数を計算する関数(引数渡し版)

テンプレート引数
P,Q,R出力行列の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ tp() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< N, M, T > ARCS::ArcsMat< M, N, T >::tp ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

転置行列を返す関数 (戻り値渡し版)

引数
[in]U入力行列
戻り値
Y 出力行列

◆ tp() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t P, size_t Q, typename R = double>
static constexpr void ARCS::ArcsMat< M, N, T >::tp ( const ArcsMat< M, N, T > & U,
ArcsMat< P, Q, R > & Y )
inlinestaticconstexpr

転置行列を返す関数 (引数渡し版)

テンプレート引数
P,Q,R出力の高さ, 幅, 要素の型
引数
[in]U入力行列
[out]Y出力行列

◆ trace()

template<size_t M, size_t N, typename T = double>
static constexpr T ARCS::ArcsMat< M, N, T >::trace ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

行列のトレースを返す関数(戻り値渡し版のみ)

引数
[in]U入力行列
戻り値
結果

◆ vec() [1/2]

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M *N, 1, T > ARCS::ArcsMat< M, N, T >::vec ( const ArcsMat< M, N, T > & U)
inlinestaticconstexpr

vec作用素(行列→縦ベクトル) (戻り値返し版)

引数
[in]U入力行列
[out]y出力ベクトル

◆ vec() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t MY, size_t NY, typename TY = double>
static constexpr void ARCS::ArcsMat< M, N, T >::vec ( const ArcsMat< M, N, T > & U,
ArcsMat< MY, NY, TY > & y )
inlinestaticconstexpr

vec作用素(行列→縦ベクトル) (引数渡し版)

テンプレート引数
MY,NY,TY出力ベクトルの高さ, 幅, 要素の型
引数
[in]U入力行列
[out]y出力ベクトル

◆ vecinv() [1/2]

template<size_t M, size_t N, typename T = double>
template<size_t MY, size_t NY>
static constexpr ArcsMat< MY, NY, T > ARCS::ArcsMat< M, N, T >::vecinv ( const ArcsMat< M, N, T > & u)
inlinestaticconstexpr

vec作用素の逆(縦ベクトル→行列) (戻り値返し版)

テンプレート引数
MY,NY出力行列の高さ, 幅
引数
[in]u入力縦ベクトル
戻り値
再構成後の行列

◆ vecinv() [2/2]

template<size_t M, size_t N, typename T = double>
template<size_t MY, size_t NY, typename TY = double>
static constexpr void ARCS::ArcsMat< M, N, T >::vecinv ( const ArcsMat< M, N, T > & u,
ArcsMat< MY, NY, TY > & Y )
inlinestaticconstexpr

vec作用素の逆(縦ベクトル→行列) (引数渡し版)

テンプレート引数
MY,NY,TY出力行列の高さ, 幅, 要素の型
引数
[in]u入力縦ベクトル
[out]Y再構成後の行列

◆ Zeroing()

template<size_t M, size_t N, typename T = double>
void ARCS::ArcsMat< M, N, T >::Zeroing ( const T eps = ArcsMat<M,N,T>::EPSILON)
inlineconstexpr

ゼロに近い要素を完全にゼロにする関数

引数
[in]eps許容誤差 (デフォルト値 = EPSILON)
戻り値
結果

◆ ZeroingTriLo()

template<size_t M, size_t N, typename T = double>
void ARCS::ArcsMat< M, N, T >::ZeroingTriLo ( const T eps = ArcsMat<M,N,T>::EPSILON)
inlineconstexpr

下三角(主対角除く)に限定して、ゼロに近い要素を完全にゼロにする関数

引数
[in]eps許容誤差 (デフォルト値 = EPSILON)
戻り値
結果

◆ zeros()

template<size_t M, size_t N, typename T = double>
static constexpr ArcsMat< M, N, T > ARCS::ArcsMat< M, N, T >::zeros ( void )
inlinestaticconstexpr

m行n列の零行列を返す関数

戻り値
零行列

フレンドと関連関数の詳解

◆ operator*

template<size_t M, size_t N, typename T = double>
friend ArcsMat< M, N, T > operator* ( const T & left,
const ArcsMat< M, N, T > & right )
friend

行列乗算演算子 (スカラー*行列の場合)

引数
[in]left左側のスカラー値
[in]right右側の行列

◆ operator+

template<size_t M, size_t N, typename T = double>
friend ArcsMat< M, N, T > operator+ ( const T & left,
const ArcsMat< M, N, T > & right )
friend

行列加算演算子 (スカラー+行列の場合)

引数
[in]left左側のスカラー値
[in]right右側の行列

◆ operator-

template<size_t M, size_t N, typename T = double>
friend ArcsMat< M, N, T > operator- ( const T & left,
const ArcsMat< M, N, T > & right )
friend

行列減算演算子 (スカラー-行列の場合)

引数
[in]left左側のスカラー値
[in]right右側の行列

◆ operator/

template<size_t M, size_t N, typename T = double>
friend void operator/ ( const T & left,
const ArcsMat< M, N, T > & right )
friend

行列除算演算子 (スカラー/行列の場合)

引数
[in]left左側のスカラー値
[in]right右側の行列

このクラス詳解は次のファイルから抽出されました: