?TRSM_

List

strsm_単精度実 数三角行列を係数行列とする行列方程式を解く
dtrsm_倍精度実 数三角行列を係数行列とする行列方程式を解く
ctrsm_単精度複素数三角行列を係数行列とする行列方程式を解く
ztrsm_倍精度複素数三角行列を係数行列とする行列方程式を解く

概略

三角行列を係数とする行列方程式を解きます。Bに単位行列を指定して渡すと、逆行列が計算できます。(数値計算上、逆行列を持つ方が不利になる場合が多いのでほんとうに必要か(特に三角行列なので)を良く考えて使う必要はありますが)

計算式

B := alpha A^-1 B
または
B := alpha B A^-1

プロトタイプ宣言

void strsm_(char *side, char *uplo, char *trans, char *diag, int *m, int *n,
float *alpha, float *A, int *ldA, float *B, int *ldB);

void dtrsm_(char *side, char *uplo, char *trans, char *diag, int *m, int *n,
double *alpha, double *A, int *ldA, double *B, int *ldB);

void ctrsm_(char *side, char *uplo, char *trans, char *diag, int *m, int *n,
complex *alpha, complex *A, int *ldA, complex *B, int *ldB);

void ztrsm_(char *side, char *uplo, char *trans, char *diag, int *m, int *n,
doublecomplex *alpha, doublecomplex *A, int *ldA, doublecomplex *B, int *ldB);

引数/戻り値

変数名概要
side char* 行列Aがどちらに来るか ("L"(左側 A^-1 B),"R"(右側 B A^-1)から選択)
uplo char* 行列Aのどの部分を使うか指定 ("L"(下三角),"U"(上三角)から選択)
trans char* 行列Aの転置を指定 ("N"(そのまま),"T"(転置),"C"(共役転置)から選択)
diag char* 単位三角行列か指定 ("U"(単位三角行列),"N"(そうでない)から選択)
m int* 行列Bの行数 行列Aの行数・列数
n int* 行列Bの列数
alpha double*スカラーalpha
A double*行列Aの先頭ポインタ
ldA int* Aのleading dimension (通常は行数を指定すれば良い)
B double*行列Bの先頭ポインタ
ldB int* Bのleading dimension (通常は行数を指定すれば良い)
戻り値void