クラス定義によるテンソルの理解

理工系の大学で学習する電磁気学や材料力学の最初に登場するテンソル
これまでに出てこない概念なので、どのようなものかイメージするのが難しい。
検索すれば、いくらでも説明が出てくるが、それでも漠然とした感じが残るかもしれない。
テンソルとは何ものか? というものをイメージできないと最初でつまづくことになる。


ここでは、「プログラミングはわかる。」という人向けに、新しい方法で説明をしてみる:-)


テンソルとは変数の型である。


空間を格子状に細かく分割したモデルがあった場合、各格子要素(Cell)に、
質量、電荷、温度、位置、加速度、速度、力、応力、ひずみという、物理的な性質を表す値を設定する必要がある。

ここで教科書に書いてあるものを、そのまま受け入れるとして、質量、電荷、温度はスカラーであり、位置、加速度、速度、力はベクトル、応力、ひずみはテンソルであるから、次のようなクラスが定義できる。

class Cell {
	Scalar 質量;
	Scalar 電荷;
	Scalar 温度;
	Vector 位置;
	Vector 加速度;
	Vector 速度;
	Vector 力;
	Tensor 応力;
	Tensor ひずみ;
}

さて3次元空間におけるScalar、VectorTensorの実態は、それぞれスカラーは1つの数値、ベクトルは3つの数値(配列)、テンソルは3x3の数値(行列=2次元配列)で表現できるので次のように定義できる。

class Cell {
	double 質量;
	double 電荷;
	double 温度;
	double 位置[3];
	double 加速度[3];
	double 速度[3];
	double 力[3];
	double 応力[3][3];
	double ひずみ[3][3];
}

何のことはない、配列で表現できるものがベクトル、2次元配列で表現できるものがテンソルである。
配列の次数を見れば、スカラーが0階のテンソル、ベクトルが1階のテンソルと呼ばれる理由もわかるし、3階のテンソルと言われれば、double[3][3][3]の型で表現される変数である、ということもイメージできるだろう。


感じる科学 (Sanctuary books)今さら聞けない科学の常識―うろおぼえを解消する102項目 (ブルーバックス)人間にとって科学とは何か (新潮選書)