gijyutsu-keisan.com

2.行列計算ライブラリの対象

本サイトで公開しているExcel用の行列計算ライブラリ“calcmatrix_rev*.xlsm”(暫定版)の使い方について説明します (暫定版の公開ですので、バグをとりきれていません。お試し程度でお使いください)。
本ライブラリが対象とする計算は次の通りです。

行列基本操作
FuncAryExtRow(mat1, rowExt, Optional NumFlag) 二次配列から指定行を抽出
FuncAryExtCol(mat1, colExt, Optional NumFlag) 二次配列から指定列を抽出
FuncMatTrans(mat1) 行列の転置
ExchgAryRow(matA, IdEx1, IdEx2) 配列の指定行交換(Subプロシージャ)
ExchgAryCol(matA, IdEx1, IdEx2) 配列の指定列交換(Subプロシージャ)
FuncChkSym(matA, Optional rlim) 対称行列チェック
行列基本計算
FuncMatSum(mat1, mat2) 行列の和
FuncMatDif(mat1, mat2) 行列の差
FuncMatScl(mat1, scl) 行列のスカラー倍
FuncMatPro(mat1, mat2, Optional rlim) 行列の積
FuncMatHad(mat1, mat2, Optional rlim) アダマール積
FuncMatDiad(mat1, mat2, Optional rlim) ダイアド積
ベクトル演算
FuncVecDot(vec1, vec2) ベクトルの内積
FuncVecNom(vec1) ベクトルの正規化(大きさを1にする)
FuncVecRot(vec1, ang, Optional ax) ベクトルの回転
数列(等間隔)の作成
FuncLnSpaceN(rng1, rng2, Nsep) 等間隔数列の作成(分割数指定)
FuncLnSpaceP(rng1, rng2, dX, Optional dir) 等間隔数列の作成(ピッチ指定)
FuncLogSpaceN(rng1, rng2, Nsep) 対数等間隔数列の作成
行列の作成
FuncMatId(order) 単位行列
FuncMatZeros(Nr, Nc) 零行列
FuncMatOnes(Nr, Nc) 要素がすべて1の行列
FuncMatRnd(Rmax, vartype, Flag, Nr, Optional Nc) 乱数行列
FuncMatBaseTr(N1, N2, order) 基底変換行列(行/列入れ替え)
FuncMatBaseMu(N1, scl, order) 基底変換行列(スカラー倍)
FuncMatBaseAd(N1, N2, scl, order) 基底変換行列(追加)
FuncMatGivens(N1, N2, fcos, fsin, order) ギブンス変換行列
FuncMatGauss(matA, colNo) ガウス変換行列
ガウス消去法などで用いる行列で、単独で利用することはないため説明は割愛します。
変換行列
FuncMatInv(mat1, Optional pivFlag, Optional plim, Optional rlim) 逆行列計算: ガウスジョルダン法
CalcMatHH(matH, vecA, ByVal rowNo, Optional rlim) ハウホルダー行列(Subプロシージャ)
FuncMatHess(mat1, Optional symFlag, Optional rlim) ハウスホルダーによるヘッセンベルグ変換
FuncMatBiDiag(mat1, Optional pivFlag, Optional plim, Optional rlim) ハウスホルダー変換による二重対角化
スケーリング / ピボッティング(各行列計算の過程で用いるもので、説明は割愛します)
FuncNoSclRow(matA, IdP, Optional IdE) 行内最大成分取得
FuncNoSclCol(matA, IdP, Optional IdE) 列内最大成分取得
FuncMatSclRow(matA, scl, IdP, Optional IdE, Optional inv, Optional rlim) 行スケーリング
FuncMatSclCol(matA, scl, IdP, Optional IdE, Optional inv, Optional rlim) 列スケーリング
FuncNoPivRow(matA, IdP, Optional IdE) 行交換番号取得
FuncNoPivCol(matA, IdP, Optional IdE) 列交換番号取得
FuncNoPivMat(matA, IdP, Optional IdS, Optional IdEr, Optional IdEc) 行列交換番号取得
FuncMatPivRow(matA, IdP, IdEx) 行ピボット処理
FuncMatPivCol(matA, IdP, IdEx) 列ピボット処理
FuncMatPivMat(matA, IdP, IdEr, IdEc) 完全ピボット処理
CalcMatPermRow(matPr, Ndim, recPiv, Optional recScl, Optional inv) 行変換行列
CalcMatPermCol(matPc, Ndim, recPiv, Optional recScl, Optional inv) 列変換行列
行列の分解
FuncMatLUCrout(mat1, Optional pivFlag, Optional plim, Optional rlim, Optional outFlag) LU分解:クラウト法
FuncMatLUGE(mat1, Optional pivFlag, Optional plim, Optional rlim, Optional outFlag) LU分解:ガウス消去法
FuncMatCholesky(mat1, Optional rlim) LU分解:修正コレスキー分解
FuncMatIcCholesky(mat1, Optional slim) LU分解:不完全コレスキー分解
FuncMatQRGS(mat1) QR分解:グラムシュミット法
FuncMatQRHH(mat1, Optional pivFlag, Optional plim, Optional rlim, Optional outFlag) QR分解:ハウスホルダー法
連立方程式の解法(直接法)
FuncMatSimGE(mat1, vec1, Optional pivFlag, Optional plim, Optional rlim) ガウス消去法
FuncMatSimGJ(mat1, mat2, Optional pivFlag, Optional plim, Optional rlim) ガウス・ジョルダン法
FuncMatSimLU(mat1, mat2, Optional method, Optional pivFlag, Optional plim, Optional rlim) LU分解
FuncMatSimInv(mat1, mat2, Optional pivFlag, Optional plim, Optional rlim) 逆行列利用
FuncMatSimQR(mat1, vec1, Optional method, Optional pivFlag, Optional plim, Optional rlim) QR分解法
CalcMatBackLU(matOut, ByVal matL, ByVal matU, ByVal matB, Optional rankA, Optional rlim) 前進→後退代入
(連立方程式を解く途中の関数であり、説明省略します)
CalcMatBack(matOut, ByVal matA, ByVal matB, Optional rankA, Optional rlim) 後退代入
(連立方程式を解く途中の関数であり、説明省略します)
連立方程式の解法(反復法)
FuncMatSimGS(mat1, vec1, Optional relax, Optional slim, Optional rlim, Optional Nres) ガウス・ザイデル法
FuncMatCG(mat1, mat2, Optional slim, Optional Nres) 共役勾配法(CG法)
FuncMatPCG(mat1, mat2, Optional slim, Optional Nres) 前処理付き共役勾配法(PCG法)
固有値計算
FuncEigQR(mat1, Optional outFlag, Optional slim, Optional Nres, Optional pivFlag, Optional plim, Optional rlim) QR法(非対称)
FuncEigPow(mat1, Optional outFlag, Optional slim, Optional Nres, Optional rlim) べき乗法
FuncEigJacobi(mat1, Optional outFlag, Optional slim, Optional Nres, Optional rlim) ヤコビ法
CalcMatInvIter(matX, ByVal matA, ByVal vecEig, Optional method, Optional slim, Optional Nres, Optional rlim) 逆反復法(Subプロシージャ)
QR法の固有ベクトル算出で用いており、説明は割愛します。

参考文献