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

実装

テンソルの加算分解を関数として以下のように実装する。

/* テンソルから対称成分を得る */
void WH_Tensor2D__whSym_whT_OUT_whT
(double whT_X[2][2],
 double OUT__whT_Y[2][2])
/*
  入力引数:
    whT_X はテンソル
  出力引数:
    OUT__whT_Yはテンソルで、whT_X の対称成分
*/
{
  OUT__whT_Y[0][0] = whT_X[0][0];
  OUT__whT_Y[0][1] = (whT_X[0][1] + whT_X[1][0]) / 2;

  OUT__whT_Y[1][0] = OUT__whT_Y[0][1];
  OUT__whT_Y[1][1] = whT_X[1][1];
}

/* テンソルから対称成分を、対称テンソルとして得る */
void WH_Tensor2D__whSym_whT_OUT_whST
(double whT_X[2][2],
 double OUT__whST_Y[3])
/*
  入力引数:
    whT_X はテンソル
  出力引数:
    OUT__whST_Yは対称テンソルで、whT_X の対称成分
*/
{
  OUT__whST_Y[0] = whT_X[0][0];
  OUT__whST_Y[1] = whT_X[1][1];
  OUT__whST_Y[2] = (whT_X[0][1] + whT_X[1][0]) / 2;
}

/* テンソルから反対称成分を得る */
void WH_Tensor2D__whAsym_whT_OUT_whT
(double whT_X[2][2],
 double OUT__whT_Y[2][2])
/*
  入力引数:
    whT_X はテンソル
  出力引数:
    OUT__whT_Yはテンソルで、whT_X の反対称成分
*/
{
  OUT__whT_Y[0][0] = 0;
  OUT__whT_Y[0][1] = (whT_X[0][1] - whT_X[1][0]) / 2;

  OUT__whT_Y[1][0] = -OUT__whT_Y[0][1];
  OUT__whT_Y[1][1] = 0;
}



Hiroshi KAWAI 平成15年4月19日