next up previous contents
: 解説 : ドット積、テンソル積 : ドット積、テンソル積   目次

実装

テンソルのドット積を関数として以下のように実装する。

/* テンソルのドット積 */
void WH_Tensor3D__whT_cdot_whT_OUT_whT
(double whT_X[3][3],
 double whT_Y[3][3],
 double OUT__whT_Z[3][3])
/*
  入力引数:
    whT_X, whT_Y はテンソル
  出力引数:
    OUT__whT_Zはテンソルで、whT_X と whT_Y のドット積
*/
{
  OUT__whT_Z[0][0] = whT_X[0][0] * whT_Y[0][0]
                   + whT_X[0][1] * whT_Y[1][0]
                   + whT_X[0][2] * whT_Y[2][0];
  OUT__whT_Z[0][1] = whT_X[0][0] * whT_Y[0][1]
                   + whT_X[0][1] * whT_Y[1][1]
                   + whT_X[0][2] * whT_Y[2][1];
  OUT__whT_Z[0][2] = whT_X[0][0] * whT_Y[0][2]
                   + whT_X[0][1] * whT_Y[1][2]
                   + whT_X[0][2] * whT_Y[2][2];

  OUT__whT_Z[1][0] = whT_X[1][0] * whT_Y[0][0]
                   + whT_X[1][1] * whT_Y[1][0]
                   + whT_X[1][2] * whT_Y[2][0];
  OUT__whT_Z[1][1] = whT_X[1][0] * whT_Y[0][1]
                   + whT_X[1][1] * whT_Y[1][1]
                   + whT_X[1][2] * whT_Y[2][1];
  OUT__whT_Z[1][2] = whT_X[1][0] * whT_Y[0][2]
                   + whT_X[1][1] * whT_Y[1][2]
                   + whT_X[1][2] * whT_Y[2][2];

  OUT__whT_Z[2][0] = whT_X[2][0] * whT_Y[0][0]
                   + whT_X[2][1] * whT_Y[1][0]
                   + whT_X[2][2] * whT_Y[2][0];
  OUT__whT_Z[2][1] = whT_X[2][0] * whT_Y[0][1]
                   + whT_X[2][1] * whT_Y[1][1]
                   + whT_X[2][2] * whT_Y[2][1];
  OUT__whT_Z[2][2] = whT_X[2][0] * whT_Y[0][2]
                   + whT_X[2][1] * whT_Y[1][2]
                   + whT_X[2][2] * whT_Y[2][2];
}



Hiroshi KAWAI 平成15年4月19日