行列(二次元配列)演算関数一覧

関数名 dmat_add
概略 行列の和を計算する
ヘッダ matrix.h
書式 double **dmat_add(double **mat1, double **mat2, double **mat3, int m, int n)
機能説明 mat1[0..m-1][0..n-1]に対して和を記憶する.
mat1[i][j]=mat2[i][j]+mat3[i][j] for any i,j
引き数 mat1,mat2,mat3: 行列へのポインタ
m:行数 n:列数
戻り値 mat1へのポインタ

関数名 dmat_alloc
概略 行列(二次元配列)の領域を確保する
ヘッダ matrix.h
書式 double **dmat_alloc(int m, int n)
機能説明 double型でm行n列の二次元配列の領域を確保し,すべての要素を0に初期化する.
引き数 m:行数 n:列数
戻り値 行列へのポインタ
double **mat; /* 変数の宣言 */
mat = dmat_alloc(2,3); /* 2行3列の領域確保 */
/* Calculation */
dmat_free(mat,2,3); /* 領域の解放 */

関数名 dmat_clear
概略 零行列にする
ヘッダ matrix.h
書式 double **dmat_clear(double **mat, int m, int n)
機能説明 mat[0..m-1][0..n-1]の全要素を零に初期化する.
引き数 mat: 行列へのポインタ
m:行数 n:列数
戻り値 matへのポインタ

関数名 dmat_col_swap
概略 列要素を入れ替える
ヘッダ matrix.h
書式 double **dmat_col_swap(double **mat, int m, int j1, int j2)
機能説明 matのi列とj列を入れ替える.すなわちmat[i][j1] <-> mat[i][j2]
引き数 mat: 行列へのポインタ m:行サイズ j1,j2:交換する列番号(<列数n)
戻り値 matへのポインタ

関数名 dmat_copy
概略 行列の要素を複写する
ヘッダ matrix.h
書式 double **dmat_copy(double **mat1, double **mat2, int m, int n)
機能説明 mat1[i][j]:=mat2[i][j] for any i,j
引き数 mat1,mat2: 行列へのポインタm:行数 n:列数
戻り値 mat1へのポインタ

関数名 dmat_free
概略 行列の領域を解放する
ヘッダ matrix.h
書式 void dmat_free(double **mat, int m, int n)
機能説明 二次元配列matのメモリ領域を開放する
引き数 mat: 行列へのポインタ m:行数 n:列数
戻り値 なし

関数名 dmat_identity
概略 単位行列化する
ヘッダ matrix.h
書式 double **dmat_identity(double **mat, int n)
機能説明 dmat_clear(mat,n,n); and then
mat[i][i]:=1 for any i.
引き数 mat: 一次元配列へのポインタ n: 行列のサイズ
戻り値 matへのポインタ

関数名 dmat_mul
概略 行列の積を求める
ヘッダ matrix.h
書式 double **dmat_mul(double **mat1, double **mat2, double **mat3, int m, int p, int n)
機能説明 mat1[0..m-1][0..n-1]
mat2[0..m-1][0..p-1]
mat3[0..p-1][0..n-1]
mat1[i][j] = sum of mat2[i][k]*mat3[k][j] for all k
引き数 mat1,mat2,mat3: 行列へのポインタ m:行数 n:列数
戻り値 mat1へのポインタ

関数名 dmat_print
概略 行列を表示する
ヘッダ matrix.h
書式 void dmat_print(double **mat, int m, int n)
機能説明 mat[0..m-1][0..n-1]の行列を表示する
引き数 mat: 行列へのポインタ
m:行数 n:列数
戻り値 なし

関数名 dmat_sub
概略 行列の差を求める
ヘッダ matrix.h
書式 double **dmat_sub(double **mat1, double **mat2, double **mat3, int m, int n)
機能説明 mat1[0..m-1][0..n-1]に二つの行列の差を記憶する.
mat1[i][j]:=mat2[i][j]-mat3[i][j] for any i,j
引き数 mat1,mat2,mat3: 行列へのポインタ
m:行数 n:列数
戻り値 mat1へのポインタ

関数名 dmat_mul_scalar
概略 行列をスカラー倍する
ヘッダ matrix.h
書式 double **dmat_mul_scalar(double **mat, double c, int m, int n)
機能説明 mat[i][j] := c * mat[i][j] for any i,j
要素は上書きされる
引き数 mat: 行列 c: 実数倍 m: 行数 n: 列数
戻り値 matへのポインタ

関数名 dmat_mul_aaT
概略 行列の積
ヘッダ matrix.h
書式 double **dmat_mul_aaT(double **aaT, double **a, int m, int n)
機能説明 aaT[0..m-1][0..m-1]にa[0..m-1][0..n-1]とその転置行列との積を代入する.
aaT := a * Transpose(a)
引き数 aaT: 2次元配列へのポインタ([0..m-1][0..m-1])
a: 行列へのポインタ([0..m-1][0..n-1])
m:行数, n:列数
戻り値 aaTへのポインタ

関数名 dmat_mul_aTa
概略 行列の積
ヘッダ matrix.h
書式 double **dmat_mul_aTa(double **aTa, double **a, int m, int n)
機能説明 aTa[0..n-1][0..n-1]にa[0..m-1][0..n-1]の積を代入する.
aTa := aT * a
引き数 aTa: 2次元配列へのポインタ
a: 行列へのポインタ
m:行数, n:列数
戻り値 aTaへのポインタ

関数名 dmat_mul_aTb
概略 行列とベクトルの積
ヘッダ matrix.h
書式 double *dmat_mul_aTb(double *aTb, double **a, double *b, int m, int n)
機能説明 a[0..m-1][0..n-1]の転置行列とb[0..m-1]の積を求め,aTb[0..n-1]に記憶する
aTb := a * b
最小2乗解を求めるときに用いる.
引き数 aTb, b: 一次元配列へのポインタ
a: 行列へのポインタ
m:行数, n:列数
戻り値 aへのポインタ

関数名 dmat_mul_vector
概略 行列とベクトルの積
ヘッダ matrix.h
書式 double *dmat_mul_vector(double *a, double **mat, double *b, int m, int n)
機能説明 mat[0..m-1][0..n-1]とb[0..n-1]の積をa[0..m-1]に記憶する.
a := mat * b
引き数 a,b: 一次元配列へのポインタ
mat: 行列へのポインタ
m:行数, n:列数
戻り値 aへのポインタ

関数名 dmat_norm
概略 行列の2乗ノルムを求める
ヘッダ matrix.h
書式 double dmat_norm(double **mat, int m, int n)
機能説明 行列の2乗ノルムを求める. sqrt(sum of mat[i][j]^2 for all i,j)
引き数 mat: 行列へのポインタm:行数 n:列数
戻り値 2乗ノルム

関数名 dmat_row_swap
概略 ある行の中から絶対値最大の要素位置を求める
ヘッダ matrix.h
書式 double **dmat_row_swap(double **mat, int i1, int i2, int n)
機能説明 The i1-th row is swapped with the i2-th row.
swap(mat[i1][j],mat[i2][j]) for j=0..n-1
引き数 mat: 行列へのポインタm:行数 n:列数
戻り値 matへのポインタ

関数名 dmat_row_abs_max_num
概略 ある行の中から絶対値最大の要素位置を求める
ヘッダ matrix.h
書式 int dmat_row_abs_max_num(double **mat, int i, int n)
機能説明 2乗ノルム
引き数 mat: 行列へのポインタm:行数 n:列数
戻り値 列番号を返す

関数名 dmat_trace
概略 行列のトレースを求める.
ヘッダ matrix.h
書式 double dmat_trace(double **mat, int n)
機能説明 mat[0..n-1][0..n-1]のトレースを求める.
sum of mat[i][i] for i=0..n-1
引き数 mat: 行列へのポインタm:行数 n:列数
戻り値 2乗ノルム

関数名 dmat_trans
概略 行列の転置を求める
ヘッダ matrix.h
書式 double **dmat_trans(double **mat1, double **mat2, int m, int n)
機能説明 mat1[0..m-1][0..n-1]に転置行列を記憶する
mat1[i][j] := mat2[j][i] (i=0..m-1, j=0..n-1)
引き数 mat: 行列へのポインタm:行数 n:列数
戻り値 mat1へのポインタ

関数名 dmat_rx
概略 回転行列
ヘッダ matrot.h
書式 double **dmat_rx(double **mat, double rad)
機能説明 x軸まわりに角度radの回転行列を求める
引き数 mat: 2次元配列へのポインタrad: x軸まわりの回転角度[単位rad]
戻り値 matへのポインタ

関数名 dmat_ry
概略 回転行列
ヘッダ matrot.h
書式 double **dmat_ry(double **mat, double rad)
機能説明 y軸まわりに角度radの回転行列を求める
引き数 mat: 2次元配列へのポインタrad: y軸まわりの回転角度[単位rad]
戻り値 matへのポインタ

関数名 dmat_rz
概略 回転行列
ヘッダ matrot.h
書式 double **dmat_rz(double **mat, double rad)
機能説明 z軸まわりに角度radの回転行列を求める
引き数 mat: 2次元配列へのポインタrad: z軸まわりの回転角度[単位rad]
戻り値 matへのポインタ

関数名 dmat_is_rot
概略 回転行列か否かを評価する
ヘッダ matrot.h
書式 int dmat_is_rot(double **mat, int n, double eps)
機能説明
引き数 mat: 2次元配列へのポインタn: 行列のサイズeps: 評価の閾値
戻り値 TRUE / FALSE

関数名 dmat_is_orthogonal
概略 直行行列か否かを評価する
ヘッダ matrot.h
書式 int dmat_is_orthogonal(double **u, int m, int n, double eps)
機能説明
引き数 mat: 2次元配列へのポインタn: 行サイズn: 列サイズeps: 評価の閾値
戻り値 TRUE / FALSE

関数名 dmat_is_identity
概略 単位行列か否かを評価する
ヘッダ matrot.h
書式 int dmat_is_identity( double **mat, int n, double eps )
機能説明
引き数 mat: 2次元配列へのポインタn: 行列サイズeps: 評価の閾値
戻り値 TRUE / FALSE

関数名 dmat_from_RollPitchYaw
概略 ロール・ピッチ・ヨー角から回転行列を求める
ヘッダ matrot.h
書式 double **dmat_from_RollPitchYaw(double **mat, double *rad)
機能説明
引き数 rad: ロール・ピッチ・ヨー角[rad]mat: 3行3列の2次元配列へのポインタ
戻り値 matへのポインタ

関数名 dmat_to_RollPitchYaw
概略 回転行列からロール・ピッチ・ヨー角を求める
ヘッダ matrot.h
書式 double *dmat_to_RollPitchYaw(double *rad, double **mat)
機能説明 2乗ノルム
引き数 rad: ロール・ピッチ・ヨー角[rad]mat: 3行3列の2次元配列へのポインタ
戻り値 radへのポインタ

関数名 dmat_to_AxisAngle
概略 回転行列から回転軸とその周りの回転角を求める
ヘッダ matrot.h
書式 double *dmat_to_AxisAngle(double *rad, double **mat)
機能説明 2乗ノルム
引き数 rad: ロール・ピッチ・ヨー角[rad]mat: 3行3列の2次元配列へのポインタ
戻り値 radへのポインタ

関数名 dmat_from_AxisAngle
概略 回転軸とその周りの回転角から回転行列を求める
ヘッダ matrot.h
書式 double **dmat_from_AxisAngle(double **mat, double *rad)
機能説明 2乗ノルム
引き数 rad: ロール・ピッチ・ヨー角[rad]mat: 3行3列の2次元配列へのポインタ
戻り値 matへのポインタ

関数名
概略
ヘッダ
書式
機能説明
引き数
戻り値

関数名 dvec_inner_product
概略 ベクトルの内積を求める
ヘッダ matrix.h
書式 double dvec_inner_product(double *v1, double *v2, int n)
機能説明 v1[0..n-1]とv2[0..n-1]の内積を求める
引き数 v1, v2: 一次元配列へのポインタn: ベクトルのサイズ
戻り値 内積値